اپلیکیشنهای امروزی نیاز دارند که به صورت روزانه هزاران درخواست همزمان را پشتیبانی کرده و برای هر کدام، متن، تصویر، ویدیو و یا به صورت کلی محتوای مرتبطی را ارسال کنند. برای انجام چنین کاری، اپلیکیشنها نیاز دارند که از منابع سخت افزاری زیادی استفاده کنند. در این صورت به خوبی میتوانند ترافیک ورودی را کنترل کرده و به کاربران سرویس ارائه دهند.
اما تخصیص منابع سخت افزاری زیاد، همیشه به این معنا نیست که همه چیز به خوبی پیش خواهد رفت. برای اینکه این منابع را به بهترین شکل مدیریت کنید و ترافیک ورودی را بین آنها تقسیم نمایید به تکنولوژی Load Balancing نیاز دارید.
لود بالانسینگ روشی برای توزیع ترافیک شبکه میان منابع موجودیست که به یک اپلیکیشن تخصیص داده شده است. برای پیادهسازی چنین تکنولوژی از دستگاهی تحت عنوان Load Balancer استفاده میشود که بین کاربران (Clients) و سرورها (Servers) قرار میگیرد.
البته لود بالانسر یک تکنولوژی Invisible بوده و کاربران ابدا از وجود چنین دستگاهی اطلاع پیدا نخواهند کرد. اما در نهایت کاربرد این دستگاه این است که یک توازن را در مصرف منابع سرورها برقرار کند.
لود بالانسینگ در فضای ابری
لود بالانسینگ ابری یا Cloud Load Balancing رویکردی نسبتا مدرن برای استفاده از تکنولوژی لود بالانسر در محیط ابری یا کلود است. تا حد زیادی کارایی کلی این سرویس مانند همان حالتهای سنتی است با این تفاوت که میتوان به عنوان یک سرویس (LBaaS) آن را تهیه کرد و از آن بهره برد.
با استفاده از این سرویس میتوانید مطمئن شوید که منابع ابری شما به خوبی بین درخواستها و ترافیکهای ورودی توزیع شده و کاربران بهترین تجربه استفاده از اپلیکیشن شما را خواهند داشت. این مکانیزم باعث میشود تا مشکلاتی مانند Overloading برای سرویسهای شما پیش نیاید.
استفاده درست از یک لود بالانسر در فضای ابری به سازمانها و استارتاپها این کمک را میکند تا میزان پرفورمنس اپلیکیشن و قابل اطمینان بودن آن را افزایش داده و همچنین میزان تاخیرها در پاسخگویی و نرخ Downtime را کاهش دهند.
تفاوت لود بالانسینگ در فضای ابری و لود بالانسینگ سنتی
به صورت کلی تفاوتی میان لود بالانسینگ ابری و لود بالانسینگ سنتی در کاری که نهایتا انجام خواهد شد، وجود ندارد. اما در نحوه پیادهسازی و تهیه کردن آن تفاوتهای اساسی و البته مهمی هست:
در لود بالانسینگ سنتی شما از یک رویکرد مبتنی بر سخت افزار استفاده میکنید. به این معنا که شما دستگاه Load Balancer را تهیه میکنید، یک تیم IT استخدام کرده و به آنها وظایفی مانند نصب لود بالانسر، نگهداری، تعمیر و… را میدهید. تمام این کارها باید در فضای دیتاسنتر انجام شود.
همانطور که میبینید، استفاده از این روش دردسرها و چالشهای خود را دارد که در بیشتر حالتهای مقرون به صرفه و یا در دسترس نیست.
اما لود بالانسینگ در فضای ابری به شیوهای دیگر پیش میرود. در فضای ابری، لود بالانسر یک تکنولوژی نرمافزاری است که شما آن را برای منابع خود خریداری میکنید. در نتیجه نیازی به داشتن تیم IT و تعمیر و نگهداری از یک دستگاه سخت افزاری ندارید.
بیشتر سرویسدهندگان خدمات ابری چنین سرویسی را تحت عنوان LBaaS یا Load Balancer as a Service ارائه میدهند. اغلب استارتاپها و شرکتهای کوچک-متوسط نیز میتوانند از چنین سرویسی استفاده کنند.
انواع لود بالانسینگ در فضای ابری
به صورت کلی لود بالانسرهای مربوط به فضای ابری، به چهار نوع تقسیم میشوند:
لود بالانسر اپلیکیشن
این نوع از لود بالانسر با مشاهده محتوای درخواستها، ترافیک ورودی را مدیریت میکند. برخی از این موارد HTTP headerها و SSL Session IDها هستند.
لود بالانسر شبکه
این نوع از لود بالانسر برای مدیریت ترافیک از منابعی مانند IP Addressها و دیگر اطلاعات مربوط به شبکه استفاده میکند.
لود بالانسر سرور جهانی
این نوع از لود بالانسر کارکردی شبیه به CDN دارد. به این معنا که درخواستها را بین سرورهایی توزیع میکند که بیشتر نزدیکی جغرافیایی را با کاربر دارد.
لود بالانسر DNS
این نوع از لود بالانسر ترافیک ورودی را بین مجموعهای از منابع مربوط به یک دامنه (Domain) توزیع میکند.
مزایای استفاده از لود بالانسینگ
استفاده از یک لود بالانسر مزایای بسیار زیادی را برای کسب و کار شما فراهم خواهد کرد. به صورت کلی لود بالانسینگ ترافیک ورودی را بین سرورهای مختلف توزیع میکند و این تکنیک باعث میشود تا میزان در دسترس بودن و بهرهوری اپلیکیشنتان بیشتر شود. در ادامه به صورت کاملتر با مزایا اصلی لود بالانسینگ آشنا خواهیم شد.
افزایش میزان در دسترس بودن
بیشتر ما با وبسایتهای دولتی در زمان ثبتنام خودرو، کنکور، انتخاب واحد و… تعامل برقرار کردهایم و بسیاری از ما این جمله که «سایت از کار افتاده» را شنیدهایم.
زمانی که کاربران بسیار زیادی به صورت همزمان به سرور اصلی وبسایت یا اپلیکیشن شما مراجعه میکنند، حجم ترافیک ورودی را افزایش میدهند. در چنین حالتی فشار زیادی به سرور اصلی وارد شده و سرور نمیتواند به خوبی پاسخگو باشد. بنابراین سرور از کار میافتد و وبسایت یا اپلیکیشن شما باز نخواهد شد.
لود بالانسر در این فرایند به صورت خودکار حجم ترافیک بالا را تشخیص داده و درخواست کاربران را بجای اینکه روی یک سرور متمرکز کند، به منابع و سرورهای دیگر ارسال میکند. این کار در نهایت باعث میشود تا سرور اصلی به کار خود ادامه داده و وبسایت در دسترس بماند.
افزایش مقیاسپذیری
زمانی که بخواهید تغییری در سرور اصلی یا هر بخش از منابعتان ایجاد کنید، باید به کاربرانتان خبر دهید که سرور در فلان بازه زمانی در دسترس نخواهد بود. اما با استفاده از لود بالانسینگ اگر یکی از سرورهای شما از کار بیفتد و یا بخواهید آن را از دسترس خارج کنید (تا تغییراتی در آن ایجاد کنید)، کل وبسایت و اپلیکیشن شما از کار نخواهد افتاد، بلکه لود بالانسر درخواستهای کاربران را به منابع دیگری ارسال میکند.
بهبود امنیت
یکی از مزیتهای کلیدی استفاده از لود بالانسینگ، افزودن یک لایه امنیتی جدید به اپلیکیشن است. در تکنولوژی لود بالانسینگ یکسری ویژگیهای امنیتی پیادهسازی شده که در برابر برخی از حملات به ترافیک شبکه مقابله میکند.
یکی از این حملات DDoS است که در آن فرد هکر، میلیونها درخواست همزمان را به یک وبسایت ارسال کرده و منجر به از کار افتادن آن میشود. لود بالانسر در این حالت میتواند به خوبی این حمله را تشخیص داده و درخواستهای همزمان را مسدود یا منتقل کند.
همچنین با استفاده از لود بالانسینگ شما امکان مانیتور ترافیک ورودی و درخواستهای مشکوک را خواهید داشت.
بهبود پرفورمنس و کارایی
با کاهش میزان تاخیر در پاسخگویی به درخواستها، لود بالانسینگ به اپلیکیشن شما کمک میکند تا کارایی و پرفورمنس بالاتری را تجربه کنید. توزیع ترافیک بین منابع مختلف، استفاده از نزدیکترین سرورها برای پاسخدهی به کاربران براساس موقعیت جغرافیایی و استفاده بهینه از منابع فیزیکی و مجازی، از جمله دلایلی هستند که باعث میشوند میزان پرفورمنس اپلیکیشن شما افزایش یابد.
لود بالانسینگ در فضای ابری چطور کار میکند؟
شرایطی را تصور کنید که در رستوران هستید و هر کسی که میزی را رزرو کرده میتواند انتخاب کند که چه کسی به وی سرویس ارائه دهد. در این حالت اگر همه میزها بین ۵ گارسون یک نفر را انتخاب کنند، باید منتظر بمانند تا این گارسون بهنوبت به همه آنها سرویس دهد. این در حالی است که در این مدت بقیه گارسونها کاری نمیکنند.
حال همین شرایط را در دنیای اپلیکیشنها تصور کنید. همه کلاینتها به صورت پیشفرض به یک سرور ریدایرکت میشوند و منابع موجود دیگر، بدون استفاده باقی میمانند. لود بالانسینگ در این شرایط سرور و منابعی که از قبل تهیه کردهاید را به کار میگیرد و نمیگذارد که همه کلاینتها به یک سرور درخواستها را ارسال کنند.
لود بالانسر در این حالت مانند یک مدیر رفتار میکند و به گارسونها دستور میدهد تا به صورت جداگانه سفارش میزهای مختلف را تحویل بگیرند.
الگوریتمهای لود بالانسینگ
منظور از الگوریتمهای لود بالانسینگ، قواعد و دستوراتی است که براساس آنها شیوه کاری لود بالانسر تعیین میشود. در واقع هر کدام از این الگوریتمها تلاش میکنند تا بهترین و بهینهترین رویکرد را برای انجام کارها اتخاذ کنند.
به صورت کلی این الگوریتمها در دو دستهبندی قرار میگیرند: Static و Dynamic.
لود بالانسینگ استاتیک
الگوریتمهای استاتیک یا ثابت شامل مجموعهای از قواعد میشوند که همواره ثابت بوده و براساس وضعیت سرور تغییر نمیکنند. برخی از روشهایی که برای پیادهسازی این الگوریتم استفاده میشوند را در ادامه مشاهده میکنید:
Round-robin
این متد سادهترین حالت ممکن برای توزیع منابع بین درخواستهای مختلف است. در این حالت، هر درخواست به صورت ترتیبی به یکی از سرورهای موجود ارسال میشود.
Weighted round-robin
این متد به نسبت حالت قبلی کمی هوشمندانهتر عمل میکند. در این حالت شما میتوانید برای سرورها براساس سخت افزاری که دارند یک امتیاز یا اولویت برای انجام درخواستها تعیین کنید. سروری که اولویت بیشتری دارد، درخواستهای بیشتری را پاسخ خواهد داد.
IP hash
در این روش، آیپی کاربر به یک عدد تبدیل شده (از طریق عملیات هشینگ) و بعد به سرورهای منحصر به فردی ریدایرکت میشود.
لود بالانسینگ داینامیک
در الگوریتم داینامیک یا پویا برخلاف حالت قبلی، ابتدا وضعیت سرورها بررسی شده و سپس فرایند توزیع ترافیک شروع به کار میکند. در زیر روشهایی برای پیادهسازی این الگوریتم را مشاهده میکنید:
Least connection
در این روش، ابتدا وضعیت سرورها بررسی میشود و سپس ترافیک به سوی سروری ارسال میشود که کمترین درخواست/ارتباط باز یا Open Connection را دارد.
Weighted least connection
از آنجایی که ممکن است برخی از سرورها منابع بیشتری در اختیار داشته باشند، میتوانید برای هر سرور یک اولویت قرار دهید. در این صورت در کنار میزان ارتباط باز هر سرور، اولویت آن نیز در نظر گرفته میشود.
Least response time
در این متُد سرورهایی که در سریعترین زمان ممکن به درخواستها پاسخ میدهند انتخاب شده و ترافیک به آنها ارسال میشود.
Resource-based
در این روش ابتدا میزان منابع آزاد یک سرور بررسی میشود و سپس براساس اینکه آیا منابع کافی برای مدیریت ترافیک جدید را دارد یا خیر، ارزیابی میشود. در صورتی که سرور منابع لازم را داشته باشد، ترافیک به سمت وی ارسال خواهد شد.
استفاده از لود بالانسینگ در همروش
همروش در کنار دهها سرویس و ویژگی تخصصی که دارد، به شما این قابلیت را میدهد تا برای اپلیکیشنهای خود از سرویس لود بالانسر استفاده کنید. برای بررسی کامل این سرویس به قسمت مستندات رسمی مراجعه نمایید.
جمعبندی
لود بالانسینگ تکنیکی برای توزیع ترافیک بین سرورهای مختلف است. اگر وبسایت یا اپلیکیشنی با نرخ بازدید بالایی دارید و میخواهید نرخ Downtime کمتری داشته باشید، حتما از یک سرویس لود بالانسینگ استفاده کنید.
البته این موضوع را در نظر داشته باشید که بدون داشتن منابع کافی، استفاده از لود بالانسر بی معنی بوده و عملا کاری را انجام نخواهد داد.
در این مطلب از وبلاگ همروش ما با چیستی لود بالانسر، مزایا، ساختار و الگوریتمهای مختلف آن آشنا شدیم و همچنین با سرویس لود بالانسر در فضای ابری آشنا شدیم.