لود بالانسینگ (Load Balancing) چیست؟ + انواع و مزایا
در این مقاله میخوانید
لود بالانسینگ چیست؟ فرض کنید هنگام رانندگی در یک بزرگراه پر از ماشین هستید. تمام ماشینها اجازه دارند فقط از یک لاین عبور کنند. در این شرایط، تمام بزرگراه قفل شده و ترافیک شدیدی اتفاق میافتد. اینجاست که مدیریت ترافیک با راهکاری به نام توزیع ترافیک وارد عمل میشود. این راهکار مثل یک راهباز کن قهار، امکان عبور از سایر لاینهای بزرگراه را فراهم میکند. توزیع ترافیک در دنیای وب به لود بالانسینگ معروف است. در این مقاله از آموزش شبکه بلاگ پارس پک، به بررسی جامع مفهوم لود بالانسینگ، کاربرد و نحوه کار آن خواهیم پرداخت.
لود بالانسینگ چیست؟
لود بالانسینگ (Load Balancing) یا متعادلکردن بار به به توزیع یکسان بار یا ترافیک ورودی در یک شبکه بین گروهی از سرورها اشاره دارد. این تکنولوژی یک راهکار کاربردی در دنیای وب است که با افزایش ترافیک، درخواستهای کاربران را میان سرورهای مختلف تقسیم میکند و زمان پاسخ سرور را کاهش میدهد تا تجربه کاربری بهتری برای کاربر رقم زند.
برای مثال به جای اینکه در صفهای طولانی پشت یک صندوق فروشگاه منتظر بمانید، چندین صندوق فعال بوده و خریداران پای صندوقها تقسیم شوند. کاری که در دنیای وب، به متعادلسازی بار معروف است. شبکههای تحویل محتوا (CDN) از قابلیت لود بالانسینگ برای توزیع ترافیک سرور استفاده میکنند.
کاربرد لود بالانسینگ چیست؟
توزیع بار (Load Balancing) در دنیای وبسایتها و برنامههای آنلاین، کاربرد ویژهای دارد. انجام لود بالانسینگ نرمافزاری و سختافزاری به توزیع یکنواخت ترافیک اینترنت میان سرورهای میزبان کمک میکند. توزیع بار فقط در اینترنت کاربرد ندارد. در شبکههای داخلی بزرگ، مثل دیتاسنترها یا شبکه سازمانها نیز از توزیع بار و سرور لود بالانسر استفاده میشود. در گذشته، برای این کار از سختافزارهای خاص مانند «کنترلکننده تحویل برنامه» (ADC) یا یک دستگاه توزیع بار اختصاصی استفاده میکردند. امروزه نرمافزارهای توزیع بار کار را راحت کرده است.
نحوه کار لود بالانسینگ چگونه است؟
اکنون که فهمیدیم منظور از Load Balancing چیست؟ سراغ نحوه کار آن میرویم. در دنیای اینترنت، درخواستهای کاربران مانند بازدید از سایت به سرور ارسال میشود. وقتی میزان ترافیک سرور و تعداد درخواست افزایش پیدا میکند، ترافیک بین چند سرور تقسیم میشود. این کار با ابزاری به نام توزیعکننده بار (Load balancer) فایل انجام است.
در پاسخ به این سوال که لود بالانسر چیست؟ میتوان گفت که یک ابزار متعادلکننده بار است. هروقت کاربر درخواستی را ارسال میکند، توزیعکننده یا همان لود بالانسر درخواست را به یکی از سرورها ارسال میکند. اینکه لودبالانسر چطور تصمیم میگیرد هر درخواست را به کدام سرور ارسال کند، بستگی به الگوریتم استفاده شده در لود بالانسینگ سرور دارد.
انواع لود بالانسینگ چیست؟
اگر بخواهیم از نظر تکنولوژی بررسی کنیم، انواع Load Balancing را میتوان به دو دسته سختافزاری و نرمافزاری تقسیم کرد. لود بالانسینگ سختافزاری به یک دستگاه مخصوص نیاز دارد. درحالیکه لود بالانسینگ نرمافزاری بهراحتی روی سرور، ماشین مجازی یا در فضای ابری قابل پیادهسازی است. وقتی صحبت از نوع لود بالانسینگ به میان میآید، به چهار مدل اصلی برای توزیع بار میتوان اشاره کرد:
۱. توزیع بار براساس برنامه (Application load balancing)
اپلیکیشنهای امروزی از سرورهای مختلفی برخوردار هستند که هر کدام وظیفه خاصی را انجام میدهند. توزیعکننده بار اپلیکیشن به محتوای درخواستی مثل هدرهای HTTP یا آیدی سشنهای SSL توجه کرده و طبق آن ترافیک را هدایت میکند.
برای مثال، یک فروشگاه اینترنتی بخشهای مختلفی مانند نمایش محصولات، سبد خرید و درگاه پرداخت دارد. توزیعکننده بار اپلیکیشن درخواستهای مربوط به دیدن محصولات را به سرورهای مشخصی میفرستد که حاوی عکس و فیلمهای محصولات بوده و نیازی به نگهداشتن اتصال طولانی ندارد. اما درخواستهای مربوط به سبد خرید را به سرورهایی میفرستد که قادر است اتصالات بسیار را مدیریت کند و اطلاعات سبد خرید را برای مدت طولانی نگه دارد.
۲. توزیع بار براساس شبکه (Network load balancing)
این مدل، آدرسهای IP و سایر اطلاعات شبکه را بررسی میکند تا ترافیک را بهطور بهینه هدایت کند. توزیعکننده بار شبکه، منشأ ترافیک برنامه را ردیابی کرده و میتواند یک آدرس IP ثابت را به چندین سرور اختصاص دهد.
۳. توزیع بار سرورهای جهانی (Global server load balancing)
این مدل برای سرورهایی استفاده میشود که بهصورت پراکنده در دنیا قرار دارند. برای مثال، یک شرکت ممکن است سرورهای خود را در چند دیتاسنتر مختلف، در کشورهای گوناگون و از ارائهدهندههای ابری در سراسر جهان تهیه کرده باشد. در این حالت، لودبالانسرهای محلی، ترافیک را در یک منطقه یا ناحیه مدیریت میکنند. این توزیعکنندهها سعی میکنند ترافیک را به سروری هدایت کنند که از نظر جغرافیایی به کاربر نزدیکتر است.
۴. توزیع بار با استفاده از DNS (DNS load balancing)
در این مدل، دامنه را برای هدایت درخواستهای شبکه میان چندین منبع تنظیم میکنید. یک دامنه ممکن است مربوط به یک وبسایت، سیستم ایمیل، سرور چاپ یا هر سرویس اینترنتی دیگری باشد. توزیع بار با DNS برای حفظ در دسترس بودن برنامه و توزیع ترافیک شبکه بین مجموعهای از منابع توزیع جهانی بسیار کاربردی خواهد بود.
اگر میخواهید بدانید Nat چیست و چه کمکی به مدیریت آدرسهای IP میکند، مقاله زیر را از دست ندهید.
الگوریتمهای لود بالانسینگ چیست؟
الگوریتم تعادل بار به دو دسته اصلی پویا و استاتیک تقسیم میشوند.
۱. الگوریتم لود بالانسینگ استاتیک (Static Load Balancing)
در همان مثال بزرگراه و ترافیکی که در ابتدای مقاله اشاره کردیم، فرض کنید پلیسی وظیفه هدایت ماشینها به لاینهای دیگر بزرگراه را برعهده دارد. بدون اینکه حواسش باشد کدام لاین خلوتتر و کدام یک شلوغتر است. تا زمانی که ماشینها در هر لاین با سرعت مشابه حرکت کنند، مشکلی پیش نمیاد.
مشکل آن جایی شروع میشود که در یک لاین، تصادف یا حادثهای رخ دهد و یک ترافیک طولانی اتفاق بیفتد. توزیع بار ایستا به همین ترتیب است. یعنی کار را راه میاندازد اما ممکن است برخی سرورها بیش از حد شلوغ شوند. بهعبارتی، در برخی لاینها شاهد ماشینهای بیشتر و درنتیجه ترافیک بالاتر باشیم.
۲. الگوریتم لود بالانسینگ داینامیک (Dynamic Load Balancing)
در این الگوریتم پلیس مذکور مثال ما، اختیارات و مهارت بالاتری در کنترل ترافیک دارد. او حواسش به هر لاین است و باتوجه به اطلاعات و مقصد هر ماشین، آنها را به لاینهای خلوتتر هدایت میکند.
لودبالانسر داینامیک با شناسایی سرورهای شلوغ، ترافیک را به سرورهای خلوتتر میفرستد و به شکل بهینهتری بار ترافیک بین سرورها را متعادل میکند. البته این روش پیچیدهتر بوده و نیاز است فاکتورهای مختلفی مثل ظرفیت، وضعیت و وظایف هر سرور را درنظر گرفت.
بهترین روش های لود بالانسینگ چیست؟
اکنون که با الگوریتم لود بالانسینگ آشنا شدید، نوبت بررسی روشهای هر یک از الگوریتمها رسیده است. انتخاب بهترین روش لود بالانسینگ به نوع نیاز شما بستگی دارد. در توزیع بار استاتیک شاهد روشهای زیر هستیم:
۱. توزیع بار براساس هش IP
با استفاده از اطلاعاتی مثل آدرس IP کاربر، سرور مناسب برای کاربر انتخاب میشود. این روش برای برنامههایی مفید است که به اطلاعات ذخیره شده هر کاربر (مثل سبد خرید در فروشگاههای آنلاین) وابسته است.
۲. توزیع بار بهصورت گردشی (Round Robin)
ترافیک بهطور مساوی بین همه سرورهای موجود توزیع میشود. هر سرور به نوبت درخواست یک کاربر را تحویل میگیرد.
۳. توزیع بار گردشی وزنی (Weighted Round Robin)
با این روش به هر سرور یک وزن مشخص اختصاص داده میشود. به این ترتیب، سرورهایی که توانایی پردازش بیشتری دارند، ترافیک بیشتری نیز دریافت میکنند.
توزیع بار داینامیک نیز از روشهای زیر برخوردار است:
۴. توزیع بار براساس کمترین ارتباط (Least Connections)
در این روش، کاربر به سروری وصل میشود که در آن لحظه کمترین تعداد ارتباط با آن برقرار است. در این روش، فرض بر این است که همه ارتباطات تقریبا به یک اندازه نیازمند پردازش هستند.
۵. توزیع بار براساس کمترین ارتباط وزنی (Weighted Least Connections)
این روش شبیه حالت قبلی است. با این تفاوت که میتوان به هر سرور وزن خاصی داد تا سرورهای قویتر ترافیک بیشتری را هندل کنند.
همه چیز درباره انواع و راهکارهای کاهش پینگ را در مقاله زیر بخوانید.
۶. توزیع بار براساس زمان پاسخ (Weighted Response Time)
در این روش با درنظر گرفتن میانگین زمان پاسخ هر سرور و تعداد ارتباطات آن، بهترین سرور برای هدایت کاربر انتخاب میشود. این روش باعث میشود کاربر به سروری وصل شود که سرعت پاسخگویی بالاتری دارد.
۷. توزیع بار براساس منابع (Resource-Based)
در این روش قبل از توزیع ترافیک، میزان منابع در دسترس هر سرور بررسی میشود. اطلاعاتی مثل فضای خالی حافظه (RAM) و قدرت پردازش (CPU) هر سرور برای توزیع بهینه ترافیک تحت بررسی قرار میگیرد.
مزایای لود بالانسینگ چیست؟
استفاده از لود بالانسینگ مزایای زیادی دارد که مهمترین ویژگیهای این تکنولوژی را در جدول زیر آوردهایم:
ویژگی | توضیح |
مقیاسپذیری | ارتقای زیرساخت سرور براساس نیازهای شبکه بدون تاثیر بر سرویسها |
کارایی | بهبود جریان ترافیک شبکه و زمان پاسخگویی |
کاهش Downtime | هدایت ترافیک به توزیعکنندههای دیگر در زمان نگهداری سرور بدون ایجاد قطعی |
تحلیل پیشبینیکننده | شناسایی زودهنگام خرابیها و مدیریت آنها |
مدیریت کارآمد خرابیها | هدایت خودکار ترافیک به منابع سالم درصورت خرابی |
امنیت | افزایش امنیت شبکه با اضافه کردن یک لایه امنیتی |
جدول بالا به معنای نبودن معایب لود بالانسینگ نیست. انصافانه است اگر بگوییم اصلیترین چالش های لود بالانسینگ مربوط به پیچیدگی مدیریت و پیکربندی لودبالانسرها است؛ بنابراین کفه سنگین مزایای لود بالانسینگ نسبت به معایب آن، حکایت از کاربردی بودن این فناوری دارد.
با CDN پارس پک به اوج سرعت سایت برسید
سرعت کند بارگذاری سایت هر کاربر صبوری را بیطاقت میکند. CDN پارس پک با برخورداری از فناوری لود بالانسینگ و توزیع ترافیک بین چند سرور از فشار بیش از حد به یک سرور جلوگیری کرده و سرعت و پایداری وبسایت را افزایش میدهد. برای آشنایی بیشتر با این سرویس، میتوانید به صفحه CDN پارس پک مراجعه کنید.
جمعبندی
لود بالانسینگ چیست؟ در دنیای سرورها میتوان گفت لود بالانسینگ حکم دکتر تغذیه برای سرورها را دارد که مشخص میکند چه زمانی چه میزان ترافیک به خورد هر سرور رود. در این مقاله، بهطور کامل بررسی کردیم Load balancer چیست؟ چه کاربرد و مزایایی دارد. اگر سوالی در این زمینه دارید، مشتاق پاسخگویی به شما خواننده عزیز هستیم. سوالاتتان را میتوانید در انتهای همین مقاله بنویسید تا راهنماییتان کنیم.
سوالات متداول
۱. لود بالانسینگ چیست؟
لود بالانسینگ (Load Balancing) تکنولوژی برای توزیع ترافیک بین چندین سرور بوده و هدف از آن افزایش کارایی، پایداری و امنیت وبسایت، اپلیکیشن و سرور است.
۲. آیا کوبرنتیز یک لود بالانسر است؟
سرویسهای کوبرنتیز ابتداییترین شکل توزیع بار ترافیک هستند. در واقع، میتوانید از سرویسهای کوبرنتیز به عنوان یه لود بالانسر ساده برای توزیع ترافیک بین چندین Pod استفاده کنید. کوبرنتیز از دو روش برای توزیع بار ساده استفاده میکند:
- Round Robin: ترافیک بهطور مساوی بین Podها توزیع میشود.
- Least Connections: ترافیک به Podی ارسال میشود که کمترین تعداد اتصالات را دارد.
هر دو روش بهراحتی ازطریق قابلیت kube-proxy اجرا میشوند.