CDN ابری

آشنایی با توزیع بار یا load balancing

shahin شاهین نوعی
21 بازدید | 0 دیدگاه | 23 تیر 1401
/storage/post-images/1654283508_2022-06-03_blog_post_12-8.png
سرفصل های مهم
آشنایی با توزیع بار یا load balancing

توزیع بار فرآیند پخش ترافیک شبکه ای بین چندین سرور است که از این موضوع اطمینان حاصل شود که یک سرور به تنهایی تمام بار ترافیکی را بر دوش نکشیده و حجم بار بین تمام سرورهای متصل در شبکه به طور یکسان و منطقی تقسیم می شود. در این پست به طور کامل در مورد نحوه عملکرد و الگوریتم های فرآیند توزیع بار توضیحاتی ارائه خواهد شد.

توزیع بار یا load balancing در واقع عمل پخش بار فعالیت های پردازشی و محاسباتی بین دو یا چند کامپیوتر یا سرور است. در دنیای اینترنت، توزیع بار اغلب برای تقسیم ترافیک شبکه ای بین چندین سرور مورد استفاده قرار می گیرد. این روش، فشار وارده بر هر سرور را کاهش داده و اثربخشی و کارایی آنها را بهبود می بخشد. بعلاوه باعث افزایش سرعت عملکرد و کاهش تأخیر در پاسخ دهی آنها خواهد شد.

در نتیجه توزیع بار جزئی حیاتی برای موفقیت اپلیکیشن های اینرنتی به شمار می آید.

تصویر کنید که در یک فروشگاه زنجیره ای، 8 گیت پرداخت وجود داشته باشد اما فقط یکی از آنها باز باشد. پس در چنین شرایطی تمام مشتریان می بایست در یک صف طولانی برای پرداخت منتظر بمانند. در طرف مقابل اگر فروشگاه تمام 8 گیت پرداخت را فعال کند، زمان انتظار برای مشتریان تقریباً 8 برابر کمتر خواهد شد.

توزیع بار نیز اساساً همین کار را انجام می دهد؛ به طوری که با توزیع و تقسیم درخواست های کاربران بین چندین سرور، مدت زمان انتظار کاربران به طرز قابل توجهی کاهش خواهد یافت. این موضوع تجربه کاربری را به شدت تحت تأثیر قرار خواهد داد. در مثال فروشگاه زنجیره ای، اگر مشتریان مدت زمان زیادی را در صف منتظر بمانند، برای خریدهای بعدی خود به همان فروشگاه مراجعه نخواهند کرد. این امر دقیقاً برای وبسایت ها و اپلیکیشن ها نیز صدق کرده و در صورتی که کاربران برای دریافت پاسخ از سمت سرور، زمان زیادی در انتظار بمانند، سایت را ترک کرده و به سایت دیگری مراجعه می کنند.

نحوه عملکرد توزیع بار ( load balancing )

توزیع بار توسط یک ابزار یا اپلیکیشن به نام load balancer انجام و مدیریت می شود. این توزیع کننده بار می تواند یک نرم افزار و یا یک سخت افزار باشد. Load balancer های سخت افزاری به نصب یک دستگاه توزیع بار اختصاصی نیاز دارند، در حالی که مدل نرم افزاری می تواند بر روی یک سرور، یک دستگاه مجازی، و یا در ابرها ( کلود ) نیز نصب شود. اکثر سرویس های شبکه توزیع محتوا ( CDN ) از قابلیت توزیع بار برخوردارند؛ از جمله CDN میزبان کلود.

زمانی که درخواستی از یک کاربر ارسال می شود، توزیع کننده بار، وظیفه پاسخ دهی به درخواست را به سرور مورد نظر خود تخصیص می دهد؛ و این پروسه برای هر درخواستی تکرار می شود. Load balancer ها مشخص می کنند که در هر بار دریافت درخواستی از سمت کاربر، کدام سرور به آن پاسخ دهد. این تصمیم گیری بر مبنای تعدادی مشخصه در الگوریتم های مختلف اتخاذ می شود. این الگوریتم ها به دوسته استاتیک و داینامیک ( ایستا و پویا ) تقسیم می شوند.

الگوریتم های استاتیک یا ایستا در توزیع بار

الگوریتم های استاتیک توزیع بار، حجم کاری درخواست ها را بدون در نظر گرفتن وضعیت فعلی سیستم، بین سرورها پخش می کند. به عبارت دیگر، توزیع کننده بار، از وضعیت ضعیف عملکردی یک سرور و خالی بودن وظایف محوله به سروری دیگر، آگاه نبوده و بار ترافیکی را بر اساس برنامه ای از قبل تنظیم شده، بین سرورها توزیع می کند.

این رویکرد استاتیک نصب و راه اندازی آسانی داشته، اما ممکن است عملکرد و نتیجه ایده آلی نداشته باشد.

بگذارید به مثال فروشگاه زنجیره ای برگردیم، فرض کنید فروشگاه فردی را برای هدایت مشتریان به سمت 8 گیت پرداخت فعال استخدام کند. و فرض کنید کنید این مستخدم این عمل به صورت ترتیبی و مرتب انجام دهد، یعنی مشتری اول به سمت گیت اول، مشتری دوم به سمت گیت دوم و ...؛ و به این نکته توجه نکند که کدام گیت ترافیک بیشتری داشته و کدام گیت سرعت بالاتری در پاسخ دهی و عبور مشتریان دارد.

این روش زمانی جواب خواهد داد که هر 8 صندوق دار به طور موثر و یکسانی عمل کنند. اما اگر یک یا چند صندوق دار سرعت پایین تری داشته و از سایرین عقب بیافند، برخی از صف ها از سایرین طولانی تر شده و ترافیک مشتریان زمان پاسخ دهی را کند خواهد کرد. که مجدداً منجر به نارضایتی مشتریان و تجربه بدی خواهد شد.

توزیع بار استاتیک نیز دقیقاً همین ریسک ها را به همراه خواهد داشت و ممکن است یک سرور بار سنگین تری از تحملش را بر دوش بکشد. دو مدل توزیع بار round robin و client-side random از روش های مرسوم در توزیع بار استاتیک به شمار می آیند.

الگوریتم های داینامیک یا پویا در توزیع بار

الگوریتم های توزیع بار داینامیک مواردی نظیر در دسترس بودن یک سرور، حجم بار، و سلامت سرور را در تصمیمات خود لحاظ می کنند. به طوری که لود بالانسرهای داینامیک، ترافیکی که بر دوش سرورهای ضعیف تر و شلوغ تر است را به سمت سرورهای بلا استفاده و قوی تر، هدایت می کنند. در نتیجه عملیات توزیع بار موثرتر و بهینه تر انجام خواهد شد.

البته پیکربندی یا کانفیگ لود بلنسرهای داینامیک کمی دشوارتر است. فاکتورهای زیادی در معیار در دسترس بودن یک سرور نقش دارند، از جمله سلامت، و ظرفیت کلی هر سرور، اندازه وظایف یا تسک های توزیع شده و غیره.

فرض کنید در مثال فروشگاه، فردی استخدام شود که از رویکرد پویاتری برای هدایت مشتریان به سمت گیت ها استفاده کند؛ این مستخدم با دقت بالا صف های جلوی هر گیت را رصد کرده و بررسی می کند که کدام گیت سریعتر عمل می کند؛ و یا این موضوع را نیز در نظر می گیرد که هر مشتری چه میزان محصول خریداری کرده و در سبد خود حمل می کند، و سپس مشتریان را با توجه به این مسائل به سمت گیت صحیح راهنمایی می کند.

این روش قطعاً نسبت به رویکرد استاتیک قبلی، رضایت مشتری بیشتری به همراه داشته و تجربه آنها از خرید را در سطح بالایی نگه خواهد داشت. البته نسبت به فرد قبلی فشار بیشتری بر مستخدم پویاتر خواهد آمد.

الگوریتم های توزیع بار داینامیک زیادی موجود هستند که معروف ترین آنها عبارتند از کمترین اتصالات یا least connection، کمترین اتصالات وزنی یا weighted least connection، منبع محور یا resource-based، و توزیع بار موقعیت محور ( geolocation-based ).

توزیع بار در کجا استفاده می شود؟

 همانطور که اشاره شد، توزیع بار اغلب با وب اپلیکیشن ها مورد استفاده می گیرد. لود بلنسرهای نرم افزاری یا تحت وب ( ابری )، به صاحبین وب اپلیکیشن ها کمک می کنند تا ترافیک اینترنتی را به طور پیشرفته تر و متوازن تری بین سرورهایی که میزبان سایت یا اپلیکیشن شان هستند، توزیع و پخش کنند.

 برخی از محصولات توزیع کننده بار ابری می توانند ترافیک اینترنتی را بین سرورهایی توزیع کنند که از لحاظ جغرافیایی در نقاط مختلفی از جهان قرار دارند؛ فرآیندی به نام توزیع بار سرورهای جهانی یا GSLB ( global server load balancing ).

البته توزیع بار درون شبکه های محلی بزرگ نیز مورد استفاده قرار می گیرد، مثل شبکه های درون دیتاسنترها یا مجتمع های اداری بزرگ؛ هرچند در گذشته این کار به سخت افزارهای خاصی مثل ADC (application delivery controller ) یا یک دستگاه توزیع بار اختصاصی نیاز داشت؛ اما امروز بیشتر از توزیع کنندگان نرم افزاری استفاده می شود.

شاید جالب باشد که بدانید توزیع بار کار خود را از دهه 1990 به عنوان یک سخت افزار توزیع ترافیک درون یک شبکه شروع کرد. اما پس از مدتی، سازمان‌ها تصمیم گرفتند قابلیت در دسترس بودن برنامه‌های کاربردی یا اپلیکیشن های فعال بر روی سرورها را بهبود بخشند. در نهایت، توزیع بار، با ظهور کنترل‌کننده‌های تحویل اپلیکیشن ( ADC ) مسئولیت‌های بیشتری را متحمل شدند. به طوری که از آن زمان به بعد، آنها امنیت را نیز همراه با دسترسی یکپارچه به برنامه‌ها تامین کردند.

مانیتورینگ سرور چیست؟

لود بلنسرهای داینامیک باید دائماً از سلامت سرورها، وضعیت فعلی شان، نحوه عملکردشان و غیره مطلع باشند. توزیع کنندگان بار داینامیک از طریق تست های سلامت یا سلامت سنجی های مکرر، سرورها را تحت نظر دارند. به طوری که اگر سرور یا گروهی از سرورها عملکرد کندی داشته باشد، توزیع کننده بار ترافیکی کمتری به سمت آنها هدایت خواهد کرد. اگر یک یا چند سرور به طور کلی از دسترس خارج شوند نیز توزیع کننده ترافیک را مجدداً به سمت گروهی فعال و در دسترس هدایت خواهد کرد. به این پروسه Failover گویند.

توزیع بار در CDN میزبان کلود

پس از فعالسازی شبکه توزیع محتوا (CDN) میزبان کلود، سرورهای لبه یا Edge میزبان کلود میان منبع اصلی میزبان سایت شما و کاربران نهایی تان قرار خواهند گرفت که در ادامه ترافیک و درخواست های کاربران توسط سرورهای لبه میزبان کلود دریافت شده، و پس از وارسی های امنیتی، پاسخ داده خواهند شد. حال اگر شما برای وب سایت یا اپلیکیشن خود از چند سرور برای میزبانی استفاده ‌کنید، هنگام دریافت درخواست های داینامیک، ترافیک ورودی پس سرورهای لبه میزبان کلود، به کمک " توزیع بار " میان سرورهای اصلی میزبان سایت شما، توزیع خواهند شد.

الگوریتم های توزیع بار

روش های متفاوتی در توزیع بار مورد استفاده قرار می گیرند که از الگوریتم های مختلفی برای تصمیم گیری در خصوص هدایت ترافیک به سمت یک سرور استفاده می کنند.

روش کمترین اتصالات ( Least Connection ): این روش ترافیک سایت یا اپلیکیشن را به سمت سروری هدایت خواهد کرد که کمترین تعداد کانکشن یا اتصال را در آن لحظه داشته باشد. این روش زمانی کاربرد موثری دارد که تعداد اتصالات زیادی مکرراً در ترافیک های ورودی برقرار شده و به طور نابرابر بین سرورها توزیع می شوند.

روش کمترین زمان پاسخ دهی ( Least Response Time ): این روش ترافیک را به سمت سروری با کمترین تعداد اتصالات فعال و کمترین میانگین زمان پاسخ دهی هدایت خواهد کرد.

روش Round Robin: این روش ترافیک را به صورت نوبتی بین سرورها توزیع می کند؛ به طوری که ترافیک را به اولین سرور موجود ارسال کرده و سپس آن سرور را به انتهای لیست ( صف ) سرورها  منتقل می کند. این روش زمانی مناسب است که سرورها از قدرت و مشخصات یکسانی برخوردار باشند و البته ترافیک و اتصالات پیاپی زیادی در جریان نباشد. به عبارت دیگر در روش round robin، توزیع بار درون شبکه، درخواست های کاربران را به ترتیب دریافت آنها بین وب سرورها توزیع و پخش می کند. برای مثال اگر شرکتی دارای کلاستری از 3 سرور باشد، اولین درخواست به سمت سرور 1، دومین درخواست به سرور 2 و درخواست سوم به سرور 3 ارسال و هدایت خواهد شد.

روش IP Hash: در این روش آدرس IP کاربر در انتخاب سرور پاسخ دهنده اصلی ترین نقش را خواهد داشت. به عبارت دیگر توزیع بار ip hash از الگوریتمی استفاده می کند که منبع و مقصد یک آدرس IP را برای تولید یک کلید Hash منحصر به فرد در نظر می گیرد. از این کلید برای اختصاص کاربر ( کلاینت ) به یک سرور مشخص استفاده می شود. از آنجایی این کلید در هر بار برقراری اتصال ( ایجاد سشن جدید ) مجدداً تولید می شود، این روش توزیع بار، کاربر را مجدداً به سمت همان سرور ( سروری که اولین بار متصل شده بود ) هدایت می کند. این امر زمانی اهمیت دارد که اتصال کاربر به هر دلیلی قطع شده و بخواهیم کاربر مجدداً به همان سرور session قبلی خود متصل شود.

روش کمترین اتصالات وزنی ( weighted least connections ): الگوریتم های این روش، یک لیست وزنی از سرورها را با تعداد کانکشن های فعالشان نگهداری می کنند. این روش یک درخواست ورودی جدید را طبق ترکیبی از وزن یا اولویت اختصاص یافته و تعداد اتصالات فعال به سمت سرور مورد نظر هدایت می کند. این الگوریتم محاسبات بیشتری را انجام داده و باعث افزایش اثربخشی پروسه هدایت ترافیک به سمت سرورها خواهد شد.

روش Weighted Round Robin: الکوریتم این روش نیز، یک لیست وزنی از سرورها را نگهداری کرده و اتصالات جدید را بر حسب وزن و ارجحیت هر سرور به سمت آنها هدایت می کند. این روش نیز با توجه به انجام محاسبات بیشتر، از روش round robin عادی، اثربخشی بالاتری دارد.

روش اولین زنده ( First Alive ): الگوریتم موجود در این روش از مفهوم اولین سرور و سرورهای پشتیبان استفاده می کند. یعنی اولین سروری که در لیست اعضا وجود داشته و سرور پشتیبانی که در صورت از کار افتادن اولین سرور، وارد عمل می شود.

روش کمترین پهنای باند ( Least Bandwidth ): در این روش، لود بلنسر به میزان مصرف پهنای باند سرورها بر مبنای Mbps در 14 ثانیه آخر نگاه می کند؛ سروری که کمترین پهنای باند را مصرف می کند، برای هدایت کاربران در اولویت استفاده قرار می گیرد.

Failover چیست؟

Failover زمانی اتفاق می افتد که یک سرور آنطور که باید فعالیت نمی کند، و لود بلنسر فرآیندهای عادی خود را با سرورهای دیگر ادامه می دهد. Failover یک سرور برای اطمینان از در دسترس بودن سرویس ها حیاتی است. یعنی اگر پشتیبانی در کار نباشد، یک لحظه از دسترس خارج شدن سرور، می تواند کل سایت یا اپلیکیشن را به اصطلاح down کرده و صدمات جبران ناپذیری به کسب و کار وارد کند.

بنابراین باید از failover ها و جایگزین سرورها اطمینان حاصل کرد تا کوچکترین فاصله ای در سرویس دهی ایجاد نشود. توزیع بار باعث ارتقای سطح و توانایی پاسخ دهی و دسترسی پذیری وب سایت ها و اپلیکیشن ها شده و تجربه کاربری را برای برندها به طرز قابل توجهی بهبود خواهد بخشید.

در سرویس CDN میزبان کلود، با توزیع بار ترافیکی بین سرورهای متصل، درخواست ها مطابق با نوع توزیع مدنظر شما  نوبتی یا بر اساس IP، بدون وقفه پاسخ داده شده و کاربر هیچ زمانی با خطای عدم دسترسی از سمت سرور مواجه نخواهد شد، چراکه درخواست ها به سمت یک سرور هجوم نبرده و در صورت بروز اختلالی از سمت یک سرور، سرورهای دیگر به درخواست پاسخ خواهند داد.

برای فعالسازی این قابلیت، در صورت داشتن کلاستری از سرورها، پس از انتخاب method و پروتکل، می توانید بر روی گزینه مدیریت کلاستر کلیک کرده و برای IP یا پورت مورد نظر وزن ( Weight ) خاصی تعریف کنید. این وزن تعیین کننده میزان ترافیک ارسالی به سمت IP یا پورت انتخابی خواهد بود که با تعیین وزن بیشتر برای یک IP ترافیک بیشتری به سمت آن ارسال خواهد شد.

جمع بندی

وب اپلیکیشن های امروزی و مدرن دیگر بدون استفاده از تکنولوژی های جدید در حوزه IT از جمله توزیع بار، در رقابت موفق نخواهد شد. این تکنولوژی پیشرفته، علاوه بر کاهش زمان پاسخ دهی سرورها و افزایش سرعت سایت و اپلیکیشن، قابلیت های جانبی دیگری از جمله افزایش امنیت را نیز به همراه خواهد داشت. لود بلنسرها، عملاً جریان اطلاعات بین سرورها و دستگاه های نهایی ( PC, laptop, tablet or smartphone ) را به بهترین شکل مدریت خواهد کرد.

 




پیشنهاد ویژه

CDN ابری میزبان کلود

سرعت در بارگذاری و تحویل محتوای سایت

سرعت در بارگذاری و تحویل محتوای سایت

سرعت در بارگذاری و تحویل محتوای سایت

سرعت در بارگذاری و تحویل محتوای سایت

مشاهده پلانها
برچسب ها :
نویسنده مطلب شاهین نوعی

Hi everyone, my name is Shahin Noei; I'm so glad to be sharing with you my latest knowledge of IT infrastructure and I warmly invite you to ask any of your questions in my linkedin page. I've been working in digital marketing field for the last 5 years and I've been in touch with some IT businesses long enough to get the most out of the newest technologies in this modern era.

آشنایی با توزیع بار یا load balancing 0 دیدگاه

مطالب را قبل از دیگران مطالعه کنید

دریافت جدیدترین مطالب در ایمیل شما

ایمیل شما به صورت کاملا محرمانه نزد ما محفوظ است
ما برای شما هرزنامه ارسال نمی کنیم