تحلیل توزیع استخر لود بالانس

شبیه‌سازی کنید که الگوریتم‌های مختلف بالان‌سازی بار چگونه ترافیک را بین اعضای استخر توزیع می‌کنند. سناریوهای شکست را مدل‌سازی کرده و کارایی توزیع مجدد را مقایسه کنید.

حجم ترافیک
اعضای استخر
شبیه‌سازی سناریوی خطا
نحوه کارکرد: آدرس‌های IP کلاینت از یک زیرشبکه /16 (10.0.0.0/16) نمونه‌برداری می‌شوند. برای هش‌سازی مبتنی بر منبع، هر آدرس IP کلاینت منحصر به فرد به طور قطعی به یک عضو نگاشت می‌شود. راند رابین نادیده آوری IP کلاینت و توزیع متوالی را انجام می‌دهد. وزن‌دار از تخصیص تصادفی متناسب استفاده می‌کند. هش‌منش مستقل هم کلاینت‌ها و هم اعضا را روی یک حلقه مجازی قرار می‌دهد.

اعضای استخر

شناسه IP:Port وزن وضعیت عملیات

نتایج توزیع

توزیع سشن‌ها بر اساس عضو

تحلیل بازتوزیع پس از شکست

حلقه هش‌منش مستقل

نحوه خواندن حلقه: هر عضو در نقاط متعددی در اطراف حلقه (نودهای مجازی) قرار می‌گیرد. یک آدرس IP کلاینت به یک موقعیت روی حلقه هش می‌شود، سپس درخواست به نزدیک‌ترین عضو در جهت عقربه‌های ساعت ارسال می‌شود. اضافه یا حذف یک عضو فقط بر قوس حلقه‌ای که متعلق به آن بود تأثیر می‌گذارد و در نتیجه اختلال سشن‌ها به حداقل می‌رسد.

مرجع الگوریتم‌ها

راند رابین
سشن‌ها به صورت متوالی تخصیص می‌یابند: عضو ۱، ۲، ۳، ...، N، ۱، ۲، ... هر عضو دقیقاً ۱/N از تمام درخواست‌ها را دریافت می‌کند. ظرفیت سرور و ارتباط کلاینت را نادیده می‌گیرد. ساده و قابل پیش‌بینی است اما در سخت‌افزارهای غیرهمگن با مشکل مواجه می‌شود.
هش منبع IP
یک هش از IP کلاینت پیمانه تعداد اعضا، بک‌اند را انتخاب می‌کند. یک کلاینت همیشه به یک عضو خاص متصل می‌شود — مفید برای برنامه‌های دارای حالت (stateful). اضافه یا حذف یک عضو، نگاشت تمام پیوند‌های کلاینت را تغییر می‌دهد (تغییر از N به (N-1)/N از کل سشن‌ها).
وزن‌دار
هر عضو سهمی متناسب با وزنش نسبت به کل وزن استخر دریافت می‌کند. عضوی با وزن=۴، ۴ برابر سشن‌های عضوی با وزن=۱ دریافت می‌کند. برای مدل‌سازی ظرفیت بک‌اند غیرهمگن استفاده می‌شود (مثلاً یک VM در مقابل یک سرور Bare-metal).
هش‌منش مستقل
اعضا و کلاینت‌ها هر دو از طریق هش‌سازی روی یک حلقه دایره‌ای نگاشت می‌شوند. هر کلاینت به نزدیک‌ترین عضو در جهت عقربه‌های ساعت روی حلقه می‌رود. نودهای مجازی (تکثیرات برای هر عضو) یکنواختی توزیع را بهبود می‌بخشند. هنگامی که یک عضو از کار می‌افتد، فقط سشن‌های آن به عضو بعدی روی حلقه منتقل می‌شوند — به جای ۱۰۰% برای هش پیمانه‌ای، فقط ۱/N سشن دچار اختلال می‌شوند.