لود بالانسینگ چیست؟ فرض کنید هنگام رانندگی در یک بزرگراه پر از ماشین هستید. تمام ماشینها اجازه دارند فقط از یک لاین عبور کنند. در این شرایط، تمام بزرگراه قفل شده و ترافیک شدیدی اتفاق میافتد. اینجاست که مدیریت ترافیک با راهکاری به نام توزیع ترافیک وارد عمل میشود. این راهکار مثل یک راهباز کن قهار، امکان عبور از سایر لاینهای بزرگراه را فراهم میکند. توزیع ترافیک در دنیای وب به لود بالانسینگ معروف است.
لود بالانسینگ چیست؟
لود بالانسینگ (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 برای حفظ در دسترس بودن برنامه و توزیع ترافیک شبکه بین مجموعهای از منابع توزیع جهانی بسیار کاربردی خواهد بود.
الگوریتمهای لود بالانسینگ چیست؟
الگوریتم تعادل بار به دو دسته اصلی پویا و استاتیک تقسیم میشوند.
۱. الگوریتم لود بالانسینگ استاتیک (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) هر سرور برای توزیع بهینه ترافیک تحت بررسی قرار میگیرد.
جمعبندی
لود بالانسینگ چیست؟ در دنیای سرورها میتوان گفت لود بالانسینگ حکم دکتر تغذیه برای سرورها را دارد که مشخص میکند چه زمانی چه میزان ترافیک به خورد هر سرور رود. در این مقاله، بهطور کامل بررسی کردیم Load balancer چیست؟ چه کاربرد و مزایایی دارد. اگر سوالی در این زمینه دارید، مشتاق پاسخگویی به شما خواننده عزیز هستیم. سوالاتتان را میتوانید در انتهای همین مقاله بنویسید تا راهنماییتان کنیم.