قصد داریم در این مقاله درباره کارکرد network load balancer در تقسیمبار و مفاهیم network load balancing و proxying صحبت کنیم. هرچند موضوعیت و گستردگی این مفاهیم به حدی بزرگ است که میتوان در یک کتاب به صورت مبسوط از آنها سخن گفت؛ اما با این حال سعی شده است که موارد پایهای و اساسی این بحث در مقاله پیشرو، گنجانده شوند.
Network load balancing و Proxying در ویکیپدیا
تعریفی که از Wikipedia قابل برداشت است:
متعادل نمودن بار ترافیکی (load balancing) در رایانش باعث بهبود توزیع حجم کاری در بین منابع محاسباتی متعدد مانند کامپیوترها، کلاستر کامپیوتری، لینکهای شبکه، واحدهای پردازش مرکزی یا دیسک درایوها میشود.
هدف تقسیمبار، بهینهسازی استفاده از منابع، بیشترکردن توان عملیاتی، به حداقل رساندن زمان پاسخ و جلوگیری از هرگونه بار اضافی بر روی یک منبع است. استفاده از اجزای متعدد (چندگانه) به همراه تقسیمبار به جای یک جزء، موجب افزایش قابلیت اطمینان و در دسترس بودن از طریق افزایش (افزونگی) منابع میشود. تقسیمکنندهها معمولا شامل نرمافزار و سختافزار اختصاصی مانند سوئیچهای چند لایه (MLS) یا پردازش سرور سیستم و یا نام دامنه (DNS Server) میشوند.
این تعریف به صورت عمومی برای همه جنبههای پردازشی است و فقط شامل شبکههای کامپیوتری نمیشود؛ مثلا سیستمعاملها از load balancing برای زمانبندی کارها بین پردازندههای فیزیکی بهره میبرند و یا سیستمهای ابر کامپیوتر برای تقسیم کارها بین Clusterها و مدیران شبکه برای زمانبندی و تقسیم بار ترافیکی شبکه بین چندین سرور از آنها استفاده میکنند.
در این مقاله قصد داریم فقط درباره network load balancerها صحبت کنیم:
تعریف network load balancing و proxying چیست؟
به صورت ساده میتوان این مفهموم را به شکل زیر تعریف کرد: هدف وجود load balancer این است که سیستمی طراحی شود که یک سرویس را با آدرسی یکتا و مجازی در اختیار مجموعهای از کاربران قرار دهد در صورتی که در واقع همزمان چندین سرویس دهنده با آدرسهای مختلف وجود داشته دارند. این امر معمولا برای ایجاد شرایط scalability و high-availability بالا صورت میگیرد.
Scalability یکی از ویژگیهای بسیار مهم سیستم است که راهکار ارائه شده باید این توانایی را داشته باشد که به صورت دینامیک و به راحتی منابع سختافزار به سیستم زیر بار (فعال) اضافه و با منابع جدید سازگار شود. به عنوان مثال ماشینهای مجازی که این روزها بسیار رایج شدهاند به راحتی این هدف را در سطح سیستمعامل، پوشش میدهند و ادمین میتواند در صورت نیاز منابع سخت افزاری خاصی به سیستم بدون نگرانی «زیر بار» را افزایش دهد.اما اگر نیاز باشد ماشینهای بیشتری در سیستم داشته باشیم یا ظرفیت لازم برای افزایش منابع سختافزاری این ماشین وجود نداشته باشد، چه امری باید صورت بگیرد؟
High Availability (HA) یکی دیگر از ویژگیهای مهم یک NLB است. در صورتی که یکی از سرورهای با نقش موثر در سیستم به هر دلیلی از بین بروند، از دید کاربر نهایی، سیستم بدون مشکل به سرویس خود ادامه میدهد. در چنین شرایطی، مجددا تکنولوژی مجازیسازی برای این نیاز نیز کمک کرده و مشکل را تا حدی حل کرده؛ اما باز هم برای کسب High Availability نهایی و کامل، سیستم شما باید سعی کند مستقل از سختافزار مجازیساز باشد تا در صورت بروز مشکل در لایه مجازیسازی به حیات و پایداری سرویس، خللی وارد نشود.
نام انتزاعی:
از دیگر ویژگیهایی که یک سیستم در سطح سازمانی باید داشته باشد همین «نام انتزاعی» است. به عنوان مثال این امکان وجود ندارد که از کاربران انتظار داشته باشیم همزمان توسط یک الگوریتم درست و منطقی یکی از بیست سرور وب موجود در مجموعه با آدرس های مختلف استفاده کنند و این امر باید توسط ادمین شبکه و یا به صورت هوشمند اداره شود. ابزارهای تقسیمکننده بار (LB) این امکان را میدهند که یک آدرس نهایی و یکتا برای سرویس در نظر گرفته شود و همه کاربران با همین یک آدرس از سرویس موجود در همه سرورها به صورت همزمان استفاده کنند.
کاهش هزینهها:
سیستمهای توزیع شده به ندرت بطور همگن شکل میگیرند. آنها معمولا بر اساس واحدهای سازمانی، موقعیتهای جغرافیایی، زمانهایی در سال مثلا شب یلدا و حتی در بازههای زمانی ماهیانه مثل پایان هر ماه کاری، بار ترافیکی سیستم حضور و غیاب سازمان به دلیل اصلاح کارکرد روزانه کارکنان افزایش مییابد و TimeZoneهای مختلف، جنس و حجم ترافیک روی سرورها متفاوت میشوند.
حجم کاری وسیع، نیاز به سرورهای عظیم دارد که به شدت گرانقیمت هستند و معمولا به صرفه نیست که برای سرورهای لایه وب و یا اپلیکشن از این نوع سرورها تهیه شود؛ به همین دلیل نیاز داریم که بجای تهیه یک سرور عظیم، چندین سرور کوچکتر داشته باشیم.
در بحث گستره جغرافیایی کاربران یکی از اصول کاهش هزینه و سربارهای ترافیک شبکه، نزدیک نگه داشتن حداکثر سرورها به کاربران است؛ به زبان سادهتر باید سعی کنیم سرورها را منطبق با گسترگی جغرافیایی کاربران بنابر همین مقیاس، راهاندازی کنیم.
با توجه به گسترگی بحث این مقاله را میتوان به عنوان مقدمهای در نظر گرفت که در ادامه با تشریح مفاهیمی مثل تفاوتهای Proxy و Load balancer و یا Loadbalancerهای لایه ۴ و ۷ به تدریج تکمیل شود.
پایان بخش اول