وبسایتهای پربازدید باید صدها هزار درخواست ارسالی همزمان از سمت کاربران و کلاینتها را بهسرعت پاسخ دهند و متن، تصاویر، ویدئو یا دادههای اپلیکیشن را به شیوهای صحیح و قابل اعتماد به آنها بازگردانند. پاسخگویی به این حجم از درخواستهای همزمان در وبسایتهای مدرن، به یک روش مدرن نیز نیاز دارد تا ضمن پاسخگویی به حجم بالای درخواستها مقرونبهصرفه هم باشد. متعادلکننده بار که از آن بهعنوان «پلیس ترافیک» نیز یاد میشود، وظیفه توزیع یکسان ترافیک شبکه را به عهده دارد. در این مقاله قصد داریم به شما بگوییم لود بالانسینگ چیست و چه مزایا و انواعی دارد. برای آشنایی کامل با Load balancing ادامه این مطلب را از دست ندهید.
لود بالانسینگ چیست؟
تعادل بار (Load balancing) روشی برای توزیع مساوی ترافیک شبکه در بین منابعی است که از یک اپلیکیشن پشتیبانی میکنند. اپلیکیشنهای مدرن باید میلیونها کاربر را بهطور همزمان پردازش کنند و متن، ویدئو، تصاویر و سایر دادههای صحیح را با روشی سریع و قابل اعتماد به هر کاربر برگردانند. توصیه میکنیم قبل از خواندن ادامه مطلب، مقاله آشنایی با توزیع بار در CDN را مطالعه کنید تا درک لود بالانسینگ برایتان سادهتر شود.
برای کنترل حجم بالایی از ترافیک، بسیاری از اپلیکیشنها از سرورهای منبع متعددی با دادههای تکراری برخوردار هستند. یک متعادلکننده بار (Load balancer) دستگاهی است که بین کاربر و گروه سرور قرار میگیرد و بهعنوان یک تسهیلگر نامرئی عمل میکند. همچنین این وسیله تضمین میکند که همه سرورهای منبع بهطور یکسان استفاده میشوند.
استفاده از لود بالانسینگ چه مزایایی دارد؟
لود بالانسینگ ترافیک اینترنت را بین سرورهای اپلیکیشن و بازدیدکنندگان یا کلاینتهای آنها هدایت و کنترل میکند. در نتیجه، تعادل بار باعث بهبود دسترسیپذیری، مقایسپذیری، امنیت و عملکرد اپلیکیشن خواهد شد. در ادامه هرکدام از این موارد را مفصلتر توضیح میدهیم:
دسترسیپذیری اپلیکیشن
خرابی یا تعمیر سرور میتواند زمان از دسترس خارج بودن اپلیکیشن را افزایش دهد و دسترسی بازدیدکنندگان به آن را قطع کند. لود بالانسر تحمل خطای سیستمهای شما را با شناسایی خودکار مشکلات سرور و هدایت ترافیک کلاینت به سرورهای در دسترس افزایش میدهد. شما میتوانید از لود بالانسینگ برای آسانتر کردن وظایف زیر استفاده کنید:
- تعمیر یا ارتقای سرور اپلیکیشن بدون از دسترس خارج شدن اپلیکیشن
- بازیابی یا ریکاوری خودکار disaster به سایتهای پشتیبان (Backup)
- بررسی سلامت و جلوگیری از مشکلاتی که باعث از دسترس خارج شدن اپلیکیشن میشوند.
مقیاسپذیری اپلیکیشن
شما میتوانید از متعادلکنندههای بار برای هدایت هوشمندانه ترافیک شبکه بین چندین سرور استفاده کنید. لود بالانسینگ با انجام موارد زیر به اپلیکیشنهای شما کمک میکند تا هزاران درخواست کلاینت را کنترل کنند:
- جلوگیری از گلوگاههای ترافیکی (Traffic bottlenecks) در همه سرورها
- اضافه کردن افزونگی به سیستم شما برای مقیاسبندی مطمئن
- پیشبینی ترافیک اپلیکیشن که این امکان را برایتان فراهم میکند تا در صورت نیاز، سرورهای مختلف را اضافه یا حذف کنید.
امنیت اپلیکیشن
لود بالانسرها ویژگیهای امنیتی داخلی دارند که میتوانند لایههای امنیتی دیگری را به اپلیکیشنهای آنلاین شما اضافه کنند. متعادلکنندههای بار ابزار مفیدی برای مقابله با حملات DDoS به شمار میروند که در آن هکرها با ارسال میلیونها درخواست همزمان، باعث از کار افتادن سرور میشوند. از جمله کارهایی که لود بالانسرها برای افزایش امنیت اپلیکیشن انجام میدهند، به موارد زیر میتوان اشاره کرد:
- نظارت بر ترافیک و مسدود کردن محتوای مخرب
- هدایت خودکار ترافیک حمله به چندین سرور Backend برای به حداقل رساندن تاثیر حمله
- هدایت ترافیک از طریق گروهی از فایروالهای شبکه برای امنیت بیشتر
عملکرد اپلیکیشن
متعادلکننده بار با افزایش زمان پاسخ (Response time) و کاهش تاخیر شبکه (Network latency) عملکرد برنامه را بهبود میبخشد. لود بالانسرها برای بهبود عملکرد اپلیکیشن وظایف حیاتی زیر را انجام میدهند:
- توزیع مساوی بار بین سرورها برای بهبود عملکرد اپلیکیشن
- هدایت درخواستهای کلاینت به سرورهای نزدیکتر برای کاهش تاخیر
- تضمین قابلیت اطمینان و عملکرد منابع محاسباتی فیزیکی و مجازی
آشنایی با الگوریتمهای لود بالانسینگ
یک الگوریتم متعادلکننده بار مجموعهای از قوانین است که لود بالانسر دنبال میکند تا بهترین سرور را برای درخواستهای مختلف کلاینت تعیین کند. الگوریتمهای لود بالانسینگ به دو دسته کلی تقسیم میشوند که عبارتاند از: لود بالانسینگ ایستا (Static) و لود بالانسینگ پویا (Dynamic). در ادامه هرکدام از این الگوریتمها را با چندین نمونه توضیح میدهیم:
لود بالانسینگ ایستا (Static)
الگوریتمهای متعادلکننده بار استاتیک از قوانین ثابتی پیروی میکنند و مستقل از وضعیت فعلی سرور هستند. در زیر نمونههایی از متعادلکننده بار ایستا آورده شده است:
روش رفت و برگشت (Round-robin)
سرورها از IP آدرسهایی برخوردار هستند که به کلاینت میگویند درخواستها را کجا ارسال کند. به خاطر سپردن آدرس IP به دلیل طولانی بودن آن، دشوار است. به همین خاطر سیستم نام دامنه (DNS) نامهای وبسایت را به سرورها نگاشت میکند. بهعنوان مثال، هنگامی که شما derak.cloud را در مرورگر خود وارد میکنید، درخواست ابتدا به سرور نام ما ارسال میشود و در نهایت آدرس IP ما به مرورگر شما برمیگردد.
در روش Round-robin یک سرور نام معتبر بهجای سختافزار یا نرمافزار اختصاصی لود بالانسینگ را انجام میدهد. سرور نام (Name server) آدرسهای IP سرورهای مختلف را در مزرعه سرور (Server farm) بهصورت نوبتی برمیگرداند.
روش رفت و برگشت وزندار (Weighted round-robin)
در لود بالانسینگ رفت و برگشت وزندار میتوانید وزنهای مختلفی را بر اساس ظرفیت یا اولویت هر سرور به آنها اختصاص دهید. سرورهایی با وزن بیشتر ترافیک اپلیکیشن ورودی بیشتری را از سرور نام دریافت خواهند کرد.
روش IP hash
در روش IP hash متعادلکننده بار یک محاسبات ریاضی با نام hashing روی آدرس IP کلاینت انجام میدهد. این محاسبات آدرس IP کلاینت را به یک عدد تبدیل میکند که روی سرورهای جداگانه نگاشته میشود.
لود بالانسینگ پویا (Dynamic)
الگوریتمهای لود بالانسینگ داینامیک یا پویا وضعیت فعلی سرورها را قبل از توزیع ترافیک بررسی میکنند. در ادامه نمونههایی از الگوریتمهای تعادل بار را آوردهایم:
روش اتصال حداقل (Least connection)
اتصال را میتوانیم یک کانال ارتباطی باز بین کلاینت و سرور معرفی کنیم. هنگامی که کلاینت اولین درخواست را به سرور ارسال میکند، آنها احراز هویت میشوند و یک ارتباط فعال بین یکدیگر ایجاد میکنند. در روش اتصال حداقل، متعادلکننده بار بررسی میکند که کدام یک از سرورها کمترین اتصالهای فعال را دارد و ترافیک را به آنها میفرستد. در این روش فرض میشود که کلیه اتصالها به قدرت پردازش برابر برای همه سرورها نیاز دارند.
روش اتصال حداقل وزندار (Weighted least connection)
الگوریتمهای اتصال حداقل وزندار فرض میکنند که برخی از سرورها میتوانند اتصالهای بیشتری را نسبت به سایر سرورها کنترل کنند. بنابراین، شما میتوانید وزنها یا ظرفیتهای مختلفی را به سرورها اختصاص دهید. در نتیجه، متعادلکننده بار درخواستهای کلاینت جدید را به سروری با کمترین اتصال بر اساس ظرفیت ارسال میکند.
روش زمان پاسخ حداقل (Least response time)
زمان پاسخگویی مجموع زمانی است که سرور صرف پردازش درخواستهای ورودی و ارسال پاسخ میکند. روش Least response time برای تعیین بهترین سرور، زمان پاسخ سرور را با اتصالات فعال ترکیب میکند. متعادلکننده بار از این الگوریتم برای اطمینان از ارائه خدمات سریعتر برای همه کاربران بهره میبرد.
روش مبتنی بر منبع (Resource-based method)
در روش مبتنی بر منبع، لود بالانسرها ترافیک را با تجزیه و تحلیل بار سرور فعالی توزیع میکنند. نرمافزار اختصاصی بهنام agent روی هر سرور اجرا شده و میزان استفاده از منابع سرور مانند حافظه و ظرفیت محاسباتی آن را محاسبه میکند. سپس متعادلکننده بار برای منابع رایگان کافی قبل از توزیع ترافیک به آن سرور، agent را بررسی میکند.
لود بالانسینگ چگونه کار میکند؟
شرکتها معمولا اپلیکیشن خود را روی چندین سرور اجرا میکنند. این نوع تنظیم سرور را مزرعه سرور (server farm) مینامند. درخواستهای کاربر به اپلیکیشن ابتدا به سمت متعادلکننده بار میرود. سپس لود بالانسر هرکدام از درخواستها را به یک سرور در server farm هدایت میکند که به بهترین شکل به درخواست رسیدگی شود.
برای درک بهتر نحوه عملکرد Load balancing اجازه بدهید یک مثال ساده بزنیم. لود بالانسینگ مانند کاری است که یک مدیر رستوران انجام میدهد. مدیر رستورانی با چند پیشخدمت تعیین میکند که هرکدام از پیشخدمتها به کدام یک از مشتریان سرویسدهی داشته باشند تا ضمن تخصیص کار بهطور مساوی بین پیشخدمتها، کارها در سریعترین زمان انجام شوند.
برای درک بهتر تعادل بار توصیه میکنیم مقاله «توزیع بار در DNS چگونه اتفاق میافتد» را مطالعه کنید. در این مقاله از ابر دراک پاسخ جامعی به این سوال داده شده است که نحوه عملکرد DNS و توزیع بار را آسانتر میکند.
بررسی انواع لود بالانسینگ
لود بالانسینگ بسته به آنچه که متعادلکننده بار در درخواست کلاینت برای هدایت ترافیک بررسی میکند، به سه دسته اصلی تقسیم میشود. در ادامه انواع لود بالانسینگ را توضیح میدهیم:
لود بالانسینگ اپلیکیشن
اپلیکیشنهای پیچیده مدرن از مزرعههای سرور متعددی با چندین سروری که به یک اپلیکیشن اختصاص داده شده است، برخوردار هستند. متعادلکنندههای بار برای هدایت ترافیک به محتوای درخواست مانند هدرهای HTTP یا IDهای SSL session توجه میکنند.
بهعنوان مثال، یک اپلیکیشن تجارت الکترونیک (Ecommerce) یک فهرست (Directory) محصول، سبد خرید و توابع (Function) پرداخت دارد. لود بالانسر اپلیکیشن درخواستها را برای جستوجوی محصولات به سرورهایی ارسال میکند که حاوی تصاویر و ویدئوها هستند، اما نیازی به نگهداری اتصالهای باز ندارند. متعادلکننده بار درخواستهای سبد خرید را به سرورهایی ارسال میکند که قابلیت حفظ بسیاری از اتصالهای کلاینت و ذخیره دادههای سبد برای طولانیمدت را دارند.
لود بالانسینگ شبکه
متعادلکنندههای بار شبکه آدرسهای IP و سایر اطلاعات شبکه را برای هدایت بهینه ترافیک بررسی میکند. آنها منبع ترافیک اپلیکیشن را ردیابی میکنند و میتوانند یک IP آدرس استاتیک را به چندین سرور اختصاص دهند. متعادلکنندههای بار شبکه از الگوریتمهای لود بالانسینگ ایستا و پویا برای متعادل کردن بار سرور استفاده میکنند.
لود بالانسینگ سرور جهانی (Global)
لود بالانسینگ سرور جهانی در چندین سرور توزیعشده از نظر جغرافیایی رخ میدهد. بهعنوان مثال، شرکتها میتوانند سرورهایی در چندین مرکز داده در کشورهای مختلف و همچنین در ارائهدهندگان ابر در سراسر جهان داشته باشند. در این مورد، لود بالانسرهای محلی (local) بار اپلیکیشن را در یک منطقه (Region) یا ناحیه (Zone) مدیریت میکنند. متعادلکنندههای بار محلی برای هدایت ترافیک به مقصد سروری که از نظر جغرافیایی به کلاینت نزدیکتر است، تلاش میکنند. لود بالانسرها فقط در صورت خرابی سرور، ترافیک را به سرورهای خارج از منطقه جغرافیایی کلاینت هدایت خواهند کرد.
لود بالانسینگ DNS
در لود بالانسینگ DNS، شما دامنه خود را برای هدایت درخواستهای شبکه از میان چندین منبع به دامنه خود پیکربندی میکنید. یک دامنه میتواند به یک وبسایت، سیستم ایمیل، سرور پرینت یا هر سرویس دیگری که از طریق اینترنت قابل دسترسی است، مرتبط باشد. لود بالانسینگ DNS برای حفظ دسترسیپذیری اپلیکیشن و متعادل کردن ترافیک شبکه در سراسر منابع توزیعشده جهانی مفید است.
انواع تکنولوژیهای لود بالانسینگ
انواع متعادلکننده بار (Load balancer) را میتوان در دو دسته متعادلکننده بار سختافزاری و متعادلکننده بار نرمافزاری قرار داد که در ادامه به توضیح آنها میپردازیم:
متعادلکننده بار سختافزاری (Hardware load balancer)
متعادلکننده بار مبتنی بر سختافزار یک وسیله سختافزاری است که میتواند پردازش و هدایت گیگابایت ترافیک (Gigabytes of traffic) را به صدها سرور مختلف انجام دهد. شما میتوانید آن را در مراکز داده خود قرار داده و از مجازیسازی برای ایجاد لود بالانسرهای دیجیتال یا مجازی استفاده کنید که بهصورت مرکزی نیز قابل مدیریت است.
متعادلکننده بار نرمافزاری (Software load balancer)
لود بالانسرهای مبتنی بر نرمافزار اپلیکیشنهایی هستند که همه توابع (Functions) لود بالانسینگ را انجام میدهند. شما میتوانید این اپلیکیشنها را روی هر سروری نصب کنید یا به آنها بهعنوان یک سرویس شخص ثالث (Third-party) کاملا مدیریتشده دسترسی داشته باشید.
مقایسه لود بالانسرهای سختافزاری با لود بالانسرهای نرمافزاری
لود بالانسرهای سختافزاری به سرمایهگذاری اولیه، پیکربندی و نگهداری مداوم نیاز دارند. از طرفی ممکن است شما از ظرفیت کامل آنها استفاده نکنید؛ بهخصوص اگر لود بالانسر سختافزاری را فقط برای کنترل ترافیک در زمان اوج (Peak-time) خریداری کرده باشد.
بااینحال، متعادلکنندههای بار مبتنی بر نرمافزار انعطافپذیری بیشتری دارند و بهراحتی میتوانید آنها را افزایش یا کاهش دهید. بهعلاوه، لود بالانسرهای نرمافزاری سازگاری بیشتری با محیطهای مدرن رایانش ابری دارند. این مدل از متعادلکنندههای بار هزینه کمتری برای راهاندازی، مدیریت و استفاده در طول زمان نسبت به لود بالانسرهای سختافزاری دارند.
منبع: AWS