Load balancing چیست؟
فناوری Load balancing یک راه حل کلیدی در جهت افزایش کارایی و سرعت در امور شبکه است. به طور کلی Load balancing یعنی توزیع پردازش و فعالیتهای ارتباطی به طور مساوی بر روی سروهای اصلی شبکههای کامپیوتری به صورتی که بر روی هیچ سرور واحدی بار پردازشی بیش از حد مجاز یا ناهماهنگ با سایر سرورها اعمال نگردد بدین صورت از اعمال فشار پردازش بر روی یک سرور جلوگیری میشود.
به صورت کلی Load balancing برای سرورهایی اهمیت دارد که در مورد آنها پیشبینی تعداد درخواستهای ارسالی به سرور دشوار میباشد. سایتهایی با بازدیدهای بالا و سایتهای دانشگاهی که نیازمند ثبت نام تعداد زیادی کاربر به صورت هم زمان میباشند از این جمله به شمار میآیند.
اکثر وب سایتهای پر بازدید و معتبر به طور معمول از دو یا چند سرویس دهنده وب (Web Server) به صورت موازی جهت انجام عملیات Load Balancing استفاده مینمایند، بدین صورت که اگر میزان استفاده از منابع یک سرور بیش از حد استاندارد تعیین شده باشد، به طوری که ادامه این فعالیت باعث Down شدن و از دسترس خارج گردیدن سرور شود، درخواستها به سرور دیگری که دارای ظرفیت تحمل بار بیشتری است ارجاع میشود.
عملکرد Load Balancing:
به طور کلی Load Balancer بین یک Client و Host قرار میگیرد.
هنگامیکه یک Host با اختلال مواجه شده و یا Fail شود، سرویس load balancer این مشکل را شناسایی کرده و سریعا درخواستهایClient های مربوط به آن Host خارج از دسترس را به سمت Hostهای سالم راهنمایی و یا در واقع Route میکند. باید در نظر داشت که این پروسه به صورت اتوماتیک انجام میشود، بدین طریق که تمامی Connectionهای مربوط به Host مختل، قطع شده و در ادامه کار آن Clientها به Host سالم ارتباط داده میشوند. این پروسه بدون اينكه كاربر متوجه این اختلال گردد، رخ میدهد. بنابراين در مجموع در دسترس بودن سرویس نسبت به حالتي كه يك سرور تنها به درخواستها پاسخ ميدهد، به حداکثر رسیده و نهایتا قطعی سرورها به حداقل میرسد.
تمامی پروسه شناسایی هاست مختل شده تا مسیر دهی مجدد و ایجاد ارتباط با Host سالم در کمتر از 10 ثانیه رخ میدهد، از این رو کاربر به هیچ عنوان با قطعی سرویس ناشی از Down بودن یک سرور مواجه نخواهد شد.
الگوریتم های Load Balancing:
الگوریتم های Load Balancing، براساس معیارهای مختلفی تعیین میشوند که در آنها ارجهیت هر کدام از سرورها در پاسخگویی به درخواستهای Clientها مشخص خواهد شد. هدف اين الگوريتمها توزيع هوشمندانه پردازش و يا بيشينه كردن در دسترس بودن تمامي سرورها ميباشد.
انواع الگوریتم های Load Balancing عبارتند از:
- Round-robin:
این الگوریتم مستقل از تعداد Connectionهای فعال و مدت زمان پاسخ دهی آنها پردازش را بین سرورها به صورت مساوی تقسیم میکند. این الگوریتم زمانی مناسب است که توان پردازش سرورها یکسان باشد، زیرا در غیر اینصورت بعضی سرورها ممکن است بیشتر از ظرفیت خود ارسال درخواست داشته باشند، در حالیکه سرورهای قویتر فقط بخشی از منابع و امکانات خود را استفاده نمایند.
- Weighted round robin:
این الگوریتم توان پردازشی هر سرور را در نظر میگیرد، بدین صورت که مدیر شبکه، به صورت دستی به هر سرور یک وزن عملیاتی را اختصاص میدهد، سپس یک تواتر زمانبندی شده به صورت خودکار و بر طبق وزن هر سرور ایجاد میگردد و پس از آن درخواستها به سوی هر سرور بر طبق زمانبندی آن ارسال خواهد شد.
- Least-Connection:
زمانی که الگوریتم "حداقل- اتصال" به Load Balancer اعمال میشود، درخواستهای جدید به سرور موجود با کمترین اتصال فعال در میان سرورها ارسال میگردد.
- Load-based:
در الگوریتم Load-based، درخواستها بر اساس اینکه کدامیک از سرورها دارای حداقل بار پردازشی میباشند، ارسال میشوند.
نتیجه گیری:
به طور کلی فرایند Load Balancing، این امکان را فراهم میآورد که به طور چشمگیری اختلالات پردازشی سرورها مرتفع شده و قطعی و عدم دسترسی به سرویس قابل ارائه آنها به حداقل برسد.
لازم به ذکر است که راهاندازی سرویس Load Balancing هم به صورت نرم افزاری و هم سخت افزاری قابل پیاده سازی میباشد.