رفتن به محتوای اصلی
iServer24 | ارائه‌کننده سرورهای ابری و اختصاصی
راه‌اندازی Load Balancer با HAProxy برای توزیع بار بین چند سرور

راه‌اندازی Load Balancer با HAProxy برای توزیع بار بین چند سرور

شبکه
3 دقیقه مطالعه

راهنمای نصب و پیکربندی HAProxy روی اوبونتو برای توزیع بار بین چند سرور بک‌اند، آشنایی با الگوریتم‌های Load Balancing و راه‌اندازی Health Check.

راه‌اندازی Load Balancer با HAProxy برای توزیع بار بین چند سرور

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

HAProxy چیست و چه کاربردی دارد؟

HAProxy (مخفف High Availability Proxy) یک Load Balancer و Reverse Proxy سبک و بسیار سریع است که ترافیک ورودی را بین چند سرور بک‌اند توزیع می‌کند. اگر با مفهوم Reverse Proxy در نصب پشته LEMP آشنا شده باشید، HAProxy را می‌توان یک لایه جلوتر از همان Nginx تصور کرد که ترافیک را بین چند سرور Nginx یا اپلیکیشن پخش می‌کند.

الگوریتم‌های توزیع بار در HAProxy

الگوریتمتوضیح
Round Robinترافیک به‌ترتیب و مساوی بین سرورها توزیع می‌شود؛ الگوریتم پیش‌فرض و ساده‌ترین حالت
Leastconnدرخواست به سروری فرستاده می‌شود که در آن لحظه کمترین اتصال فعال را دارد
Sourceبر اساس IP کاربر، همیشه به یک سرور ثابت هدایت می‌شود (مناسب Session Persistence)
URIتصمیم‌گیری بر اساس مسیر URL درخواست انجام می‌شود

نصب HAProxy روی اوبونتو

6 خط
sudo apt update
sudo apt install haproxy -y

sudo systemctl enable haproxy
sudo systemctl start haproxy
sudo systemctl status haproxy
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

پیکربندی Frontend و Backend

تنظیمات اصلی HAProxy در فایل /etc/haproxy/haproxy.cfg قرار دارد. یک نمونهٔ ساده برای توزیع بار بین دو سرور بک‌اند:

8 خط
frontend http_front
    bind *:80
    default_backend http_back

backend http_back
    balance roundrobin
    server web1 192.168.1.10:80 check
    server web2 192.168.1.11:80 check
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

پس از هر تغییر در این فایل، سینتکس را تست و سپس سرویس را ری‌لود کنید:

2 خط
sudo haproxy -c -f /etc/haproxy/haproxy.cfg
sudo systemctl reload haproxy
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

بررسی سلامت سرورها با Health Check

پارامتر check در انتهای هر خط server باعث می‌شود HAProxy به‌صورت دوره‌ای سلامت آن سرور را بررسی کند. اگر سروری پاسخ ندهد، HAProxy به‌طور خودکار آن را از چرخهٔ توزیع بار خارج می‌کند تا کاربران با خطا مواجه نشوند. برای بررسی سطح HTTP (نه فقط اتصال TCP) می‌توانید از option httpchk استفاده کنید:

5 خط
backend http_back
    option httpchk GET /health
    balance leastconn
    server web1 192.168.1.10:80 check
    server web2 192.168.1.11:80 check
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

مشاهده وضعیت زنده با HAProxy Stats

HAProxy یک پنل آماری داخلی دارد که وضعیت لحظه‌ای هر سرور بک‌اند را نشان می‌دهد:

5 خط
listen stats
    bind *:8404
    stats enable
    stats uri /stats
    stats auth admin:YourStrongPassword
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

پس از تنظیم این بخش، آدرس http://server-ip:8404/stats نمایی زنده از وضعیت، تعداد اتصالات و سلامت هر سرور بک‌اند را در اختیار شما می‌گذارد.

جمع‌بندی

HAProxy با کمترین سربار و بالاترین پایداری، امکان توزیع بار بین چند سرور را فراهم می‌کند. پیش از راه‌اندازی HAProxy، لازم است حداقل دو سرور بک‌اند آماده و پیکربندی‌شده داشته باشید؛ اگر هنوز این مرحله را طی نکرده‌اید، راه‌اندازی اولیهٔ سرور Ubuntu نقطهٔ شروع خوبی است.

ارتباط با معماری میکروسرویس

Load Balancer نقش کلیدی در معماری‌های توزیع‌شده و میکروسرویس ایفا می‌کند، جایی که ترافیک باید بین چندین نمونه از یک سرویس توزیع شود. برای آشنایی با این‌که چه زمانی مهاجرت از معماری یکپارچه به میکروسرویس منطقی است، می‌توانید به مقاله مهاجرت از Monolith به Microservices مراجعه کنید.

زیرساخت ابری برای اجرای همین آموزش

سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

ادامه یادگیری:Docker·Ubuntu·VPS