فهرست محتوا
سرورهای وبسایتهای مدرن و پرترافیک باید روزانه هزاران (و یا صدها هزار) درخواست را به صورت همزمان پردازش و مدیریت کنند که این موضوع میتواند باعث کاهش سرعت و یا از کار افتادن آنها شود. اما راهحل چیست؟ راهکارها و قابلیتهای مختلفی برای مقابله با افزایش سرعت سرور وجود دارد که از میان مهمترین آنها میتوان به لود بالانسینگ اشاره کرد. لود بالانسینگ روشی برای توزیع متعادل ترافیک ورودی به شبکه، میان سرورهای مختلف در سمت میباشد که این عمل مانع از فشار آمدن به سرورها و در نهایت باعث بهبود عملکرد و کاهش زمان بارگذاری وبسایتها میشود.
لود بالانسینگ چیست؟
لود بالانسینگ (Load Balancing) یا متعادلکردن بار به معنای توزیع یکسان بار یا ترافیک ورودی به یک شبکه، میان گروهی از سرورهای بکاند میباشد که به اصطلاح به آنها استخر یا
میگویند. این عمل توسط یک لود بالانسر (Load Balancer) انجام شده و باعث میشود تا سرور شما در ساعات اوج ترافیک دچار کندی و یا اختلال نشود. لود بالانسر میان کلاینتها و سرورها قرار گرفته و به گونهای ترافیک را توزیع میکند که بر هیچیک از سرورها فشاری وارد نشود. لود بالانسینگ دارای مزایای متعددی بوده که از میان آنها میتوان به کاهش و ، بهبود دسترسی کاربران، افزایش سرعت و عملکرد سرور و رشد کسبوکارها اشاره کرد. برای درک بهتر لود بالانسینگ به این مثال توجه کنید. فرض کنید فروشگاهی دارای ۱۰ صندوق است که تنها یکی از آنها کار میکند و در چنین شرایطی تمام مشتریان مجبورند در صفی طولانی بایستند و فرد صندوقدار نیز باید کار تمام آنها راه بیندازد که این عمل باعث خستگی و کاهش بهرهوری آن فرد در حین کار میشود. حال فرض کنید بهیکباره تمام صندوقها شروع به کار کرده و تمام مشتریان به صورت مساوی میان آنها تقسیم شوند. در این حالت مشتریان زودتر از فروشگاه خارج شده و صندوقدارها نیز دچار خستگی نمیشوند. لودبالانسینگ هم دقیقا به همین صورت عمل میکند.لود بالانسینگ چگونه کار میکند؟
مراحل انجام لود بالانسینگ:
۱- ارسال درخواست توسط کلاینت: کاربر از طریق یک کلاینت مانند مرورگر، اپلیکیشن و … درخواستی را ایجاد کرده (مثلا روی یک لینک کلیک میکند) و این درخواست به سمت سرور ارسال میشود.
۲- دریافت درخواست توسط لودبالانسر: لود بالانسر همانطور که اشاره شد، میان سرورها و کلاینتها قرار میگیرد و درخواست ارسالی در ابتدا به سمت لود بالانسر میرود.
۳- بررسی سلامت سرورها: در این مرحله، لود بالانسر با دقت وضعیت سلامت تمام سرورهای سمت بکاند را مورد بررسی قرار داده و در صورت خرابی سروری آن را تا زمان تعمیر از استخر سرورها خارج میکند.
۴- انتخاب سرور مناسب: لودبالانسر با استفاده از الگوریتمهای مختلفی مناسبترین سرور را انتخاب میکند.
۵- ارسال درخواست به سرور: لود بالانسر پس از انتخاب سرور مورد نظر خود، درخواست کلاینت را به سمت آن ارسال میکند. توجه داشته باشید که سرورها در دیتاسنتر نگهداری میشوند.
۶- پردازش درخواست توسط سرور: سرور درخواست را مورد پردازش قرار داده و پاسخی مناسب برای آن ایجاد میکند. این پاسخ شامل مواردی مانند دادهها، عکسها، فایلهای
، ، و … میشود.۷- ارسال پاسخ به وبسرور: سرور پاسخ ایجاد شده را به سمت وبسرور میفرستد.
۸- ارسال پاسخ به کلاینت: وبسرور نیز در پایان پاسخ دریافتی را به سمت کلاینت ارسال میکند.
لود بالانسینگ در چه حوزههایی کاربرد دارد؟
تکنیک لود بالانیسنگ در حوزههای مختلفی میتواند با توزیع ترافیک ورودی میان سرورهای مختلف باعث بهبود عملکرد آنها شود:
- سرویسهای پخش ویدئو (یوتوب و …)
- سرورهای دیتابیس
- فناوری مجازیسازی
- وبسرورها و CDNها
- DNS و فایروالها
- شبکههای مختلف
- و
- فناوری رایانش ابری
مزایای لود بالانسینگ
- افزایش دسترسی و
- افزایش امنیت و
- بهبود سرعت و عملکرد سرور
- انعطافپذیری بالا
- کاهش دانتایم
- ارائه افزونگی (ریداندنسی)
مقایسه لود بالانسر نرمافزاری و سختافزاری
لود بالانسر سختافزاری دستگاهی با چندین مولفه سختافزاری و یک نرمافزار اختصاصی است که میتواند به شکلی امن حجم زیادی از ترافیک ورودی را پردازش کرده و آنها را میان سرورهای مختلفی توزیع کند. شما میتوانید لود بالانسر سختافزاری خود را در یک دیتاسنتر نگه دارید و با استفاده از یک نرمافزار مجازیساز آن را به چند لود بالانسر مجازی تبدیل کنید. لود بالانسر نرمافزاری نیز برنامهای است که میتوانید آن را بر روی سرور، فضای ابری، محیطهای کانتینری و یا یک HAProxy، Kemp و Azure Application Gateway اشاره کرد. راهاندازی و مقیاسبندی لود بالانسرهای نرمافزاری بسیار آسان بوده و میتوانید از طریق یک آنها را مدیریت کنید اما پیکربندی، راهاندازی و مدیریت لود بالانسرهای سختافزاری به نسبت دشوارتر بوده و نیاز به دانش فنی دارد.
نصب کنید و در نتیجه از انعطافپذیری بیشتری برخوردار بوده و از میان محبوبترین آنهانیز میتوان بهلود بالانسرهای نرمافزاری از مقیاسپذیری بالاتری برخوردار بوده و میتوانید به سرعت ظرفیت آنها را بر اساس نیازهای خود کاهش یا افزایش دهید اما برای افزایش ظرفیت لودبالانسرهای سختافزاری باید منابع فیزیکی بیشتری را خریداری کنید که این مسئله باعث افزایش هزینههای شما میشود. علاوه بر این، سازمانها در کنار لودبالانسر سختافزاری خود یک نسخه پشتیبان نیز تهیه میکنند تا در صورت خرابی لودبالانسر اصلی فورا آن را جایگزینش کنند. توجه داشته باشید که لود بالانسرهای سختافزاری معمولا عملکرد بهتری از نوع نرمافزاری آن دارند و علت آن این است که میتوانند از تمام منابع سختافزاری موجود استفاده کنند.
آشنایی با الگوریتمهای لود بالانسینگ
کاربران با توجه به نیازهای خود میتوانند تکنیک لودبالانسینگ مورد نظر خود را با استفاده از الگوریتمهای مختلفی انجام دهند که در کل به دو نوع استاتیک و دینامیک دستهبندی میشوند.
الگوریتمهای استاتیک
Round Robin: در این نوع الگوریتم، ترافیک ورودی به شبکه به صورت زنجیرهای و پشتسرهم میان سرورها تقسیم میشود. این متد اغلب زمانی مورد استفاده قرار میگیرد که تمام سرورها دارای مشخصات یکسان باشند.
Weighted round-robin: نوعی الگوریتم لود بالانسینگ است که در آن شما با توجه به ظرفیت و عملکرد سرورها میتوانید ترافیک ورودی را میان آنها تقسیم میکند. به عنوان مثال میتوانید بیشتر ترافیک وبسایت خود را به سمت سروری که منابع قویتری دارد، ارسال کنید.
IP Hash: در این متد، لود بالانسرها محاسبات ریاضی به نام Hashing را بر روی آدرسهای IP انجام داده و بر اساس عدد بدست آمده، ترافیک آنها را به سمت سرورهای مناسب هدایت میکنند. با استفاده از این روش میتوانید مطمئن شوید که درخواستهای یک IP هر بار تنها به سمت یک سرور خاص میروند.
الگوریتمهای دینامیک
Least Connection: وقتی کلاینت درخواستی را به سمت سرور ارسال میکند، یک اتصال میان آنها ایجاد میشود. Least Connection الگوریتمی است که در آن لود بالانسر ترافیک ورودی را بر حسب تعداد اتصالات فعلی سرورها میان آنها تقسیم میکند و بنابراین بیشتر درخواستها به سمت سروری میرود که کمترین تعداد اتصال فعال را دارد.
Weighted least connection: در این الگوریتم، تعداد درخواستهای ارسالی به هر سرور بر اساس میزان عملکرد و ظرفیت مشخص میشود و بنابراین سرورهای قدرتمندتر نسبت به سایر سرورها باید تعداد اتصالات بیشتری داشته باشند.
Least Response Time: در این الگوریتم، لود بالانسر تمام سرورها را به صورت مداوم مورد تجزیهوتحلیل قرار داده و درخواستها را اول به سمت سروری میفرستد که دارای کمترین تعداد اتصال فعال و بالاترین سرعت در پاسخدهی باشد.
انواع لود بالانسینگ
لود بالانسینگ مبتنی بر اپلیکیشن
لود بالانسینگ مبتنی بر اپلیکیشن در لایه ۷ (لایهاپلیکیشن) مدل OSI کار کرده و مانند لود بالانسرهای سنتی درخواستها را میان سرورهای مختلفی توزیع میکند. لود بالانسرهای سنتی تنها بر اساس میزان سلامت سرورها، حجم ترافیک و آدرسهای IP کاربران عمل میکنند اما لود بالانسرهای مبتنی بر اپلیکیشن بر خلاف آنها برای تقسیم ترافیک، بیشتر بر روی نوع محتوای درخواستها، موقعیت مکانی کاربر و هدرهای HTTP تمرکز میکنند.
لود بالانسینگ شبکه
این نوع لود بالانسینگ در لایه چهارم مدل OSI (لایه شبکه) و بر اساس شرایط شبکه، سلامت و ظرفیت سرور، مقصد پورتها عمل کرده و برای توزیع ترافیک شبکه میان سرورها از پروتکل و هر دو الگوریتم استاتیک و دینامیک استفاده میکند.
لود بالانسینگ سرور جهانی
لود بالانسینگ سرور جهانی (GSLB) میتواند ترافیک و یا درخواستهای ورودی را میان سرورهای متصلبههمی که در مکانهای جغرافیایی مختلفی قرار دارند، توزیع کند. بنابراین وقتی کاربری درخواستی را ایجاد میکند، لودبالانسر سرور جهانی، درخواست او را به نزدیکترین سرور به محل زندگی او میفرستد که این عمل باعث کاهش لتنسی و افزایش دسترسی کاربران به محتوای مورد نظرشان میشود.
لود بالانسینگ مبتنی بر DNS
در لود بالانسینگ مبتنی بر DNS، شما میتوانید دامنه خود را به گونهای در سیستم نام دامنه پیکربندی کنید که درخواستهای مرتبط با آن میان گروهی از سرورهای مختلف توزیع شوند. در مدل سنتی، تمام کوئریهای DNS تنها به سمت یک سرور DNS میروند اما با کمک لود بالانسینگ مبتنی بر DNS میتوان برای هر نام دامنه، آدرسهای IPهای مختلفی را اختصاص داد که هر کدام در یک سرور DNS متفاوت ذخیره شدهاند.
لود بالانسینگ مبتنی بر ابر
روشی است که در آن لود بالانسر درخواستهای کاربران را به شکلی متعادل میان سرورهایی که در یک فضای ابری قرار دارند، توزیع میکند که این عمل باعث افزایش آپتایم، کاهش لتنسی و بهبود دسترسی کاربران به سرویسهای ابری مانند IaaS، Saas و PaaS میشود.
سؤالات متداول
لود بالانسر و پروکسی معکوس چه تفاوتی دارد؟
لود بالانسر به شکلی متعادل ترافیک را میان سرورها تقسیم میکند اما پروکسی معکوس به عنوان واسطهای میان سرورها و کلاینتها عمل کرده و درخواستهای ورودی را به سمت سرورهای مناسب خود فوروارد میکند و در پایان نیز پاسخهای ایجاد شده توسط سرورها را دوباره به سمت کلاینتها باز میگرداند. هدف اصلی لودبالانسینگ متعادلکردن لود سرور است اما هدف اصلی reverse proxy افزایش امنیت و همچنین کشینگ بهتر است.
لود بالانسر چیست؟
نوعی نرمافزار است که میان سرورها و کلاینتها قرار گرفته و وظیفه آن توزیع متعادل ترافیک ورودی میان سرورهای مختلف میباشد.
Failover چیست؟
Failover وضعیتی است که در آن سروری نمیتواند درخواستهای ورودی را پردازش کند و در نتیجه لود بالانسر سرور یا سرورهای دیگری را جایگزین آن میکند.
منابع: Amazon، IBM و Avinetworks