لود بالانسینگ چیست؟
"لود بالانسینگ یا متعادل کننده بار فرآیند توزیع بارهای کاری محاسباتی بین دو یا چند سرور در شبکه است که عملکرد سرورها را بهبود میبخشد"
لود بالانسینگ یا متعادل کننده بار چیست؟
لود بالانسینگ (Load Balancing)، فرآیند توزیع بارهای کاری محاسباتی بین دو یا چند کامپیوتر است. در اینترنت، لود بالانسینگ اغلب برای تقسیم ترافیک شبکه بین چندین سرور استفاده می شود. این کار فشار روی هر سرور را کاهش میدهد و سرورها را کارآمدتر میکند و باعث افزایش سرعت عملکرد و کاهش تأخیر میشود. تعادل بار برای اکثر برنامه های کاربردی اینترنتی برای عملکرد صحیح ضروری است.
لود بالانسینگ چگونه کار میکند؟
لود بالانسیگ توسط ابزار یا برنامه مبتنی بر سخت افزار یا نرمافزارر به عنوان لود بالانسر (Load Balancer) انجام میشود. لود بالانسرهای سخت افزاری نیاز به نصب یک دستگاه لود بالانسینگ اختصاصی دارند اما لود بالانسرهای نرمافزاری را میتوان روی سرور، ماشین مجازی و یا در میزبانیهای ابری اجرا کرد. علاوه بر این، اکثر شبکههای توزیع محتوا (CDN) از ویژگی لود بالانسینگ پشتیبانی میکنند. هنگامی که درخواست یک کاربر توسط تکنولوژی لود بالانسینگ به سرورها میرسد، لود بالانسر درخواست کاربر را از میان چند سرور به یک سرور معین اختصاص میدهد و این فرایند برای دیگر درخواستها نیز تکرار میشود. لود بالانسر براساس برخی الگوریتمها تعیین میکند که کدام سرور مسئول رسیدگی به درخواست کدام کاربر است این الگوریتمها به دو دسته اصلی استاتیک و داینامیک تقسیم میشوند.
الگوریتمهای لود بالانسینگ استاتیک
الگوریتمهای لود بالانسینگ استاتیک، بارهای کاری را بدون در نظر گرفتن وضعیت فعلی سیستم توزیع میکند. الگوریتمهای لود بالانسینگ استاتیک از اینکه کدام سرورها کند عمل میکنند و کدام سرورها به اندازه کافی استفاده نمیشوند، مطلع نیست. در عوض بارهای کاری را بر اساس یک برنامه از پیش تعیین شده اختصاص میدهد. لود بالانسینگ استاتیک، سریع انجام میشود، اما میتواند منجر به ناکارآمدی شود.
در مقیاس بالا، تصور کنید که یک فروشگاه مواد غذایی با 8 خط صندوقِ باز، کارمندی داشته باشد که وظیفه او هدایت مشتریان به داخل خطوط است. تصور کنید این کارمند به صورت ساده بدون اینکه به عقب نگاه کند و ببیند خطوط با چه سرعتی حرکت میکنند، به ترتیب پیش میرود و مشتری اول را به خط یک، مشتری دوم را به خط دوم و ... اختصاص می دهد. اگر 8 صندوقدار همگی کارآمد عمل کنند، این سیستم به خوبی کار خواهد کرد اما اگر یک یا چند صندوق عقب باشند، ممکن است برخی از خطوط به مراتب طولانیتر از بقیه شوند و در نتیجه تجربیات بدی برای مشتری ایجاد شود. لود بالانسینگ استاتیک خطراتی مانند بار بیش از حد برای یک سرور به همراه داشته باشد. الگوریتمهای client-side random و Round robin DNS دو شکل متداول برای لود بالانسینگ استاتیک هستند.
الگوریتمهای لود بالانسینگ داینامیک
الگوریتمهای لود بالانسینگ داینامیک برای توزیع ترافیک برخی شاخصهها مانند در دسترس بودن سرور، حجم کاری و سلامت هر سرور را درنظر میگیرند. آنها میتوانند ترافیک را از سرورهای پربار یا ضعیف به سرورهای کم استفاده منتقل کنند و توزیع را یکنواخت و کارآمد نگه دارند. با این حال راهاندازی لود بالانسینگ داینامیک پیچیدهتر میشود زیرا شاخصههای مختلفی باید بررسی شوند. برای مثال در دسترس بودن سرور به عوامل مختلفی مانند سلامت، ظرفیت کلی هر سرور، اندازهی ترافیک در حال توزیع و … وابسته است.
فرض کنید کارمند خواربارفروشی که مشتریان را در ردیف های پرداخت طبقه بندی می کند از رویکرد پویاتری استفاده می کند: کارمند خطوط را با دقت تماشا می کند، می بیند که کدامیک سریعتر حرکت می کنند، مشاهده می کند که هر مشتری چند خواروبار خریداری می کند، و مشتریان را بر این اساس اختصاص می دهد. این ممکن است تجربه کارآمدتری را برای همه مشتریان تضمین کند، اما همچنین فشار کاری بیشتری را بر کارمند مرتبسازی خط وارد میکند.
انواع مختلفی از الگوریتمهای لود بالانسینگ داینامیک مانند least connection، weighted least connection، resource-based و geolocation-based load balancing وجود دارد.
لود بالانسینگ در کجا استفاده میشود؟
همانطور که در بالا توضیح داده شد، لود بالانسینگ برای برنامههای کاربردی وب استفاده میشود. لود بالانسینگ مبتنی بر نرمافزار و کلود به توزیع یکنواخت ترافیک اینترنت بین سرورهای میزبان برنامه کمک می کند. برخی از محصولات متعادل کننده بار ابری می توانند بارهای ترافیک اینترنت را در سرورهایی که در سراسر جهان پخش شده اند متعادل کنند، فرآیندی که به عنوان Global Server Load Balancing (GSLB) شناخته میشود.
لود بالانسینگ نیز معمولاً در شبکه های محلی بزرگ مانند شبکه های موجود در یک مرکز داده یا یک مجتمع اداری بزرگ استفاده می شود. ه طور سنتی، این امر مستلزم استفاده از وسایل سخت افزاری مانند Application Delivery Controller (ADC) یا یک دستگاه لود بالانسینگ اختصاصی است. برای این منظور از لود بالانسرهای مبتنی بر نرم افزار نیز استفاده می شود.
مانیتورینگ سرور
لود بالانسرهای پویا از سلامت سرور مانند وضعیت فعلی، نحوه عملکرد و ... آگاه هستند. لود بالانسرهای پویا با انجام بررسی های منظم سلامت سرورها را کنترل میکنند. اگر سرور یا گروهی از سرورها به کندی کار می کنند، لود بالانسر بار ترافیک کمتری را به آن توزیع می کند. اگر سرور یا گروهی از سرورها به طور کامل از کار بیفتد، لود بالانسر ترافیک را به گروه دیگری از سرورها تغییر مسیر می دهد، فرآیندی که به عنوان "failover" شناخته می شود.
Failover چیست؟
Failover زمانی اتفاق میافتد که یک سرور معین کار نمیکند و یک لود بالانسر فرآیندهای عادی خود را در یک سرور ثانویه یا گروهی از سرورها توزیع میکند. خرابی سرور برای قابلیت اطمینان بسیار مهم است؛ اگر پشتیبانگیری وجود نداشته باشد، خرابی سرور میتواند یک وبسایت یا برنامه را از بین ببرد. مهم است که Failover به سرعت انجام شود تا از شکاف در سرویس جلوگیری شود.