یکی از تکنولوژیهایی که برای مدیریت بهتر سرور استفاده میشود، لود بالانسر است. این ابزار، باعث بهبود امنیت و کارایی سرور میشود و برای توزیع بار بین سرورها طراحی شده است. در این مطلب، میخواهیم به طور کامل دربارهی لودبالانسر، نحوه کار، الگوریتمها و انواع آن صحبت کنیم.
لودبالانسر چیست؟
در این قسمت، میخواهیم دربارهی اینکه Load balancing چیست و چه کاری انجام میدهد صحبت کنیم. لودبالانسر، نرمافزار یا سختافزاری است که بر روی دستگاهی که توزیع اتصالات از مشتریان را بین مجموعهای از سرور مجازی انجام میدهد، نصب میشود. لودبالانسرها به عنوان یک پروکسی معکوس (reverse-proxy) عمل میکنند تا سرورهای کاربردی را از طریق آدرس IP مجازی (یا همان VIP) به کلاینت نشان دهند.
به این فناوری، لودبالانسر سرور (SLB) گفته میشود. SLB برای کار با مجموعهای از سرورهای کاربردی در یک وبسایت یا شبکهی محلی (LAN) طراحی شدهاست.
یکی از مزایای لودبالانسر که ظرفیت سرور را فراتر از حد معمول میبرد، قابلیت دسترسپذیری و مقیاسپذیری است. در صورتی که سرورهای موجود به منابع بیشتری نیاز داشته باشند، لودبالانسر با استفاده از الگوریتمهای لودبالانسر، ترافیک را به آن سرورها هدایت میکند. اگر به منابع بیشتری نیاز شد، میتوان سرورهای اضافی را به مجموعه سرورها اضافه کرد.
یکی از قابلیتهای لودبالانسر، بررسی سلامت (health check) است. لودبالانسر، برنامه را روی سرور بررسی میکند تا از دردسترسبودن آن مطمئن شود. اگر بررسی سلامت ناموفق باشد، آن برنامه توسط لودبالانسر از مجموعه سرورهای موجود حذف میشود. پس از اینکه برنامه دوباره آنلاین شد، بررسی سلامت آن را تأیید میکند و دوباره آن سرور در استخر سرورهای دردسترس قرار میگیرد.
از آنجایی که Load Balancer رابط بین سرویسگیرنده و برنامهی کاربردی است و اتصال را مدیریت میکند، میتواند طیف وسیعی از کارها مانند سوییچ محتوا، برقراری امنیت مبتنی بر محتوا مانند فایروال برنامههای کاربردی وب (WAF)، بهبود احراز هویت و غیره را انجام دهد.
لودبالانسر از چه چیزهایی پشتیبانی میکند؟
لودبالانسر برای دسترسپذیری مقیاسپذیری و امنیت برنامه طراحی شدهاست. این ابزار که یک پروکسی معکوس یا reverse proxy است، به عنوان یک سوپاپ چندمنظوره برای هدایت و کنترل ترافیک بین کلاینت و انواع سرورها مانند سرور اختصاصی عمل میکند.
برخی از مواردی که توسط لودبالانسر پشتیبانی میشوند، عبارتند از:
- شناسایی خودکار خرابیهای سرور و تغییر مسیر ترافیک کلاینت به سمت سرورهای در دسترس دیگر؛
- امکان نگهداری سرور بدون هیچ کار اضافی؛
- ارائه بازیابی خودکار اتفاقات طبیعی به سایتهای پشتیبان؛
- امکان اضافه و حذف کردن سرورهای برنامه بدون هیچ اختلالی؛
- نظارت و مسدود کردن محتوای مخرب.
نحوهی کار لود بالانسر – لود بالانسر چطور کار میکند؟
همانطور که قبلاً گفتیم، Load Balancer یک پروکسی معکوس است که یک آدرس IP مجازی (VIP) را به کلاینت ارائه میدهد. پس از اتصال کلاینت به VIP، لود بالانسر از طریق الگوریتمهای خود تصمیم میگیرد که اتصال را به یک نمونه برنامهی خاص در یک سرور ارسال کند یا نکند. در تمام مدت اتصال، لودبالانسر به مدیریت و نظارت بر اتصالی که ایجاد کرده، ادامه میدهد.
برای اینکه کار لودبالانسر را بهتر درک کنید، یک مثال میزنیم. فرض کنید یک مدیر برنامه میخواهد برای یک ستارهی جدید فوتبال، تیم باشگاهی پیدا کند و بین آنها قراردادی ببندد. مدیر برنامههای فوتبالیست، درخواست پیوستن به باشگاه را از فوتبالیست میگیرد و برای تیمی که به آن فوتبالیست علاقهمند است، ارسال میکند. تیم نیز پیشنهادات خود را به نماینده ارسال میکند و نماینده آن پیشنهادات را به فوتبالیست ارائه میدهد. این کار آنقدر انجام میشود تا تیم و فوتبالیست به توافق برسند و قرارداد بسته شود. در اینجا، مدیر برنامه نقش لود بالانسر را دارد.
مدیر برنامه میتواند بر اساس نقش خود در مکالمه، پیشنهادات اضافی را وارد معامله کند. به طور مثال، جزئیات خاصی مانند تعداد بادیگاردها (در اینجا همان امنیت سرورهایی مانند کلاسترینگ سرور است) را در نظر بگیرند یا خیر. همچنین، اشخاصی که با فوتبالیست به طور مستقیم صحبت میکنند (در اینجا میتواند احراز هویت باشد) را نیز میتوان مشخص کرد. همچنین، اگر تیم در یک فصل بازی نداشته باشد، مدیر برنامه میتواند بر سر اینکه فوتبالیست به لیگ دیگری ارسال شود یا خیر (در این مثال، همان دسترسپذیری سرورهای دیگر است) بحث کند.
انواع لود بالانسرها
برای اینکه به خوبی با انواع مختلف Load Balancer آشنا شوید، باید تاریخچهی آن را نیز بدانید.
لود بالانسر سرور شبکه (Network Server Load Balancers)
لودبالانسر در اواسط دههی 1990 برای افزایش ترافیک در اینترنت معرفی شد. این لودبالانسرها دارای یک عملکرد اساسی بودند که برای جمعکردن منابع سرور برای پاسخگویی به تقاضای افزایش ترافیک، طراحی شده بودند و اتصالات را بر اساس هدر بسته (packet header) مدیریت میکردند.
لودبالانسرهای سرور شبکه از یک هش 5 تایی که از IP منبع، IP مقصد، پورت منبع، پورت مقصد و پروتکل IP تشکیل شده، برای ترسیم جریانها به سرورهای موجود استفاده میکنند. این ورودی، به عنوان لودبالانسر سرور شبکه یا لود بالانسر لایهی 4 شناخته میشود. لود بالانسر لایهی 4 از اطلاعات تعریفشده در لایهی انتقال شبکه (یا همان لایه 4) به عنوان مبنایی برای تصمیمگیری در مورد نحوهی توزیع درخواستهای مشتری در میان گروهی از سرورها، استفاده میکند.
لود بالانسر اپلیکیشن (Application Load Balancers)
در طول این سالها، با پیشرفت تکنولوژی، لودبالانسرها نیز پیشرفت کردند و شروع به ارائه Content Awareness و تغییر محتوا میکنند. در حال حاضر، لود بالانسرها فراتر از هدرها رفته و به درون بار محتوا نگاه میکنند. به عبارتی دیگر، آنها میتوانند محتوا را درک کرده و آن را تغییر دهند. در واقع، لودبالانسرها برای تصمیمگیری دربارهی تعادل بار به محتواهایی مانند URL، هدر HTTP و سایر محتواها نگاه میکنند. به این لودبالانسرها، لود بالانسر کاربردی یا لود بالانسر لایهی 7 میگویند.
لود بالانسر سرور جهانی (Global Server Load Balancing)
در واقع، فناوری لود بالانسر سرور جهانی (به اختصار GSLB) متفاوت از لودبالانسرهای سنتی لایهی 4 و 7 است. این لود بالانسر مبتنی بر DNS است و به عنوان یک پروکسی DNS برای ارائهی پاسخها بر اساس الگوریتمهای لود بالانسر GSLB در زمان واقعی (real time) کار میکند. GSLB مدیریت و نظارت چندین سایت را از طریق پیکربندیها و بررسیهای سلامت انجام میدهد. امروزه، اکثر موارد استفاده از لودبالانسرها مربوط به GSLB میشود.
لود بالانسر سختافزاری، لودبالانسر نرمافزاری، لود بالانسر مجازی
در ابتدا، Load Balancerها به صورت سخت افزاری طراحی شده بودند. سخت افزار لودبالانسر، دستگاه سادهای است که برای نصب در دیتاسنتر طراحی شده است. این سخت افزارها ، راه حلهای کلیدیای هستند که به وابستگیهای خاصی نیاز ندارند.
با تکامل فناوریهای شبکه، فناوریهای دیگری نظیر فناوریهای مبتنی بر نرمافزار، مجازیسازی و فناوریهای ابری، رفته رفته جای فناوریهای سختافزاری را گرفتند. این راه حلهای از انعطافپذیری و توانایی بالاتری نسبت به فناوریهای سخت افزاری برخورداند. برخی از راه حلهای مبتنی بر ابر، نیازمند راه حلهای نرمافزاری هستند. محیطهای مبتنی بر نرمافزار نیز به دلیل انعطافپذیری و یکپارچگی بالا، اغلب از فرآیندهای DevOps یا CI/CD استفاده میکنند.
لودبالانسر الاستیک (Elastic Load Balancers)
لودبالانسر الاستیک (ELB) بسیار پیچیدهتر از سایر لودبالانسرهاست و به اپراتورهای محاسبات ابری (که دارای ظرفیت مقیاسپذیر بر اساس ترافیک در هر زمان هستند) خدمات ارائه میدهد. ELS با تغییر تقاضا در طول زمان، ترافیک یک برنامه را بر اساس تقاضا مقیاس میکند. از آنجایی که این لودبالانسر از الگوریتم مسیریابی درخواست برای توزیع ترافیک برنامهی ورودی در چندین نمونه یا مقیاسبندی آنها استفاده میکند، تحمل خطای برنامه افزایش مییابد.
الگوریتم لودبالانسر چیست؟
الگوریتمهای Load Balancer فرمولهایی هستند که تعیین میکنند هر اتصال به کدام کلاینت سرور ارسال شود. این الگوریتمها بسته به کاربرد و وظایفی که تعریف میکنند، میتوانند ساده یا بسیار پیشرفته باشند. هدف این الگوریتمها، ارسال اتصال مشتری به بهترین سرور برنامهی کاربردی است.
رایجترین الگوریتمی که برای لودبالانسرها استفاده میشود، least connection است. این الگوریتم، برای ارسال اتصال به سروری با بهترین عملکرد طراحی شده و بر اساس تعداد اتصالاتی که در یک زمان مدیریت میکند، شناخته میشود. least connection طول هر اتصال را فقط با مشاهدهی آنچه در حال حاضر روی سرور فعال است، در نظر میگیرد.
انواع الگوریتمهای لودبالانسر عبارتند از:
- Least Connection
- Round Robin
- Weighted Round Robin
- Weighted Least Connection
- Agent Based Adaptive Load Balancing
- Chained Failover (Fixed Weighted)
- Weighted Response Time
- Source IP Hash
- Software Defined Networking (SDN) Adaptive
جمعبندی
لود بالانسرها جزء ضروری زیرساخت مدرن هستند. آنها با اطمینان از اینکه برنامه ها می توانند به طور موثر به تقاضای زیاد کاربران پاسخ دهند، نقش مهمی در موفقیت کسب و کارهای آنلاین ایفا میکنند. با ادامه پیشرفت فناوری، لود بالانسرها همچنان به تکامل و نوآوری ادامه خواهند داد تا نیازهای روز افزون چالش برانگیز شبکه های مدرن را برآورده کنند.