راه مقابله با فشار زیاد به سرور چیست؟ وقتی کمر سرور زیر بار هجوم کاربران خم میشود، مسلماً سرویس هم دچار اختلال خواهد شد و این اتفاق خوبی نیست! به همین خاطر است که به سازوکاری مثل لود بالانسینگ نیاز داریم.
Load Balancing با تقسیم بار بین سرورهای مختلف، مانع از وارد آمدن فشار سنگین به یک تک سرور میشود. در این مقاله، میخواهیم راجعبه همین موضوع صحبت کنیم و جوانب مختلف آن را زیر ذرهبین ببریم.
اول بیایید یک تعریف کاملتر از این مفهوم داشته باشیم و بعد برویم سراغ باقی بخشها.
منظور از لود بالانسینگ (Load Balancing) چیست؟
لود بالانسینگ نام تکنیکی است که با هدف توزیع بار شبکه روی سرورهای مختلف به کار گرفته میشود. با انجام این کار، یعنی تقسیم بار ترافیکی، سرورها تحت فشار بیش از حد قرار نمیگیرند و همۀ آنها میتوانند بهترین عملکرد ممکن را از خود نشان بدهند.
یک اپلیکیشن یا سایت را که میلیونها بازدیدکننده دارد، در نظر بگیرید. در برخی زمانها، ترافیک ورودی سایت یا اپلیکیشن خیلی بالا میرود و اینکه سرورها بتوانند در پاسخ درخواست هر کاربر، دقیقاً محتوایی که دنبال آن میگردد را ارائه کنند، به کاری چالشبرانگیز تبدیل میشود. به همین خاطر است که بیشتر اپلیکیشنها و سایتهای بزرگ، از چندین سرور بهصورت همزمان استفاده میکنند و با اضافه کردن لود بالانسر، نمیگذارند هیچکدام از آنها زیر فشار ترافیک سنگین کمر خم کنند!
از آنجایی که درحالحاضر کاربران به کمتر از عالی راضی نمیشوند، لود بالانسینگ به یک فرایند ضروری بدل میشود که همۀ سایتها و اپلیکیشنهای بزرگ (با ترافیک زیاد) باید آن را به کار بگیرند تا بتوانند بهترین تجربۀ کاربری را برای تکتک بازدیدکنندگان فراهم کنند. دیگر بهانههایی مثل شلوغی بیش از انتظار شبکه و پایین آمدن سرورها به این دلیل، تحت هیچ شرایطی پذیرفته نیست.
همانطور که گفتیم، از یک دیدگاه کلی، همۀ سایتها و اپلیکیشنهای بزرگ به چنین سیستمی نیاز دارند؛ اما بیایید کمی عمیقتر شویم و ببینیم Load Balancing دقیقاً در کجاها به کار میآید؟ لیست زیر جواب این سؤال را میدهد:
- وبسرورها
- سرورهای اپلیکیشنها
- سرورهای دیتابیسها
- رایانش ابری
- سیستمهای توزیع محتوا (CDN)
- سرورهای گیم
- سرویسهای استریم ویدیو و صوت
بهطور کلی، در هرجایی که ممکن است گاهبهگاه شاهد هجوم سیل ترافیک باشیم، هم باید از چندین سرور مختلف برای سرپا نگه داشتن سرویس استفاده کنیم، هم باید از لود بالانسر با هدف توزیع بار بین این سرورها کمک بگیریم.
بد نیست در بخشی کوتاه، تعریفی برای خود لود بالانسر هم ارائه کنیم.
⭐ محتوای مرتبط: CPU چیست؟ با مغز متفکر سیستم آشنا شوید! |
لود بالانسر چیست؟
فرض کنید بعد از انتخاب اجناس مورد نیاز در یک فروشگاه زنجیرهای، به سمت خروجی میروید؛ جایی که ۸ صندوق وجود دارد و باید از طریق یکی از آنها، پول خرید خود را بپردازید. قاعدتاً اگر همۀ مشتریها روی عبور از یک صندوق اصرار داشته باشند، صف خیلی طولانی خواهد شد و علاوهبر اینکه مشتریها باید کلی منتظر بمانند، صندوقدار آن یک خط ممکن است تمام تمرکزش را از دست بدهد!
حالا فرض کنید مدیریت فروشگاه یک نفر را مأمور کند که جلوی صندوقها مستقر شود و بسته به شلوغی هر صندوق، مشتریهای جدیدی که قصد تسویه حساب دارند را به خلوتترین خط بفرستد؛ به این ترتیب، هم زمان انتظار تقریبی هر مشتری به حداقل میرسد، هم صندوقدارها میتوانند کار خود را به شکلی ایدئال انجام دهند.
این دقیقاً همان وظیفۀ لود بالانسینگ است و شخص مأمورشده از طرف مدیریت هم نقش لود بالانسر را بازی میکند.
به بیان دقیقتر، لود بالانسر دستگاهی است نرمافزاری یا سختافزاری که بین کاربران و گروه سرورها قرار میگیرد. دستگاهی که دیده نمیشود، اما نمیتوانیم نقش پررنگ آن در خلق تجربۀ کاربری بینقص برای همۀ بازدیدکنندگان را نادیده بگیریم.
تا اینجا اطلاعات کامل راجعبه کلیت لود بالانسینگ را به دست آوردیم و فهمیدیم لود بالانسر چیست. در بخش بعدی، با نگاهی موشکافانهتر، طرز کار چنین سیستمی را واکاوی خواهیم کرد.
⭐ محتوای مرتبط: دیتابیس (database) چیست؟ خانهای امن برای دادهها و اطلاعات مهم! |
سازوکار لود بالانسینگ چگونه است؟
چند خط بالاتر توضیح دادیم که لود بالانسر هم میتواند سختافزاری باشد، هم نرمافزاری! با این اوصاف، پیادهسازی چنین سازوکاری هم به دو شکل قابل انجام است.
انواع سختافزاری ادوات فیزیکیای هستند که در محل قرارگیری سرورها نصب و نگهداری میشوند. در نقطۀ مقابل، انواع نرمافزاری، مثل هر برنامۀ دیگری روی سرور یا شبکۀ ادارهکنندۀ آن نصب میشوند و کار توزیع بار را مدیریت میکنند.
در هر دو صورت، لود بالانسر که گفتیم در میانۀ راه مینشیند و مثل یک ایست بازرسی عمل میکند، بعد از بررسی هر درخواست ورودی، بهترین سروری که توانایی ارائۀ بهترین پاسخ را دارد، شناسایی خواهد کرد. یادتان باشد هدف اصلی، جلوگیری از واردن آمدن فشار بیش از حد به سرورها است؛ پس لود بالانسر درخواستها را به سرورهای مختلفی که تحت کنترل خود دارد، هدایت میکند.
البته که کار لود بالانسر بعد از تحویل درخواست به سرور تمام نمیشود؛ چراکه این میانجی در رابطه با برگرداندن پاسخ به کاربر هم مسئولیت دارد! بعد از تحویل پاسخ، آدرس آیپی کاربر با سروری که به آن متصل شده است، هماهنگ میشود؛ با این کار، کاربر و سرور میتوانند تا رفع کامل نیاز کاربر، به یکدیگر متصل بمانند.
همانطور که گفتیم، وظیفه و هدف اصلی لود بالانسینگ، جلوگیری از افت کیفیت تجربۀ کاربری، بهخاطر از دسترس خارج شدن سرورها است؛ پس وقتی جهشی پیشبینینشده (یا پیشبینیشده) در ترافیک رخ میدهد، لود بالانسر میتواند سرورهایی که شاید در حالت استراحت بودند را وارد شبکه کند و از آنها برای ارائۀ خدمات به ترافیک ورودی کمک بگیرد. از طرفی دیگر، اگر ترافیک از حالت معمول کمتر شود، لود بالانسر میتواند برخی سرورها را به مرخصی بفرستد و در مصرف منابع صرفهجویی کند.
کلاً این سازوکار خاصیتها و فواید زیادی دارد که در بخش بعدی آنها را بررسی خواهیم کرد؛ اما قبل از آن، اجازه دهید به یک نکتۀ مهم بپردازیم.
گفتیم که لود بالانسرها دو نوع دارند: سختافزاری و نرمافزاری؛ باید بدانید که علاوهبر این دو نوع، طی سالهای گذشته، ارائهدهندگان سرویسهای ابری مثل AWS و Microsoft Azure هم شروع کردهاند به ارائۀ چنین سرویسی در قالب خدمات ابری.
برویم برای ادامۀ مقاله.
⭐ محتوای مرتبط: API چیست؟ هر آنچه باید درباره API بدانید (به زبان ساده) |
لود بالانسینگ چه مزایایی دارد؟
بالاتر که پاسخ سؤال Load Balancing چیست را میدادیم، احتمالاً فهمیده باشید جلوگیری از فشار بیش از حد به سرور تا چه حد اهمیت بالایی دارد؛ اما خب علاوهبر آن، این سازوکار مزیتهای دیگری هم دارد که اینجا با آنها آشنا خواهید شد.
مقیاسپذیری راحتتر
کمی قبلتر گفتیم که لود بالانسر میتواند در موقع نیاز، وقتی حجم ترافیک ورودی افزایش مییابد، تعداد سرورهای پاسخدهندۀ را افزایش دهد؛ همچنین، بعد از فروکش کردن تقاضاها، این سیستم امکان کاهش سرورهای پاسخدهنده را هم دارد؛ این تعریف ساده و کامل مقیاسپذیری است که بهلطف لود بالانسینگ خیلی راحت انجام میگیرد.
امنیت بیشتر
لود بالانسری که گفتیم در دم دروازههای ورودی قرار میگیرد و وظیفۀ هدایت ترافیک به سرورهای مختلف را دارد، میتواند به سیستمهای امنیتی مجهز شود و امنیت کل شبکه را بالاتر ببرد!
گواهی SSL، فایروالهای وباپلیکیشن یا WAF، احراز هویت چند مرحلهای و…، از جملۀ رایجترین قابلیتهای امنیتیای هستند که میتوان آنها را به لود بالانسر اضافه کرد.
ضمناً، اگر با ماهیت حملات DDoS آشنایی داشته باشید، میدانید چنین سازوکاری چقدر میتواند در مقابله با آن مؤثر عمل کند! اگر دوست دارید اطلاعات بیشتری از این نوع حملات رایج سایبری به دست بیاورید، مقالۀ “حمله DDoS چیست و چگونه انجام میشود؟” را بخوانید.
⭐ محتوای مرتبط: پروتکل (Protocol) چیست و چگونه کار میکند؟ |
دسترسیپذیری بیشتر
منظور این است که عملکرد لود بالانسرها باعث میشود سایت (یا اپلیکیشن) در زمانهای بیشتری در دسترس باشد! قبل از اینکه سروری از لود بالانسر ترافیک دریافت کند، سلامتش کاملاً چک میشود؛ بنابراین، اگر سروری در شرف پایین آمدن باشد، یا اینکه از قبل بهمنظورهای مختلف پایین آمده باشد، سازوکار محشری به اسم لود بالانسینگ، ترافیک را از آنها دور کرده و به سمت سرورهای سرحال و روپا میفرستد.
اینطوری میشود که لود بالانسر میتواند زمان در دسترس بودن سرویس را برای کاربران بیشتر کند.
عملکرد بهتر
گفتیم که توزیع بار و جلوگیری از وارد شدن فشار شدید به یک سرور، کمک میکند سرورها به بهترین شکل کار خود را انجام دهند و این یعنی ارائۀ بهترین عملکرد ممکن!
توزیع بار به کاهش زمان پاسخدهی و البته کاهش تأخیر منجر میشود؛ دو عاملی که بالا بودن آنها نشاندهندۀ ضعف عملکردی سیستم است و کاربران را کلافه میکند.
⭐ محتوای مرتبط: NAT چیست؟ آشنایی با ناجی شبکه و رازورمزهای آن بهزبان ساده |
صرفهجویی در مخارج
Load Balancing روی استفادۀ کاملاً بهینه از منابع متمرکز است و به این ترتیب، میتواند استفاده از ادوات سختافزاری را به میزان چشمگیری کاهش دهد؛ کاهشی که سرانجامش صرفهجویی در مخارج است.
این هم از مزایای اصلی سازوکار مورد بحثمان. حالا بیایید با انواع الگوریتمهای آن هم آشنا شویم.
الگوریتمهای رایج در لود بالانسینگ چیست؟
اول ببینیم تعریف الگوریتم لود بالانسینگ چیست؟
منظور مجموعه قوانینی هستند که لود بالانسر باید از آنها پیروی کرده و براساس آنها، هر کاربر را به سروری ایدئال که میتواند در هر لحظه بهترین عملکرد را از خود نشان دهد، هدایت کند.
بهطور کلی، الگوریتمهای این سازوکار به دو دسته تقسیم میشوند و هر دسته هم شامل چند زیرمجموعه میشود. در این قسمت، همۀ الگوریتمها را بررسی خواهیم کرد.
لود بالانسینگ استاتیک
این دسته از الگوریتمها پیرو ضوابطی ثابت هستند و کاری به وضعیت لحظهای سرورها ندارند!
الگوریتم Round Robin
این الگوریتم از DNS استفاده کرده و ترافیک را بهصورت متوالی و طی یک روال منظم، بین سرورهای مختلف توزیع میکند؛ یعنی بعد از ارسال کاربری به سرور اول، کاربرهای بعدی به سرور دوم، سوم و… فرستاده میشوند؛ این روال ادامه پیدا میکند تا سرورها به انتها برسند و دوباره سرور اول میزبان ترافیک خواهد شد.
همانطور که میبینید، این الگوریتم بسیار ساده و پایهای است و اصلاً برایش مهم نیست که هر سرور در هر لحظه چه وضعیتی دارد.
الگوریتم Weighted Round Robin
این الگوریتم نسخۀ پیشرفتهتر Round Robin محسوب میشود. در این متد، میتوانید به سرورها وزن بدهید؛ به بیان سادهتر، بسته به توانایی هر سرور و ظرفیتی که دارد، اولویتی برای آن تعیین میکنید؛ پس علاوهبر DNS که بالاتر از آن گفتیم، وزن (یا Weight) که به هر سرور میدهید، در روال توزیع بار توسط لود بالانسر تأثیر میگذارد.
⭐ محتوای مرتبط: کلاینت چیست؟ انواع Client و ربط آن به سرور |
الگوریتم هش IP
در صورت استفاده از این الگوریتم، لود بالانسر موظف به اجرای برخی محاسبات کامپیوتری خواهد بود؛ محاسباتی که با نام هشینگ شناخته میشوند. نتیجۀ این محاسبات یک عدد است که براساس آن، سرور گیرندۀ درخواست مشخص خواهد شد.
برویم سراغ دستۀ دوم الگوریتمها.
لود بالانسینگ داینامیک
برخلاف الگوریتمهای استاتیک که تحت هر شرایطی ثابت هستند، الگوریتمهای داینامیک کمی هوشمندانهتر عمل میکنند؛ چون در هر لحظه، وضعیت هر سرور را بررسی میکنند تا در فرایند توزیع بار تصمیمهای بهتری بگیرند. اینها معروفترین الگوریتمهای داینامیک لود بالانسینگ هستند:
الگوریتم Least Connections
این الگوریتم تمام سرورها را بررسی کرده و بعد از شناسایی آن موردی که کمترین اتصال باز را دارد، ترافیک را به سمت همان سرور میفرستد. در این الگوریتم، فرض بر این است که همۀ انواع اتصالها فشار یکسانی وارد میکنند و نیازمند قدرت پردازشی مشابهی هستند.
الگوریتم Least Response Time
اول باید Response Time را تعریف کنیم؛ منظور مدتزمانی است که طول میکشد تا یک سرور درخواست را دریافت کند و بعد از پردازش آن، پاسخ مناسب را به کاربر برگرداند.
در این الگوریتم، لود بالانسر علاوهبر بررسی تعداد اتصالهای برقرار و فعال، عدد Response Time را هم لحاظ میکند و ترافیک را به سمت آن سروری میفرستد که میتواند در کوتاهترین زمان ممکن، پاسخ کاربر را به او بدهد. اگر سرعت بالای سایت یا اپلیکیشن اهمیت خیلی زیادی دارد، استفاده از این الگوریتم را به شما پیشنهاد میکنیم.
⭐ محتوای مرتبط: ماشین مجازی (vm) چیست؟ آشنایی با کلید ورود به دنیای ابری! |
الگوریتم Weighted Least Connection
با الگوریتم Weighted Least Connection، ادمین میتواند با فرض اینکه برخی سرورها توانایی مدیریت درخواستهای بیشتری را دارند، برای هرکدام وزن تعیین کند.
الگوریتم Resource-based
لود بالانسر بهصورت لحظهای هر سرور را بررسی کرده و منابع آزاد هرکدام را شناسایی میکند. این الگوریتم به نرمافزارهای خاصی نیاز دارد که اصطلاحاً با نام Agent شناخته میشوند. این نرمافزارها CPU و Memory آزاد هر سرور را محاسبه کرده و آن را ثبت میکنند.
لود بالانسری که از این الگوریتم استفاده میکند، قبل از هدایت ترافیک به سمت سرور ایدئال، وضعیت را از Agent استعلام میکند تا ببیند کدام سرور منابع آزاد بیشتری دارد و میتواند بهتر به درخواستها پاسخ دهد.
آمادۀ جمعبندی مقاله هستید؟
لود بالانسینگ: سازوکاری نجاتبخش و البته ضروری!
سایتها، اپلیکیشنها و کلاً همۀ سیستمهایی که با ترافیک خیلی زیاد سروکار دارند، بی بروبرگرد به لود بالانسینگ نیاز خواهند داشت. همانطور که در این مقاله توضیح دادیم، این سازوکار وظیفۀ مهم توزیع بار بین سرورهای مختلف را بر دوش میکشد؛ کنندۀ کار هم لود بالانسر نام دارد و نمیگذارد بهخاطر شلوغی بیش از حد شبکه، سرورها پایین بیایند و سرویس از دسترس خارج شود.
علاوهبر تعریف این مفهوم و لود بالانسر، راجعبه مزایای این سیستم و البته الگوریتمهای رایج آن هم صحبت کردیم تا بتوانیم تمام اطلاعاتی که در این باره نیاز دارید را در اختیارتان قرار دهیم. امیدواریم توانسته باشیم به هدف خود برسیم.
اگر همچنان پرسشی در این زمینه دارید، همین زیر منتظرتان هستیم.
منابع: IBM | Cloud Flare | AWS
دیدگاه ها
اولین نفری باشید که دیدگاه خود را ثبت می کنید