منو سایت

  • خانه
  • وبلاگ
  • HAProxy چیست؟ با انواع متعادل کننده بار سرور آشنا شوید

HAProxy چیست؟ با انواع متعادل کننده بار سرور آشنا شوید

 تاریخ انتشار :
/
  وبلاگ
HAProxy چیست؟ با انواع متعادل کننده بار سرور آشنا شوید

HAProxy چیست؟ HAProxy (مخفف High Availability Proxy) یک نرم افزار متن باز و بسیار محبوب در زمینه Load Balancing است. این نرم افزار قابلیت اجرا بر روی سیستم عامل های لینوکس، macOS و FreeBSD را دارد. رایج ترین کاربرد HAProxy بهبود عملکرد در محیط سرور با توزیع بار بین سرورهای مختلف است. این نرم افزار محبوب در سرویس های محبوبی مانند اینستاگرام، توییتر، گیت هاب و ایمگور استفاده می شود. در این مقاله از وبلاگ پارس پاک به طور مفصل در مورد نرم افزار HAProxy صحبت خواهیم کرد. پس تا انتها همراه ما باشید.

اصطلاحات HAProxy

قبل از معرفی HAProxy، باید با اصطلاحات مهم آن آشنا شوید. این به شما کمک می کند تا مفاهیم تعادل بار و پروکسی را بهتر درک کنید.

1. لیست کنترل دسترسی (ACL)

ACL متعادل کننده بار مسئول ابتدا آزمایش برخی شرایط و سپس تصمیم گیری بر اساس نتیجه آن آزمایش است. به عنوان مثال، این فرآیند می تواند باعث انتخاب سرور یا مسدود شدن یک درخواست شود.

به عنوان مثال، ACL ها امکان مسیریابی انعطاف پذیر ترافیک شبکه را بر اساس عوامل مختلفی مانند تطبیق الگو و تعداد اتصالات به backend می دهند. نمونه ای از ACL در زیر نشان داده شده است:

acl url_blog path_beg /blog

اگر مسیر پرس و جو کاربر با /blog شروع شود، این ACL مطابقت دارد. برای مثال، این ACL ممکن است با مسیر http://yourdomain.com/blog/blog-entry-1 مطابقت داشته باشد.

2. Backend

Backend در واقع مجموعه ای از سرورهایی است که درخواست های ارسالی را دریافت می کنند. Backendها در برگه ای به همین نام (Backend) در پیکربندی HAProxy تعریف می شوند. هر Backend در ابتدایی ترین شکل خود دارای دو معیار اصلی است:

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

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

یک نمونه پیکربندی از دو باطن در اینجا نشان داده شده است، به عنوان مثال. یک باطن وب و یک باطن وبلاگ، با دو سرور در هر کدام. این سرورها برای گوش دادن در پورت 80 پیکربندی شده اند:

backend web-backend
   balance roundrobin
   server web1 web1.yourdomain.com:80 check
   server web2 web2.yourdomain.com:80 check
   
backend blog-backend
   balance roundrobin
   mode http
   server blog1 blog1.yourdomain.com:80 check
   server blog1 blog1.yourdomain.com:80 check

در این کدها نکات زیر بسیار مهم است:

  • ترتیب دور روبین الگوریتم متعادل کننده بار را مشخص می کند.
  • حالت http نشان می دهد که از لایه پروکسی 7 استفاده خواهد شد.
  • گزینه های بررسی قرار داده شده در انتهای دستورالعمل سرور نشان می دهد که بررسی های سلامت باید در سرورهای باطن انجام شود.

3. Frontend

نحوه ارسال درخواست ها به بک اند در قسمت جلو مشخص شده است. Frontendها نیز در برگه ای به همین نام (Frontend) در پیکربندی HAProxy تعریف شده اند. دو جزء اصلی در تعریف Frontends وجود دارد:

  • مجموعه ای از ACL ها برای آدرس IP و پورت. مثلا:

