Load Balancer ها بهطور هوشمند تعیین میکنند که کدام دستگاه در یک مزرعه سرور معین بهترین توانایی را برای پردازش یک بسته داده دریافتی دارد. انجام این کار مستلزم الگوریتم هایی است که برای توزیع بارها به روشی خاص برنامه ریزی شده اند.
الگوریتم ها به طور گسترده ای متفاوت هستند، بسته به اینکه آیا یک بار در شبکه یا لایه اپلیکیشن توزیع شده است. انتخاب الگوریتم بر اثربخشی مکانیسمهای توزیع بار و در نتیجه عملکرد و تداوم کسبوکار تأثیر میگذارد.
در اینجا ما مزایا و معایب چندین الگوریتم پرکاربرد موجود در راه حل های متعادل کننده بار لایه شبکه و اپلیکیشن را مورد بحث قرار خواهیم داد.
مقایسه الگوریتم های لایه Network و Application
الگوریتم های لایه شبکه و لایه اپلیکیشن در نحوه تجزیه و تحلیل ترافیک ورودی و معیارهایی که برای توزیع بار ترافیک استفاده می کنند، متفاوت هستند.
Network layer algorithms | Application layer algorithms | |
Distribution logic | Statistical/randomized | Data driven |
Suitable infrastructure types | Symmetrical/even | All types |
Server load visibility | No | Yes |
Session persistence | Yes | Yes |
Unpredictable load handling | No | Yes |
الگوریتم های لایه Network
چالش اصلی برای Load Balancer لایه شبکه، عدم مشاهده جریان ترافیک است که محدود به اطلاعات ذخیره شده در هدرهای بسته های شبکه است. تصمیمات مسیریابی فقط باید بر اساس چند عامل باشد – در درجه اول داده های IP مبدا و مقصد.
Load Balancer لایه شبکه نمی تواند ماهیت درخواست های دریافتی، تولید بار مورد انتظار آنها و منابع سرور موجود را در یک زمان معین ارزیابی کند. مقدار مشخصی از حدس زدن برای آنها لازم است تا تصمیمات مسیریابی را بگیرند.
نمونه هایی از الگوریتم های لایه شبکه عبارتند از:
Round robin
دسته ای از سرورها طوری برنامه ریزی شده اند که بار را به صورت متوالی چرخشی مدیریت کنند. این الگوریتم فرض میکند که هر دستگاه قادر به پردازش تعداد یکسانی از درخواستها است و قادر به حساب کردن اتصالات فعال نیست.
Weighted round robin
سرورها بر اساس میزان نسبی درخواست هایی که هر کدام قادر به پردازش هستند رتبه بندی می شوند. برای کسانی که ظرفیت بالاتری دارند درخواست های بیشتری ارسال می شود.
Least connections
درخواستها به سروری ارسال میشوند که کمترین تعداد اتصال فعال را دارد، با این فرض که همه اتصالها مقدار مساوی بار سرور ایجاد میکنند.
Weighted least connections
سرورها بر اساس قابلیت های پردازشی آنها رتبه بندی می شوند. بار بر اساس ظرفیت نسبی سرورها و تعداد اتصالات فعال در هر یک توزیع می شود.
Source IP hash
آدرس IP مبدا و مقصد را در یک درخواست برای ایجاد یک کلید هش ترکیب می کند، که سپس به یک سرور خاص تعیین می شود. این اجازه می دهد تا یک اتصال قطع شده به همان سروری که در ابتدا آن را مدیریت می کرد، برگرداند.
در حالی که این الگوریتم ها در سناریوهای قابل پیش بینی ترافیک کافی هستند ، اما در برخورد با بارهای سرور ناهموار/غیر منتظره مؤثر نیستند.
الگوریتم های لایه اپلیکیشن
Load balancerهای لایه اپلیکیشن درخواست ها را بر اساس محتوای درخواست های در حال پردازش، از جمله هدر HTTP/S و پیام آن علاوه بر کوکی های جلسه، توزیع می کنند. آنها همچنین می توانند پاسخ ها را در حین بازگشت از سرور ردیابی کنند، در نتیجه داده هایی را در مورد باری که هر سرور در حال پردازش است در هر زمان ارائه می دهد.
برخلاف ماهیت گمانهزنی متعادلسازی بار شبکه، متعادلسازی بار برنامه مبتنی بر داده است. این امر توزیع هوشمند درخواست های دریافتی را فراهم می کند.
قابل توجه ترین الگوریتم لایه اپلیکیشن کمترین درخواست های معلق (LPR) است. درخواستهای HTTP/S معلق را رصد میکند و آنها را به در دسترسترین سرور توزیع میکند. LPR می تواند فوراً با هجوم ناگهانی اتصالات جدید سازگار شود در حالی که به طور مداوم بر حجم کاری همه سرورها در یک مزرعه سرور نظارت می کند.
مزایای LPR عبارتند از:
توزیع بار دقیق – برخلاف الگوریتمهای لایه شبکه که درخواستها را طبق قوانین از پیش تعیینشده توزیع میکنند، LPR بهطور هوشمند سروری را انتخاب میکند که برای پردازش اتصال ورودی در زمان واقعی مناسبتر است.
درخواست توزیع خاص – LPR میتواند تصدیق کند که درخواستهای اتصال زمانهای پردازش متفاوتی را میطلبد و بر این اساس بار را توزیع میکند. در نتیجه، ترافیک به سمت سرورهای شلوغ هدایت نمی شود.
انتخاب الگوریتم Load Balancer مناسب
در انتخاب یک الگوریتم load balancer ملاحظات زیادی وجود دارد. به طور خاص، انتخاب شما باید بتواند هم سناریوهای قابل پیشبینی (مانند جریانهای ترافیک معمولی) و هم سناریوهای غیرقابل پیشبینی (مثلاً هجوم ناگهانی درخواست که بار سنگینی ایجاد میکند) را مدیریت کند.
سناریوهای غیرقابل پیش بینی، که الگوریتم های لایه شبکه قادر به مدیریت آنها نیستند، برای اپراتورهای سایت بسیار نگران کننده هستند. بهعلاوه، تأخیرهای مربوط به TTL، تعادل بار شبکه را راهحلی کمتر از بهینه میسازد.
از سوی دیگر، الگوریتم های لایه اپلیکیشن ، به حفظ عملکرد بهینه وب سایت در هر دو سناریوهای قابل پیش بینی و غیرقابل پیش بینی کمک می کنند.