لود بالانسینگ چیست؟ در این مقاله از بلاگ پچیم قصد داریم تا درباره لود بالانسینگ بیشتر با شما صحبت کنیم.
Load Balancing تکنیکی برای توزیع کردن ترافیک سرور در بین حجم بالایی از سرورهای مختلف است که به آنها اصطلاحا Server Farm یا مزرعه سرور گفته میشود.استفاده از این تکنیک باعث میشود که بهرهوری شبکه بالاتر برود، قابل اعتماد باشد (نرخ در دسترس بودن بالا)، ظرفیت پذیرش درخواستهای ورودی افزایش پیدا کند و همچنین نرخ معطلی کاربران در پردازش دادهها کمتر شود. تمام این مزایا از این موضوع ناشی میشود که همه چیز، از جمله منابع لازم برای پردازش درخواستها، بین سرورهای مختلف تقسیم و توزیع میشود.
Load Balancing از یک دستگاه (فیزیکی یا مجازی) برای اینکه بفهمد کدام سرور در بین Server Farm میتواند به بهترین شیوه به درخواست کاربران پاسخگو باشد استفاده میکند. در این فرایند، حجم پردازشی و ترافیک بالا گریبانگیر یک سرور نشده و سرورهای دیگر نیز میتوانند در این فرایند مورد استفاده قرار بگیرند.
جدای از مواردی که گفته شد، Load Balancing امکانی تحت عنوان failover را نیز پیادهسازی کرده است. در این حالت اگر یکی از سرورها با مشکل مواجه شود، Load Balancer فورا درخواستهای دریافتی آن سرور را به یک سرور پشتیبانی ارسال میکند تا روی فرایند اجرای کاری اپلیکیشن مشکلی بوجود نیاید.
Load Balancing چگونه کار میکند؟
اصلیترین کاری که Load Balancerها انجام میدهند درخواستهای ورودی کاربران که درخواست دسترسی به اطلاعات و سرویسهای مختلف را ارائه میدهند، مدیریت میکند. Load Balancerها در مدل OSI در لایه ۴ قرار میگیرند و از نظر ساختاری نیز بین سرورهایی که درخواستها را هندل میکنند و خود اینترنت، استقرار پیدا میکنند. زمانی که یک درخواست دریافت شود، ابتدای کار Load Balancer یک سرور در دسترس و «بیکار» را پیدا میکند و سپس درخواست را به آن سرور انتقال میدهد. در زمانی که حجم درخواستها و یا پردازشها زیاد شود، Load Balancer به صورت پویا منابع جدیدی را برای مدیریت درخواست تخصیص میدهد. همچنین اگر تقاضا برای یک سرور کم باشد میتواند منابع آن را به دیگر بخشها تخصیص دهد.
انواع لود بالانسرها
لود بالانسر یکی از المانها و کامپوننتهای اصلی برای ایجاد دسترسی بالا در زیرساختهاست. به همین دلیل براساس نیازهایی که در یک شبکه ممکن است داشته باشید انواع مختلف لود بالانسر وجود دارد که میتواند در زمینهها و سناریوهای مختلف به شما کمک بکند.
البته به صورت کلی یک لود بالانسر میتواند یا یک دستگاه فیزیکی باشد و یا یک اپلیکیشن. در مواردی نیز از ترکیب این دو مورد استفاده میشود. براساس همین پیشفرضها ما میتوانیم انواع لود بالانسر را به دو حالت زیر تقسیم کنیم:
- Hardware Load Balancer: لود بالانسر سخت افزاری یک دستگاه فیزیکی است که یکسری نرم افزار به صورت درونی در آن تعبیه شده و کار اصلیاش مدیریت کردن حجم بالایی از ترافیک در شبکه و اپلیکیشنهاست. همچنین در این دستگاهها قابلیت مجازیسازی به صورت یک ویژگی درونی پیادهسازی شده و میتواند چندین نمونه از لود بالانسر مجازی را نیز فعال کند.
- Software Load Balancer: لود بالانسر نرم افزاری روی یک ماشین مجازی یا VM اجرا میشود. در این حالت به این دست از نرمافزارها ADC یا Application Delivery Controller گفته میشود. ADCها ویژگیهای مختلفی را ارائه میکنند، کشینگ، فشردهسازی و شکلدهی به ترافیک ورودی چند مورد از این ویژگیها هستند. این دست از نرمافزارها در محیطهای ابری بسیار مورد استفاده قرار گرفته و به دلیل انعطافپذیری بالا آنها در امر استفاده، کاربران و استفاده کنندگان بسیار زیادی دارد. همچنین مدیریت این دست از Load Balancerها سادهتر از نوع قبلی است. اما باید این موضوع را در نظر گرفت که هر کدام این موارد در شرایط و سناریوهای مختلف استفاده دارند و نمیتوان به صورت کلی گفت که کدام مورد از کدام یکی بهتر یا بدتر است.
لود بالانسینگ ابری یا Cloud-Based
Cloud Load Balancing از محیط ابری به عنوان یک زیرساخت برای بالانس کردن محاسبات ابری استفاده میکند. در زیر میتوانید چند نمونه از لود بالانسرهای مبتنی بر کلود را مشاهده کنید:
- Network Load Balancing: سریعترین نوع لود بالانسینگ که میتوانید از آن استفاده کنید این مورد است. این حالت از لود بالانسینگ در لایه چهارم مدل OSI قرار میگیرد و از اطلاعات لایه شبکه برای انتقال ترافیک شبکه استفاده میکند.
- HTTP Secure Load Balancing: این حالت از لود بالانسینگ این قابلیت را به مدیران شبکه میدهد که بتوانند ترافیک شبکه را از طریق اطلاعاتی که از آدرس HTTP میآید توزیع کنند. این مورد در لایه ۷ مدل OSI قرار دارد.
- Internal Load Balancing: این مورد مانند همان Network Load Balancing است با این تفاوت که در این گزینه امکان توزیع ترافیک در بین زیرساختهای داخلی نیز وجود دارد.
الگوریتمهای لود بالانسینگ
الگوریتمهای لود بالانسینگ در جهت انجام کار اصلی آن یعنی توزیع درخواستها بین سرورهای مختلف عمل میکنند. بنابراین در واقع براساس یکسری الگوریتم Load Balancer تصمیم میگیرد که درخواست ورودی کاربر را به کدام سرور در مزرعه سرور ارائه دهد. به صورت کلی این الگوریتمها نیز به دو قسمت تقسیم میشوند: Static و Dynamic.
الگوریتم Static
اولین شکل الگوریتم استاتیک، رویکردی براساس IP Hash است. در این حالت سرور مورد نظر که قرار است درخواست را مدیریت کند براساس یک ساختار پیشنهادی کاربر صورت میگیرد. برای مثال کاربر براساس یک سربرگ HTTP یا اطلاعات آدرس IP یک کلید را تولید کرده و عملیات پیش میرود. در انجام عملیاتهای خرید آنلاین و فروشگاههای الکترونیکی از این الگو استفاده میشود.
دومین شکل متدیست با نام Round-Robin. در این متد تمام سرورها به صورت ترتیبی و متوالی پیمایش شده و ترافیک بین این لیست از سرورها براساس DNS توزیع میشود.
سومین حالت Weighted Round-Robin نام دارد که در این حالت ادمینهای شبکه میتوانند براساس یک اولویت بندی به درخواستها پاسخ بدهند و دادهها براساس این اولویتها توزیع خواهد شد. پیکربندی اولویت این سرورها از طریق DNS Records انجام میگیرد.
الگوریتم Dynamic
اولین شکل الگوریتم دینامیک، متدی به نام Least-Connections است. در این حالت درخواستها به سرورهایی ارسال میشود که کمترین ترافیک ورودی و کمترین ارتباط باز را دارند. پیشفرض این الگوریتم این است که تمام ارتباطات به یک میزان به قدرت پردازشی نیاز دارند.
دومین متد Weighted Least Connection نام دارد که پیشفرض این حالت این است که برخی سرورها میتوانند ترافیک بیشتری را به نسبت دیگر سرورها مدیریت کنند. به همین دلیل ادمین شبکه میتواند ترافیک ورودی بیشتری را روی هر سرور قرار دهد.
سومین رویکرد Weighted Response Time نام دارد که در این متد میانگین زمان پاسخگویی به درخواستها در هر سرور ارزیابی شده و با تعداد ارتباطات هر سرور ترکیب میشود. این کار برای این صورت میگیرد تا بتوانیم متوجه شویم که کدام مورد بهترین مقصد برای درخواستهای دیگر است. در واقع این رویکرد تلاش دارد تا در نهایت سرعت به درخواستها پاسخ بدهد.
چهارمین الگوریتم Resource-Based نام دارد که ترافیک را براساس منابع در اختیار گرفته هر سرور در زمانی مشخص توزیع میکند. در این الگوریتم از یک نرم افزار به نام agent استفاده میشود که روی هر سرور اجرا شده و میزان در دسترس بودن واحد پردازش مرکزی و حافظه اصلی را اندازهگیری میکند.
فواید استفاده از Load Balancer
سازمانها و شرکتهایی که برای مدیریت اپلیکیشنشان از چندین سرور مختلف استفاده میکنند، میتوانند از Load Balancer برای مدیریت ترافیک شبکه استفاده کنند. این اصلیترین کاربرد Load Balancer است. در زیر به فواید و مزایای استفاده از Load Balancerها نیز خواهیم پرداخت:
- بهبود مقیاسپذیری: لود بالانسرها میتوانند براساس نیازمندیهای شبکه و درخواستهایی که صورت میگیرد، زیرساختهای سرور را بدون اینکه روی اجرای سرویسها تاثیری بگذارد، مقیاسدهی کنند. برای مثال تصور کنید که یک ترافیک ناگهانی (بازدیدکننده زیاد) وارد وبسایت شما میشود. وبسایتی که از لود بالانسر استفاده نمیکند یا Web Server قابلیت مدیریت این ترافیک ورودی را ندارد مطمئنا کرش کرده و وبسایت نمیتواند به خوبی اجرا شود. اما در چنین مواقعی Load Balancer میتواند با تقسیم ترافیک ورودی بین سرورهای مختلف از چنین اتفاقی جلوگیری کند.
- بهرهوری بهتر: از آنجایی که ترافیک ورودی در بین سرورهای مختلف به اشتراک گذاشته میشود در نتیجه زمان انتظار برای پاسخگویی به درخواستها کاهش پیدا کرده و کاربران با تجربه کاربری بهتری میتوانند از وبسایت استفاده کنند. این موضوع همچنین باعث میشود که میزان خرابیها کمتر شده و نرخ Downtime کاهش پیدا کند.
- امنیت: لود بالانسرها به صورت پیشفرض یک لایه امنیتی جدید را به ساز و کار کلی اضافه میکنند. همچنین یکسری مکانیزم درونی در لود بالانسرها پیادهسازی شده که از یکسری حملات مشخص جلوگیری میکند.
لود بالانسر سخت افزاری یا نرم افزاری؟
Hardware Load Balancer و Software Load Balancer ویژگیها و موارد استفاده مربوط به خودشان را دارند و مقایسه یک طرفانه نمیتواند کار درستی باشد. برای مثال لود بالانسر سخت افزاری به ابزارهای فیزیکی مختلفی نیاز دارد که کاربرد متفاوتی را ارائه میکند اما لود بالانسر نرم افزاری روی یک سرور استاندارد، ماشین مجازی یک محیط ابری میتواند نصب شود. در ادامه قصد داریم به مزایا و معایب هر کدام از این تکنولوژیها بپردازیم تا به صورت کاملتر با هر کدامشان آشنا شوید:
لود بالانسر سخت افزاری
مزایا
- از آنجایی که نرم افزار به صورت جداگانه توسط یک پردازشگر دیگر کار میکند، لود بالانسرهای سخت افزاری مستقل بوده و سرعت بسیار بالایی دارند.
- لود بالانسر سخت افزاری از امنیت بالاتر برخوردار است و هیچ نرم افزار Third-Party در مدیریت آن نقش ندارد.
- برای در اختیار گرفتن لود بالانسر سخت افزاری شما تنها یک بار هزینه خواهید کرد.
معایب
- برای نصب و پیکربندی آن به متخصص نیاز دارید و هر کسی نمیتواند به سرعت کار با آن را یاد بگیرد.
- نرخ مقیاسدهی در ارتباطات محدود معمولا کمتر است.
- نسبت به حالت نرم افزاری بسیار گران هستند.
لود بالانسر نرم افزاری
مزایا
- انعطاف پذیر بوده و انجام تغییرات در آن سرعت بیشتری دارد.
- مقیاسدهی بالاتری دارد و میتواند با نمونههای جدید نرم افزار به خوبی کار بکند.
- به خوبی با تکنولوژیهای ابری میتواند سازگار شود.
معایب
- زمانی که حجم سرورها افزایش پیدا میکند و قصد دارید که فرایند مقیاسدهی را شروع کنید ممکن است با تاخیرهای اولیه روبرو شوید.
- هزینههای متغیر داشته و شما باید به صورت ماهیانه برای آن هزینه کنید.
جمعبندی
لود بالانسر یک تکنولوژی بسیار کاربردی و مفید بوده که به شما در مدیریت ترافیکهای مختلف سرور کمک میکند. مطمئنا استفاده از چنین تکنولوژی در شرکتها و سازمانهای بزرگ کاربردی بوده و میتواند فواید متنوعی را به ساختار کلی اپلیکیشن بیاورد.
در این مطلب از وبلاگ پچیم ما با چیستی Load Balancer، انواع آن، کاربردها و چگونگی کار کردن آن آشنا شدیم.