Load Balancer یا متعادل کننده بار سرور، دستگاه یا نرم افزاری است که ترافیک شبکه ورودی را بین چندین سرور توزیع میکند تا اطمینان حاصل شود که فشار بیش از اندازهای به هیچ سروری وارد نمیشود. بنابراین عملکرد کلی، در دسترس بودن و مقیاس پذیری برنامههای کاربردی وب را بهبود میبخشد. Load Balancer برای برنامههای کاربردی وب مدرن که نیاز به دسترسی بالا و توانایی مدیریت حجم زیادی از ترافیک دارند ضروری است.
عملکرد اصلی یک Load Balancer توزیع یکنواخت درخواست های دریافتی بین چندین سرور برای جلوگیری از بارگذاری بیش از حد فشار بر روی یک سرور است.
در واقع Load Balancer عملیات توزیع ترافیک ورودی در چندین سرور مختلف را انجام میدهد که اغلب به عنوان مزرعه سرور یا استخر سرور از آن یاد می شود. Load Balancer بین سرویس گیرنده و مزرعه سرور قرار میگیرد و درخواستهای دریافتی را به سروری که کمترین بار را بر دوش خود دارد، ارسال می کند.
انواع Load Balancer ها
انواع مختلفی از Load Balancer وجود دارد، از جمله مبتنی بر سخت افزار، مبتنی بر نرم افزار و مبتنی بر ابر. Load Balancer های مبتنی بر سخت افزار دستگاه های فیزیکی هستند که در محل نصب می شوند، در حالی که Load Balancer های مبتنی بر نرم افزار ماشینهای مجازی هستند که روی سرورها اجرا می شوند. Load Balancer های مبتنی بر ابر به عنوان یک سرویس توسط ارائه دهندگان ابری، مانند خدمات وب آمازون (AWS) و Microsoft Azure ارائه می شوند.
الگوریتم های Load Balancer
Load Balancer را می توان به گونه ای پیکربندی کرد که از الگوریتم های مختلفی برای توزیع ترافیک بین سرورها استفاده کند، از جمله round-robin، least connections، IP hash، و weighted round-robin. Round-robin
ساده ترین الگوریتم Round-robin است که در آن درخواست ها به طور یکنواخت بین سرورها به ترتیب توزیع می شوند. الگوریتم least connections درخواست ها را با کمترین تعداد اتصال فعال به سرور ارسال می کند، در حالی که الگوریتم IP hash ترافیک را بر اساس آدرس IP مشتری توزیع می کند. الگوریتم weighted round-robin شبیه Round-robin است، اما بر اساس ظرفیت هر سرور، وزنی را به آن اختصاص میدهد و اطمینان میدهد که ترافیک بیشتری به سرورهایی با ظرفیت بالاتر ارسال میشود.
پیکربندی Load Balancer
Load Balancer ها می توانند در لایههای مختلف شبکه مانند لایه کاربردی، لایه انتقال یا لایه شبکه پیاده سازی شوند. Load Balancer ها در سطح برنامه برای توزیع ترافیک بر اساس محتوای درخواست، مانند URL، HTTP Header یا کوکیها طراحی شدهاند. از سوی دیگر، Load Balancer های سطح Transport، ترافیک را بر اساس ویژگی های اتصال شبکه، مانند آدرس IP مبدا، آدرس IP مقصد یا شماره پورت توزیع می کنند.
بررسی سلامت سرور با Load Balancer
Load Balancer همچنین بررسی های سلامتی را روی سرورها انجام می دهد تا اطمینان حاصل شود که فقط از سرورهای سالم برای مدیریت ترافیک استفاده می شود. بررسی های سلامت را می توان برای نظارت بر عملکرد سرور، مانند استفاده از CPU، استفاده از حافظه، و زمان پاسخ سرور، پیکربندی کرد. اگر سروری در بررسی سلامت ناموفق باشد، از مجموعه سرورهای موجود حذف میشود و ترافیک به سرورهای سالم دیگر هدایت میشود.
Load Balancer همچنین می تواند این خدمات را ارائه دهد:
SSL termination
SSL termination فرآیند رمزگشایی ترافیک HTTPS در Load Balancer و ارسال آن به عنوان ترافیک HTTP ساده به مزرعه سرور میباشد.
کش کردن اطلاعات
Cache کردن محتوا فرآیند ذخیره محتوایی است که به میزان بالایی استفاده می شود و Load Balancer با ذخیره این اطلاعات در جاهایی که بتوان سریعتر به آنها دسترسی داشت، کمک به بالا رفتن سرعت و همچنین بهینه سازی در فراخوانی اطلاعات مینماید.
فشرده سازی داده
همچنین در فشرده سازی ما به دنبال ایجاد فرآیند فشردهسازی دادهها، قبل از ارسال آن به مشتری هستیم که میتواند میزان داده ارسال شده از طریق شبکه را کاهش دهد و عملکرد را بهبود بخشد.
نتیجه گیری
به طور خلاصه، Load Balancer یک جزء حیاتی از برنامههای کاربردی وب مدرن است که به بهبود عملکرد، در دسترس بودن و مقیاس پذیری کمک میکند. متعادل کننده بار ترافیک ورودی شبکه را در چندین سرور توزیع میکند و با استفاده از الگوریتمهای مختلف تعیین میکند که درخواست به کدام سرور ارسال شود. متعادل کننده بار همچنین می تواند خدمات دیگری مانند SSL termination، Cache کردن اطلاعات و فشرده سازی دادهها را ارائه دهد.