10.1.1.7:80, *:443

  • قوانین use_backend تعیین می‌کند که بر اساس کدام شرایط ACL مطابقت دارد از کدام بک‌اند استفاده شود، یا قانون default_backend تعیین می‌کند که کدام یک همه چیز را مدیریت می‌کند.

در ادامه نحوه پیکربندی رابط برای انواع مختلف ترافیک شبکه را توضیح دادیم.

انواع متعادل کننده بار

اکنون که درک خوبی از اجزای اصلی تعادل بار داریم، می‌توانیم به اصل موضوع بپردازیم. در مرحله اول باید انواع Load Balancing را بشناسیم.

1. عدم تعادل بار

حالت اول معمولا زمانی است که تعادل بار در سیستم وجود ندارد. یک محیط برنامه وب ساده که از متعادل کننده بار استفاده نمی کند احتمالاً به این صورت است:

    نرم افزار متعادل کننده بار

عدم تعادل بار سرور

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

2. تعادل بار لایه 4

ساده ترین راه برای بارگیری ترافیک شبکه تعادل در چندین سرور، استفاده از تعادل بار لایه 4 است که به عنوان لایه انتقال نیز شناخته می شود. در این روش ترافیک کاربران بر اساس محدوده IP و پورت هدایت می شود. به عنوان مثال، اگر درخواستی به http://yourdomain.com/anything ارسال شود، ترافیک به باطن ارسال می‌شود، که تمام درخواست‌های yourdomain.com در پورت 80 را بررسی می‌کند. تصویر زیر یک مثال ساده از بارگذاری را نشان می‌دهد. تعادل در سطح 4:

    آموزش هاپروکسی

متعادل کننده بار لایه 4 برای بارگیری ترافیک شبکه تعادل بین چندین سرور

کاربر به متعادل کننده بار دسترسی دارد، که درخواست را از سرور باطن به استخر وب پشتیبان ارسال می کند. بنابراین، در صورت انتخاب هر یک از سرورهای بک اند، مستقیماً به درخواست ارسال شده توسط کاربر پاسخ خواهند داد.

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

3. متعادل کننده بار لایه 7

یکی دیگر از راه حل های نسبتا پیچیده تر برای ترافیک شبکه متعادل کننده بار، استفاده از تعادل بار لایه 7 (لایه کاربردی) است. استفاده از لایه 7 به بار متعادل کننده اجازه می دهد تا بر اساس محتوای درخواستی کاربر، درخواست ها را به سرورهای باطن مختلف ارسال کند. این حالت متعادل کننده بار به شما امکان می دهد چندین سرور برنامه وب را با دامنه و پورت یکسان اجرا کنید. در زیر یک نمودار ساده از نحوه عملکرد متعادل کننده بار لایه 7 آورده شده است:

لایه 7 متعادل کننده بار و پیکربندی هاپروکسی

در حال ارسال درخواست به سرورهای پشتیبان بر اساس محتوای درخواستی کاربر

در این مثال، اگر کاربری از قسمت yourdomain.com/blog وب سایت شما بازدید کند، درخواست به پشتیبان وبلاگ ارسال می شود. وبلاگ پشتیبان مجموعه ای از سرورهایی است که یک برنامه وبلاگ را اجرا می کنند. در همین حال، درخواست‌های دیگری به پشتیبان وب ارسال می‌شود که ممکن است مسئول اجرای برنامه دیگری باشد.

همچنین همانطور که در تصویر نشان داده شده است، هر دو بک اند در این مثال از یک سرور پایگاه داده استفاده می کنند. به عنوان مثال، کد زیر یک قطعه کد از پیکربندی Frontend است:

frontend http
  bind *:80
  mode http

  acl url_blog path_beg /blog
  use_backend blog-backend if url_blog
 
  default_backend web-backend

