سلام رفقا،
شرایطی را در نظر بگیرید، که وبسایتی داریم و درحال محبوبیت هست، ترافیک سایت هم افزایش پیدا میکنه و بار روی تک سرور ما افزایش پیدا میکنه و سایت برای کاربران ما کند می شود. برای برآوردن درخواستهای این حجم بالای داده و بهبود پاسخ صحیح به صورت سریع و قابل اعتماد، نیاز به scale سرور داریم. این کار را می توانیم با افزایش سرورهای بیشتر به شبکه و توزیع ریکوست ها بین این سرورها، انجام بدیم.
اما... چه کسی تصمیم میگیره که کدام ریکوست به کدام سروره بره...؟!
بله... درست حدس زدید، پاسخ لود بالانسر هست!
لود بالانسر به عنوان پلیس ترافیک عمل میکنه و مقابل سرورهای ما میشینه و ریکوست های دریافتی از سمت مشتری را بین سرورهای تعریف شده، توزیع میکنه و تضمین میکنه که هیچ سروری بیش از حد کار نکنه که باعث کاهش عملکرد سیستم ما شود.
در تصویر زیر(1-1) نحوه کار لود بالانسر را می بینید:
در تصویر بالا (1-1) ، کاربران از طریق ip عمومی به طور مستقیم به لود بالانسر ما وصل میشن. در این سیستم سرورهای ما بصورت مستقیم توسط مشتری غیر قابل دسترسی هستند و از ip خصوصی برای ارتباط سرورها با همدیگر استفاده می شود. ip های خصوصی فقط بین سرورهای یک شبکه داخلی در دسترس هست و از طریق اینترنت غیرقابل دسترسی هست. لود بالانسر از طریق ip خصوصی با سرورهای ما ارتباط برقرار می کند.
الگوریتم های مختلف load baancer مزایای مختلفی دارند. انتخاب روش توزیع بار بستگی به نیاز شما دارد:
1- Round Robin
در الگوریتم Round Robin، درخواستها به صورت مرتب به ترتیب روی سرورهای مختلف توزیع میشوند. به عبارت دیگر، هر درخواست به یک سرور ارسال میشود و سپس درخواست بعدی به سرور بعدی در لیست توزیع میشود. وقتی که به آخرین سرور در لیست رسید، توزیع دوباره از ابتدا آغاز میشود. این روند تکرار میشود و درخواستها به صورت یک دوره (cycle) توزیع میشوند.
2- Least Connections
در الگوریتم Least Connections، برای هر سرور، تعداد ارتباطات فعلی با کلاینتها بررسی میشود. سپس درخواست جدید به آن سرور ارسال میشود که کمترین تعداد ارتباط فعلی را دارد. به عبارت دیگر، درخواست به سروری ارسال میشود که کمترین بار فعلی را دارد.
3 - Weighted Round Robin (WRR)
در الگوریتم WRR، هر سرور با یک وزن مشخص میشود. وزن بیانگر نسبت توزیع بار است که برای هر سرور تعیین میشود. به عنوان مثال، اگر دو سرور با وزنهای ۲ و ۳ داشته باشیم، به ازای هر دو بار از سرور اول، سه بار از سرور دوم توزیع میشود.
4 - IP Hash
در الگوریتم IP Hash، برای هر درخواست از یک کلاینت، آدرس IP کلاینت به یک تابع هش میدهد. نتیجه هش، به عنوان شاخص توزیع، مورد استفاده قرار میگیرد. بر اساس این شاخص، درخواست به یکی از منابع موجود در سیستم توزیع میشود. به عبارت دیگر، کلاینتهایی که آدرس IP یکسانی دارند، همیشه به یک منبع خاص توزیع میشوند.
5 - Least Time
در الگوریتم Least Time، زمان پاسخ دهی به درخواستها اندازهگیری میشود. هر منبع یا سرویس به طور مداوم بررسی میشود و زمان پاسخ دهی فعلی آن محاسبه میشود. سپس درخواست جدید به منبع با کمترین زمان پاسخ دهی ارسال میشود. به عبارت دیگر، درخواست به منبعی ارسال میشود که زمان پاسخ دهی کمتری نسبت به منابع دیگر دارد.
5 تا از الگوریتم های اصلی توزیع بار را تو این مقاله توضیح دادم و بستگی به نیازتون میتونید از الگوریتم های دیگه هم استفاده کنید.
امیدوارم این مطلب براتون مفید بوده باشه و اگه حمایت کنید هر هفته یک مطلب در مورد سیستم دیزاین میزارم، موفق باشید.
References: