HAProxy در لینوکس: راهنمای جامع نصب، کانفیگ

مقدمه

HAProxy یک نرم‌افزار محبوب و قدرتمند برای Load Balancing و Proxying است که به‌طور عمده برای توزیع درخواست‌های HTTP و TCP بین سرورهای مختلف استفاده می‌شود. این ابزار به‌ویژه برای محیط‌های با مقیاس بزرگ و نیازمند مقیاس‌پذیری بالا طراحی شده است و در دیتاسنترها و سیستم‌های آنلاین کاربرد فراوانی دارد.

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


بخش اول: نصب HAProxy در لینوکس

1. نصب HAProxy در سیستم‌های مبتنی بر Debian/Ubuntu

برای نصب HAProxy روی سیستم‌های مبتنی بر Debian یا Ubuntu، کافی است از دستور زیر استفاده کنید:

sudo apt update
sudo apt install haproxy

2. نصب HAProxy در سیستم‌های مبتنی بر Red Hat/CentOS

برای نصب HAProxy در سیستم‌های مبتنی بر Red Hat یا CentOS، از دستور زیر استفاده کنید:

sudo yum install haproxy

3. بررسی نسخه نصب‌شده

پس از نصب HAProxy، می‌توانید با دستور زیر نسخه نصب‌شده را بررسی کنید:

haproxy -v

بخش دوم: پیکربندی اولیه HAProxy

1. فایل پیکربندی HAProxy

فایل پیکربندی اصلی HAProxy معمولاً در مسیر /etc/haproxy/haproxy.cfg قرار دارد. این فایل برای تنظیمات مربوط به frontend (ورودی درخواست‌ها)، backend (سرورهای مقصد)، و listen (ترکیب frontend و backend) استفاده می‌شود.

برای ویرایش این فایل، از ویرایشگر متنی مانند nano یا vim استفاده کنید:

sudo nano /etc/haproxy/haproxy.cfg

2. تنظیمات ابتدایی HAProxy

در این بخش، تنظیمات ابتدایی را انجام می‌دهیم. یک پیکربندی ساده که درخواست‌ها را به دو سرور توزیع می‌کند به‌صورت زیر خواهد بود:

global
log /dev/log local0
maxconn 200

defaults
log global
option httplog
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms

frontend http-in
bind *:80
default_backend servers

backend servers
server server1 192.168.1.101:80 check
server server2 192.168.1.102:80 check

در این پیکربندی:

  • frontend http-in: ورودی درخواست‌ها را دریافت می‌کند.
  • backend servers: درخواست‌ها را به سرورهای مختلف توزیع می‌کند.

3. راه‌اندازی HAProxy

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

sudo systemctl start haproxy

برای تنظیم HAProxy جهت شروع به‌طور خودکار در زمان بوت، از دستور زیر استفاده کنید:

sudo systemctl enable haproxy

بخش سوم: تنظیمات پیشرفته HAProxy

1. Load Balancing با الگوریتم‌های مختلف

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

الف. Round Robin

در الگوریتم Round Robin، درخواست‌ها به‌طور مساوی بین سرورها توزیع می‌شوند. این الگوریتم به‌طور پیش‌فرض در HAProxy فعال است و نیازی به تنظیمات خاصی ندارد.

backend servers
balance roundrobin
server server1 192.168.1.101:80 check
server server2 192.168.1.102:80 check
ب. Least Connections

در الگوریتم Least Connections، درخواست‌ها به سروری ارسال می‌شوند که کمترین تعداد اتصال فعال را دارد. این الگوریتم برای سیستم‌هایی که بار آنها به‌طور متغیر است، مفید است.

backend servers
balance leastconn
server server1 192.168.1.101:80 check
server server2 192.168.1.102:80 check
ج. Source IP Hash

در این الگوریتم، درخواست‌ها بر اساس آدرس IP مبدأ به سرورها توزیع می‌شود. این روش به‌ویژه برای حفظ session persistence (پایداری نشست) مفید است.

backend servers
balance source
server server1 192.168.1.101:80 check
server server2 192.168.1.102:80 check

2. تنظیمات SSL/TLS در HAProxy

برای پیکربندی SSL در HAProxy و استفاده از HTTPS، نیاز به گواهی SSL و کلید خصوصی خواهید داشت. پس از تهیه گواهی SSL، می‌توانید آن را در پیکربندی HAProxy به‌صورت زیر فعال کنید.

الف. تنظیم SSL در Frontend

در این پیکربندی، HAProxy به پورت 443 (HTTPS) گوش می‌دهد و درخواست‌ها را به‌صورت امن به سرورهای backend ارسال می‌کند:

frontend https-in
bind *:443 ssl crt /etc/ssl/certs/yourdomain.pem
default_backend servers
ب. تنظیم SSL Termination

در این حالت، HAProxy مسئول پردازش ارتباطات SSL خواهد بود و ارتباطات بعدی به سرورهای backend به‌صورت معمولی (HTTP) خواهد بود:

frontend https-in
bind *:443 ssl crt /etc/ssl/certs/yourdomain.pem
default_backend servers

backend servers
server server1 192.168.1.101:80 check
server server2 192.168.1.102:80 check

3. تنظیمات Health Checks

HAProxy امکان بررسی سلامت سرورها را دارد. این قابلیت از اهمیت ویژه‌ای برخوردار است زیرا از ارسال درخواست‌ها به سرورهای خراب یا غیرقابل دسترس جلوگیری می‌کند.

برای فعال‌سازی Health Checks برای سرورهای backend، از تنظیمات زیر استفاده کنید:

backend servers
server server1 192.168.1.101:80 check inter 2000 rise 2 fall 3
server server2 192.168.1.102:80 check inter 2000 rise 2 fall 3

در این تنظیمات:

  • inter 2000: فاصله زمانی بین هر بررسی سلامت ۲ ثانیه است.
  • rise 2: سرور باید ۲ بار به‌طور موفقیت‌آمیز درخواست‌ها را پاسخ دهد تا به‌عنوان سرور سالم شناخته شود.
  • fall 3: سرور باید ۳ بار شکست در پاسخ به درخواست‌ها را تجربه کند تا از لیست سرورهای فعال حذف شود.

بخش چهارم: تنظیمات خاص و بهینه‌سازی

1. استفاده از Sticky Sessions

در برخی موارد، برای حفظ وضعیت نشست کاربر (مانند سبد خرید در فروشگاه‌های آنلاین)، لازم است که درخواست‌ها از یک کاربر خاص به سرور مشخصی ارسال شوند. این کار را می‌توان با استفاده از Sticky Sessions یا Session Persistence انجام داد.

backend servers
balance roundrobin
cookie SERVERID insert indirect nocache
server server1 192.168.1.101:80 check cookie s1
server server2 192.168.1.102:80 check cookie s2

در این پیکربندی:

  • cookie SERVERID insert indirect nocache: یک کوکی برای شناسایی سرور اختصاصی هر کاربر ارسال می‌شود.
  • cookie s1 و cookie s2: برای هر سرور یک شناسه کوکی تعریف می‌شود.

2. تنظیمات Rate Limiting

برای جلوگیری از حملات DDoS یا جلوگیری از درخواست‌های بیش از حد از یک کاربر خاص، می‌توانید از Rate Limiting استفاده کنید.

frontend http-in
bind *:80
acl too_many_requests sc_http_req_rate(0) gt 100
http-request deny if too_many_requests

در این تنظیمات:

  • sc_http_req_rate(0) gt 100: تعداد درخواست‌ها از یک منبع خاص را محدود به ۱۰۰ درخواست در دقیقه می‌کند.
  • http-request deny if too_many_requests: درخواست‌های اضافی را مسدود می‌کند.

نتیجه‌گیری

در این مقاله، به‌طور کامل نحوه نصب و پیکربندی HAProxy به همراه تنظیمات پیشرفته‌ای مانند Load Balancing، SSL/TLS Termination، Health Checks و Sticky Sessions را بررسی کردیم. همچنین، به بهینه‌سازی‌های مختلفی مانند Rate Limiting پرداخته‌ایم که می‌تواند به حفاظت از سرور و بهبود عملکرد کمک کند.

با این تنظیمات و بهترین شیوه‌ها، می‌توانید HAProxy را برای بارگذاری متعادل و مقیاس‌پذیری بالا در سیستم‌های پیچیده و بزرگ به‌خوبی راه‌اندازی کنید.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *