5 نکته که باید در انجام لود بالانسینگ بدانیم
۱. محاسبه لودبالانسینگ
در محاسبه لود بالانسینگ، به فرآیند توزیع مجموعهای از وظایف بر روی مجموعهای از منابع (واحدهای محاسباتی) با هدف کارآمدتر کردن پردازش کلی آنها لودبالانسینگ گفته میشود. لودبالانسینگ زمان پردازش و پاسخ به درخواست کاربران را سرعت میبخشد و از بارگذاری نامتوازن بار روی سرورها، جلوگیری میکند. برای انجام لودبالانسینگ دو رویکرد اصلی وجود دارد: الگوریتمهای ایستا، که وضعیت ماشینهای مختلف را در نظر نمیگیرند، و الگوریتمهای پویا که معمولاً عمومیتر و کارآمدتر هستند، اما بهدلیل نیاز به تبادل اطلاعات بین واحدهای محاسباتی مختلف، در معرض خطر از دست دادن کارایی هستند.
دو رویکرد الگوریتمهای لودبالانسر؛ الگوریتمهای ایستا و الگوریتمهای پویا
الگوریتمهای ایستا
الگوریتمهای لودبالانسر ایستا وضعیت سیستم را برای توزیع وظایف در نظر نمیگیرند. بنابراین، وضعیت سیستم شامل مواردی مانند سطح بار (و گاهیاوقات حتی اضافه بار) پردازندههای خاص است. در عوض، مفروضات پیشفرض را در مورد سیستم کلی، مانند زمان رسیدن و منابع مورد نیاز وظایف ورودی در نظر میگیرد. علاوه بر این، تعداد پردازندهها، قدرت آنها و سرعت ارتباط آنها مشخص است. بنابراین، لودبالانسر ایستا مجموعهای از وظایف شناختهشده را با پردازندههای موجود مرتبط میکند. تکنیکهای لودبالانسر ایستا معمولاً در یک روتر متمرکز میشوند که بارها را توزیع میکنند و عملکرد را بهینه میکنند. مزیت الگوریتمهای ایستا این است که راهاندازی بسیار آسانی دارند.
الگوریتمهای پویا
برخلاف الگوریتمهای ایستا، این الگوریتمها بار جاری هر یک از واحدهای محاسباتی (سرورها) در سیستم را در نظر میگیرند. در این رویکرد، وظایف را میتوان بهصورت پویا از یک سرور پرترافیک به یک سرور کم بار منتقل کرد تا پردازش سریعتر انجام شود. با اینکه این الگوریتمها پیچیدهتر هستند، اما میتوانند نتایج بسیار بهینهتری بههمراه داشه باشند؛ بهویژه زمانی که زمان اجرا از یک کار به کار دیگر بسیار متفاوت است. معماری الگوریتمهای پویا میتواند ماجولارتر باشد، زیرا داشتن یک سرور خاص برای توزیع کار اجباری نیست. هنگامی که وظایف به طور منحصربهفرد به یک پردازنده با توجه به وضعیت آن در یک لحظه معین اختصاص داده میشوند، این تخصیص منحصربهفرد است. بدیهی است که یک الگوریتم لودبالانسینگ که برای رسیدن به تصمیمات خود به این حد پیچیدگی نیاز دارد، خطر کند شدن را نیز به همراه دارد.
یک الگوریتم لودبالانسر سعی میکند به یک مشکل خاص از جمله، ماهیت وظایف، پیچیدگی الگوریتمی، معماری سختافزاری که الگوریتمها بر روی آن اجرا می شوند، پاسخ دهد. همچنین تحمل خطای مورد نیاز، باید در نظر گرفته شوند. در ادامه به شرح تمامی این موارد و نحوه محاسبات لودبالانسینگ خواهیم پرداخت.
ماهیت وظایف
کارایی الگوریتمهای لودبالانسر کاملا به ماهیت وظایف بستگی دارد. بنابراین، هرچه اطلاعات بیشتری در مورد وظایف در زمان تصمیمگیری در دسترس باشد، پتانسیل بیشتری برای بهینهسازی وجود دارد.
اندازه وظایف
امکان توزیع بار بهینه با داشتن اطلاعات کافی از زمان اجرای هر یک از وظایف، فراهم میشود. با این حال دانستن زمان دقیق اجرای هر کار یک موقعیت بسیار نادری است. به همین دلیل، چندین تکنیک برای اطلاع از زمانهای مختلف اجرا وجود دارد. اول از همه، در یک سناریو داشتن وظایف با اندازه نسبتاً منظم، میتوان در نظر گرفت که هر یک از آنها تقریباً به میانگین زمان اجرا نیاز دارند. از طرف دیگر، اگر زمان اجرا بسیار نامنظم باشد، باید از تکنیکهای پیچیدهتری استفاده کرد. یک تکنیک این است که به هر وظیفه مقداری ابرداده (metadata) اضافه کنید. بسته به زمان اجرای قبلی برای ابردادههای مشابه، میتوان بر اساس آمار استنباطهایی را برای یک وظیفه در آینده انجام داد.
وابستگیها
در برخی موارد، وظایف وابسته به یکدیگر هستند. بهطور شهودی، برخی از کارها نمیتوانند شروع شوند تا زمانی که کارهای دیگر تکمیل شوند. با فرض اینکه زمان مورد نیاز برای هر یک از وظایف از قبل مشخص باشد، یک دستور اجرای بهینه باید باعث بهحداقل رساندن کل زمان اجرا شود. اگرچه این یک مشکل NP-hard است و حل آن دشوار است. الگوریتمهایی مانند زمانبندی کار وجود دارند که توزیع وظایف بهینه را با استفاده از روشهای ابتکاری محاسبه میکنند.
تفکیک وظایف
یکی دیگر از ویژگیهای وظایف برای طراحی یک الگوریتم لودبالانسر، توانایی آنها در تجزیه به وظایف فرعی در طول اجرا است. الگوریتم Tree-Shaped Computation که بعدها ارائه شد از این ویژگی بهره میبرد.
معماری سختافزار
ماشینهای ناهمگن
زیرساختهای محاسباتی موازی اغلب از واحدهایی با توان محاسباتی مختلف تشکیل شدهاند که باید برای توزیع بار در نظر گرفته شوند. به عنوان مثال، واحدهای کممصرف ممکن است درخواستهایی را دریافت کنند که نیاز به محاسبات کمتری دارند، یا در مورد اندازههای درخواستی همگن یا ناشناخته، درخواستهای کمتری نسبت به واحدهای بزرگتر دریافت کنند.
حافظه مشترک و توزیع شده
کامپیوترهایی که بهصورت موازی در حال کار هستند، اغلب به دو دسته کلی تقسیم میشوند: آنهایی که همه پردازندهها یک حافظه مشترک دارند که روی آن بهصورت موازی میخوانند و مینویسند (مدل PRAM)، و آنهایی که هر واحد محاسباتی حافظه خاص خود را دارد (مدل حافظه توزیع شده) و اطلاعات توسط پیام رد و بدل میشود. در کامپیوترهای دارای حافظه مشترک، سرعت اجرای جداگانه هر واحد محاسباتی تا حد زیادی کاهش مییابد. با این حال، آنها میتوانند بهطور موازی به خوبی کار کنند. برعکس، در حافظه توزیع شده، هر یک از پردازندهها می توانند با سرعت بیشتری کار کنند.
سلسله مراتب
با تطبیق با ساختارهای سختافزاری که در بالا مشاهده می شود، یکی از انواع الگوریتمهای لودبالانسر به این صورت است که در آن وظایف توسط Master محول میشود و توسط Workers اجرا میشود که Master را از پیشرفت کار خود مطلع میکنند. به این معماری Master-Worker میگویند.
سازگاری با معماریهای بزرگتر (مقیاس پذیری)
معماری کامپیوتر در طول زمان تکامل مییابد. در این شرایط، ما نباید مجبور باشیم هر بار یک الگوریتم جدید طراحی کنیم. یکی از پارامترهای بسیار مهم یک الگوریتم لودبالانسر، توانایی آن برای سازگاری با یک معماری سختافزاری مقیاسپذیر است.
تحمل خطا
به خصوص در کلاسترهای محاسباتی در مقیاس بزرگ، اجرای یک الگوریتم موازی که نمیتواند شکست یک جزء واحد را تحمل کند، قابل قبول نیست. بنابراین، الگوریتمهای تحمل خطا در حال توسعه هستند که میتوانند خرابی پردازندهها را شناسایی کرده و محاسبات را بازیابی کنند.
۲. تجهیزات لودبالانسینگ
مورد دیگری که باید توجه کنید این است که لودبالانسرها، در دو نوع کلی لودبالانسرهای سختافزاری و نرمافزاری موجود هستند. برای درک تجهیزات لودبالانسیگ، شرح مختصری از لودبالانسینگهای سختافزاری در ادامه آوردهایم:
لودبالانسینگ سختافزاری (HLB) یک دستگاه اختصاصی است که بر روی ASICهای سفارشی ساخته شده است تا ترافیک را در چندین سرور در شبکه توزیع کند. یک لودبالانسر سختافزاری بین ترافیک ورودی و سرورهای داخلی قرار میگیرد و اساساً بهعنوان «پلیس ترافیک» عمل میکند. هنگامی که مشتریان از وبسایت بازدید می کنند، درخواست آنها ابتدا به لودبالانسر ارسال میشود، سپس به سرورهای مختلف هدایت میشوند. بهطور سنتی، لودبالانسرهای سختافزاری در مراکز داده مستقر و راهاندازی میشوند و تعداد آنها به میزان ترافیک مورد انتظار بستگی دارد. معمولاً در صورت خرابی نیز لودبالانسر دیگری جایگزین میشود. بسیاری از شرکتها نیز لودبالانسرهای سختافزاری را در مکانهای مختلف مستقر میکنند، روشی که بهعنوان لودبالانسینگ سرور جهانی (GSLB) شناخته میشود. GSLB نهتنها زمان پاسخگویی بهینه را فراهم میکند، بلکه دسترسی بالا را در موقعیتهای بازیابی فاجعه تضمین می کند. اگر یک مرکز داده از کار بیفتد، سیستمهای GSLB میتوانند ترافیک شبکه را به سایر سایتهای موجود هدایت کنند و تأثیر آن بر کاربران نهایی را بهحداقل برسانند.
۳. الگوریتمهای لودبالانسینگ
رایجترین الگوریتمهای لودبالانسینگ
Least Connection- ترافیک را به سروری با کمترین اتصالات فعال هدایت میکند. این الگوریتم بار کنونی روی سرور را محاسبه میکند.
Least Response Time – ترافیک را به سروری با کمترین اتصالات فعال و کمترین میانگین زمان پاسخ هدایت میکند. سرعت پاسخ، نشانگر میزان بارگیری سرور و تجربه کلی کاربر مورد انتظار است.
Round Robin – سرورها را با هدایت ترافیک به اولین سرور موجود مدیریت میکند و سپس آن سرور را به انتهای صف منتقل میکند. این روش زمانی که سرورها از مشخصات یکسانی برخوردار باشند و اتصالات مداوم زیادی وجود نداشته باشد، بسیار مفید است. اجرای آن برای لودبالانسر ساده است، اما با توجه به اینکه بار کنونی در سرور را در نظر نمیگیرد، ممکن است سرور درخواستهای سنگین زیادی را برای پردازش دریافت کند و خطر اضافهبار وجود داشته باشد.
IP Hash – آدرس IP مشتری تعیین میکند که کدام سرور درخواست را دریافت میکند.
Least bandwidth – این روش سروری را در نظر میگیرد که در حال حاضر کمترین میزان ترافیک را مطابق با مگابیت بر ثانیه (Mbps) مدیریت میکند.
Custom load – در این روش لود بالانسر میتواند بار روی سرورهای جداگانه را از طریق SNMP درخواست کند. سرپرست میتواند بار سرور دلخواه (استفاده از CPU، حافظه، و زمان پاسخ ) را برای درخواست تعریف کند و سپس آنها را برای مطابقت با درخواستهای خود ترکیب کند.
الگوریتمهای لودبالانسینگ پپلینک نیز که در مطلبی جداگانه به شرح آنها پرداختیم، عبارتند از الگوریتمهای Weighted Balance، Priority، Overflow، Persistence، Least Used، Lowest Latency، Enforced وFastest Response Time.
۴. انواع لودبالانسنگ
مورد دیگری که باید بدانید این است که لودبالانسرها انواع مختلفی دارند. آنها بهطور کلی به دو دسته تقسیم میشوند: لایه 4 و لایه 7.
لودبالانسرهای لایه 4 بر اساس دادههای موجود در پروتکلهای شبکه و لایه انتقال (IP، TCP، FTP، UDP) عمل می کنند. بهطور خاص برای ترافیک اینترنت، یک لودبالانسر لایه 4 تصمیم توزیع بار را بر اساس آدرسهای IP مبدا و مقصد و پورتهای ثبت شده در هدر بسته بدون در نظر گرفتن محتویات بسته اتخاذ میکند. در واقع این نوع از لودبالانسر، تنها اطلاعاتی که به آنها اشاره شد را مد نظر قرار میدهد و فقط بر این اساس ترافیک را هدایت میکند.
لودبالانسرهای لایه 7 درخواستها را بر اساس دادههای موجود در پروتکلهای لایه اپلیکیشن مانند HTTP توزیع می کند. لودبالانسر لایه 7 میتواند درخواستها را بر اساس دادههای خاص برنامه مانند هدرهای HTTP، کوکیها یا دادههای درون پیام برنامه، مانند مقدار یک پارامتر خاص، توزیع کند. بنابراین اکنون درخواست یک تصویر یا ویدیو را می توان به سرورهایی که آن را ذخیره می کنند هدایت کرد و برای ارائه محتوای چندرسانه ای بسیار بهینه شده است. به این ترتیب، لودبالانسر لایه ۷ ترافیک سرور را بر اساس استفاده و رفتار فردی کنترل میکند.
درخواست ها توسط هر دو نوع متعادل کننده بار دریافت می شوند و بر اساس یک الگوریتم پیکربندی شده به یک سرور خاص توزیع می شوند.
۵. تفاوتهای لودبالانسرهای پپلینک
در لودبالانسرهای پپلینک، پیوندهای کابلی، DSL، فیبر، سلولی، 3G و 4G LTE برای مدیریت ترافیکهای پربار با هم کار میکنند. میتوانید وقتی به سرعت بیشتری نیاز دارید، اتصالات بیشتری اضافه کنید. فناوری SpeedFusion که یک فناوری منحصربهفرد Peplink است، به VPNهای سازمانی امکان میدهد که از پهنای باند چند کابل ارزان قیمت، DSL، 3G، 4G، LTE و سایر اتصالات در هر نقطه از شبکه WAN شرکتی یا سازمانی استفاده کنند؛ فرقی نمیکند که در حال انتقال چند سند، دادههای POS، فیدهای ویدئویی و مکالمات VoIP در زمان واقعی باشید، SpeedFusion تمام دادههای شما را به یک تونل داده متصل میکند که مقرون به صرفه، فوقالعاده سریع و بهراحتی قابل تنظیم است تا برای هر نوع محیط شبکه دیگری مناسب باشد.
لودبالانسر پپلینک یک راهکار عالی برای پایداری اتصال است و برای شبکههای سازمانی طراحی شده است و حتی اگر یک اتصال WAN خراب شود، متصل میماند. همچنین، مجهز به طیف گستردهای از الگوریتمهای لودبالانسر برای مدیریت هر موقعیتی است.
روترهای لودبالانسر Wireless SD-WAN پپلینک، application-aware هستند، در اینصورت، دادهها و برنامههای مهم همیشه از عملیات VIP برخوردار هستند.
پپلینک از ۸ الگوریتم که به آنها اشاره شد استفاده میکند تا نحوه توزیع ترافیک در بین اتصالات بهراحتی تنظیم شوند.