XaaS Cloud Computing Loading ...
X
درخواست شما ثبت شد

درخواست شما با موفقیت ثبت شد. گروه پشتیبانی ما درخواست شما را بررسی و در اسرع وقت با شما تماس خواهند گرفت

مفاهیم ابتدایی Load Balancing

آشنایی با HAproxy و مفاهیم Load Balancing


HAproxy مخفف High Availability Proxy است و یکی از محبوب ترین نرم افزار Load Balancing است که می تواند روی سیستم عامل های FreeBSD, Solaris و Linux اجرا شود. Load Balancer با توزیع کردن Load روی سرور ها باعث افزایش کارایی و در دسترس بودن سرورهای شما می شود. در این مقاله با اصول و مفاهیم Load Balancer آشنا می شویم.


انواع Load Balancing

بدون Load Balancing

یک نرم افزار ساده تحت وب بدون load balancer به شکل زیر است.




در این مثال کاربران مستیقا و به Web Server ما متصل می شوند و هیچ Load Balancer ای وجود ندارد. اگر Web Server ما Down شود، نرم افزار تحب وب ما دیگر کار نمی کند و کسی نمی تواند به آن متصل شود. اگر هم تعداد درخواست ها بسیار زیاد شود سرور نمی تواند به خوبی کار کند و مشکل کندی نرم افزار به وجود می آید و یا ممکن است سرور از دسترس خارج شود.

Load Balancing لایه 4

ساده ترین راه Load Balancing ترافیک سرورها ، استفاده از Load Balancing لایه 4 است. در این روش با توجه با IP range و port ترافیک کاربر ابتدا به load balancer می­رسد و بعد به وب سرور ها داده می شود.


همانظور که در شکل بالا مشاهده می کنید هر دو Web Server باید به یک database متصل باشند یا database ها با هم sync باشند تا تفاوتی وجود نداشته باشد که کاربر به کدام Web Server متصل می شود و باید اطلاعات هر دو سرور یکسان باشد.

Load Balancing لایه 7

روش پیچیده تر برای Load Balancing استفاده از روش لایه ی 7 است. با استفاده از این روش می توانید بر اساس محتوای درخواستی کاربران، آنها را به سرور مختلف ارجاع دهید.



در این مثال اگر کاربر شما دامنه ی yourdomain.com/blog را وارد کند توسط Load Balancer به سرور blog-backend فرستاده می شود و بقیه درخواست ها به سرور web-backend فرستاده می شوند که نرم افزار دیگری روی آن در حال اجرا است. در این سناریو ما هر دو سرور را به یک database متصل کرده ایم.


الگوریتم های Load Balancing

الگوریتم های Load Balancing مشخص می­کنند که کدام سرور در هنگام Load Balancing انتخاب شود. HAproxy الگوریتم های زیادی را پشتیبانی می کند. ما در اینجا به چند مورد متداول از الگوریتم ها می پردازیم:


Roundrobin

در این روش به نوبت درخواست ها به سرورها می رسند. مثلا درخواست 1 به سرور 1 و درخواست 2 به سرور 2 و به همین ترتیب به صورت نوبتی درخواست ها بین سرور¬ها تقسیم می¬شوند.


leastconn

وقتی این حالت روی Load Balancer تنظیم شده باشد ، درخواست به سروری ارجاع داده می­شود که کمترین connection را دارد.این روش برای سرویس هایی که نیاز به ارتباط طولانی ای دارند توصیه می شود.


source

این الگوریتم بر اساس آدرس IP مبدا انتخاب می کند که کاربر به کدام سرور متصل شود. این روش تضمین می کند که کاربر با IP یکسان همواره به یک سرور متصل شود.


ارتباط چسبناک (Sticky Sessions)

HAproxy برای اینکه بداند کدام یک از سرور ها سالم هستند و آیا می تواند درخواست ها را به آن ها بفرستد یک health check با تمام سرورها انجام می دهد که اگر آن¬ها دردسترس نباشند دیگر به آن¬ها درخواست نمی فرستد تا زمانی که دوباره دردسترس باشند و این کار را به صورت خودکار انجام می دهد. مسلما اگر تمام سرور ها از دسترس خارج شوند ، دیگر سرویس کار نمی کند تا حداقل یکی از سرور ها بازگردد.

تست سلامت (Health Check)

HAproxy برای اینکه بداند کدام یک از سرور ها سالم هستند و آیا می تواند درخواست ها را به آن ها بفرستد یک health check با تمام سرورها انجام می دهد که اگر آن¬ها دردسترس نباشند دیگر به آن¬ها درخواست نمی فرستد تا زمانی که دوباره دردسترس باشند و این کار را به صورت خودکار انجام می دهد. مسلما اگر تمام سرور ها از دسترس خارج شوند ، دیگر سرویس کار نمی کند تا حداقل یکی از سرور ها بازگردد.



High Availability

در تمامی سناریو هایی که بررسی کردیم اگر سرورload balancer شما از دسترس خارج بشود نه تنها عمل load balancing صورت نمی گیرد بلکه دسترسی به وب سرور های شما هم قطع می¬شود و سرویس به طور کامل از دسترس خارج می¬شود. مکانیزم High Availability یک زیرساخت بسیار دردسترس و بدون قطع شدن سرور¬ها برای ما فراهم می¬کند. این مکانیزم با استفاده از ایجاد چندین سرور این امکان را فراهم می¬کند که اگر یکی از سرور¬ها به هر علتی از دسترس خارج شد ، سرور دیگر جایگزین شده و تا زمانی که سرور اصلی بازگردد کار را انجام می¬دهد و شما فرصت دارید که سرور اصلی را با خیال راحت بررسی کنید چون سرور دیگر در حال سرویس دهی است. یک load balancer این مکانیزم را برای سرور¬های پشتش انجام می¬دهد ولی برای خود load balancer هم باید این کار انجام بگیرد.


در سناریو بالا با ایجاد کردن چند load balancer (یکی Active و دیگری Passive) پشت سر یک virtual ip (آی­پی مجازی) -که امکان این را دارد بین دو سرور تغییر کند- ، مکانیزم HA پیاده سازی شده است. کابران با وارد کردن ip به سمت active load balancer می­روند و سپس به یکی از وب سرور­­ها متصل می­شوند. حال اگر یکی از load balancer ها fail شود ، به صورت خودکار با استفاده از مکانیزم HA که پیاده سازی شده است virtual ip به سمت سرور دیگر می­رود و سرویس ­دهی ادامه پیدا می­کند. در مقالات بعد نحوه پیاده سازی HAproxy و High Availability را بررسی می­کنیم.