در این کدها به نکات زیر توجه کنید:

  • این قطعه کد مسئول پیکربندی Frontend به نام http است که تمام ترافیک ورودی در پورت 80 را مدیریت می کند.
  • اگر درخواست ارسال شده توسط کاربر با /blog شروع شود، ACL ذکر شده در این کدها (url_blog path_beg /blog) با آن مطابقت دارد.
  • خط default_backend وب‌بک‌اند نیز مشخص می‌کند که تمام ترافیک دیگر به وب‌بک‌اند ارسال می‌شود.

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

الگوریتم‌های مورد استفاده برای متعادل‌سازی بار تعیین می‌کنند که در صورت نیاز به تعادل بار، کدام سرور باطن را انتخاب کند. HAProxy چندین گزینه برای الگوریتم های متعادل کننده بار ارائه می دهد که برخی از رایج ترین آنها در زیر ذکر شده است:

1. الگوریتم Roundrobin

الگوریتم Roundrobin که الگوریتم پیش فرض در HAProxy است، سرورها را به ترتیب و یکی پس از دیگری انتخاب می کند.

2. الگوریتم حداقلی

این الگوریتم سروری را با کمترین تعداد اتصال انتخاب می کند. استفاده از الگوریتم ذکر شده برای جلسات طولانی بیشتر کاربردی است. علاوه بر این، سرورهای واقع در همان backend با استفاده از الگوریتم Round-Robin انتخاب می شوند.

3. منبع الگوریتم

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

تست سلامت سرورها در HAProxy

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

اجرای تست سلامت سرور به این معنی است که اگر یکی از سرورها خراب باشد، دیگر نیازی به حذف دستی آن ندارید. برای انجام این تست، HAProxy یک اتصال TCP به سرور ارسال می کند. همچنین باید توجه داشته باشید که برای انواع خاصی از backendها، مانند سرورهای پایگاه داده، بررسی سلامت سرور پیش فرض لزوماً به معنای سالم بودن سرور نیست.

مکانیزم HA (در دسترس بودن بالا).

هر دو روش تعادل بار سطح 4 و 7 که شرح داده شده اند از یک متعادل کننده بار برای هدایت بار ترافیک به سرورهای باطن استفاده می کنند. با این حال، سوال اصلی این است که اگر Load Balancer خود در دسترس نباشد، چه اتفاقی می‌افتد؟ پاسخ ساده است: در این مورد، نه تنها تعادل بار وجود نخواهد داشت. بلکه خود سرورها و در نتیجه کل سیستم در دسترس نخواهد بود.

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

مکانیسم دسترسی بالا چیست؟

بررسی مکانیسم دسترسی بالا

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

هنگامی که کاربر وارد وب سایت شما می شود، درخواست از طریق آدرس IP خارجی به متعادل کننده بار فعال می رود. حالا حتی اگر این Load Balancer غیرفعال باشد، مکانیسم failover آن را شناسایی کرده و به طور خودکار آدرس IP را به یکی از سرورهای غیرفعال شده اختصاص می دهد و به این ترتیب سرویس ادامه می یابد.

نتیجه

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

برای آشنایی با انواع سرور و نکات مهم قبل از خرید سرور مقاله زیر را مطالعه کنید.

سرور چیست؟

سوالات متداول

1. HAProxy چیست؟

HAProxy یک نرم افزار رایگان و متن باز برای تعادل بار است که بر روی سرورها ایجاد شده است.

2. آیا استفاده از HAProxy رایگان است؟

بله، این نرم افزار به صورت متن باز و رایگان منتشر شده است.

3. از چه الگوریتم هایی برای متعادل سازی بار در HAProxy استفاده می شود؟

در نرم افزار HAProxy از الگوریتم های RoundRobin، LeastConn و Source در تعادل بار استفاده می شود.

4. نرم افزار HAProxy روی کدام سیستم عامل قابل نصب است؟

نرم افزار HAProxy را می توان در سیستم عامل های لینوکس، macOS و FreeBSD استفاده کرد.