برای بالانس کردن درخواست ها (Requests) در سرور های مختلف میتوانید از Ha Proxy استفاده کنید. توسط این نرم افزار میتوانید لیستی از سرور های فرانت اند و بک اند را تعریف کنید که با توجه به الگوریتمی که انتخاب کرده اید درخواست ها رو بین سرور ها تقسیم کند.برای مثال میتوانید طوری سرور HA را به گونه ای تنظیم کنید که برای مثال به صورت راند رابین بین سرور A و B درخواست های کاربران را تقسیم کند.

 

نصب 

 

برای نصب Ha Proxy در سیستم عامل ubuntu میتوانید از دستور زیر استفاده کنید:

sudo add-apt-repository ppa:vbernat/haproxy-1.8
sudo apt-get update
sudo apt-get install haproxy

اگر سیستم عامل سرور cent os دارید از دستور زیر استفاده کنید :

yum install gcc openssl-devel readline-devel systemd-devel make pcre-devel
cd
curl https://www.lua.org/ftp/lua-5.3.5.tar.gz > lua-5.3.5.tar.gz
curl http://www.haproxy.org/download/1.9/src/haproxy-1.9.7.tar.gz > haproxy-1.9.7.tar.gz
tar xf lua-5.3.5.tar.gz
tar xf haproxy-1.9.7.tar.gz
cd lua-5.3.5
make INSTALL_TOP=/opt/lua-5.3.5 linux install
cd 
cd haproxy-1.9.7
 make USE_NS=1 \
USE_TFO=1 \
USE_OPENSSL=1 \
USE_ZLIB=1 \
USE_LUA=1 \
USE_PCRE=1 \
USE_SYSTEMD=1 \
USE_LIBCRYPT=1 \
USE_THREAD=1 \
TARGET=linux2628 \
LUA_INC=/opt/lua-5.3.5/include \
LUA_LIB=/opt/lua-5.3.5/lib 
make help
make PREFIX=/opt/haproxy-1.9.7 install
groupadd -g 188 haproxy
useradd -g 188 -u 188 -d /var/lib/haproxy -s /sbin/nologin -c haproxy haproxy
groupadd -g 188 haproxy
useradd -g 188 -u 188 -d /var/lib/haproxy -s /sbin/nologin -c haproxy haproxy

حالا یک سرویس در مسیر زیر تعریف کنید :

/etc/systemd/system/haproxy-1.9.7.service

با مقدار زیر‌ :

[Unit]
Description=HAProxy 1.9.7
After=syslog.target network.target

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/haproxy-1.9.7
ExecStart=/opt/haproxy-1.9.7/sbin/haproxy -f $CONFIG_FILE -p $PID_FILE $CLI_OPTIONS
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -USR1 $MAINPID

[Install]
WantedBy=multi-user.target

و سپس فایل زیر را بسازید :

/etc/sysconfig/haproxy-1.9.7

با مقدار‌:

# Command line options to pass to HAProxy at startup
# The default is:  
#CLI_OPTIONS="-Ws"
CLI_OPTIONS="-Ws"

# Specify an alternate configuration file. The default is:
#CONFIG_FILE=/etc/haproxy/haproxy-1.9.7.conf
CONFIG_FILE=/etc/haproxy/haproxy-1.9.7.conf

# File used to track process IDs. The default is:
#PID_FILE=/var/run/haproxy-1.9.7.pid
PID_FILE=/var/run/haproxy-1.9.7.pid

و حالا Daemon را ریلود کنید :

systemctl daemon-reload

کانفیگ

برای کانفینگ کردن Ha Proxy فایل کانفیگ را در مسیر زیر باز کنید:

/etc/haproxy/haproxy-1.9.7.conf

برای شروع با مقادیر زیر :

global
    daemon
    maxconn 256
    user        haproxy
    group       haproxy
    chroot      /var/lib/haproxy

defaults
    mode http
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

frontend http
    bind *:8000
    default_backend servers

backend servers
    server server 127.0.0.1:81

در فایل کانفیگ بالا ، ۴ قسمت اصلی وجود دارد که عبارتند از ‌:

  • global تنظیمات عمومی سرور در این قسمت تعریف شده است. برای مثال دیمن بودن سرور و کاربر و گروه کاربری سرور ، همچنین یک chroot در فولدر haproxy نیز انجام شده است.
  • defaults تنظیمات پیشفرض سرور از جمله تایم اوت شدن سرور ها و تایم اوت مشتری و …
  • frontend http تنظیمات سرور ha proxy ، مثل بایند پورت و گروه سرورهای پیش فرض
  • backend server تنظیمات سرور های بک اند ( مثلا آدرس سرور های php یا node یا … ) که الگوریتم پیش فرض آن Round Robin است، در این قسمت لیست سرور ها رو (هر سرور در یک خط) وارد کنید.

بالانس کردن درخواست ها در HA Proxy

Ha proxy

برای اجرا کردن سرور ، سرویس مربوطه رو اجرا میکنیم :

systemctl start haproxy-1.9.7.service

حالا باید شما در آدرس :8000 سیستم به آدرس آیپی هایی که در قسمت backend وارد کرده اید دسترسی داشته باشید.

برای اینکه ha proxy به صورت پیش فرض هنگام بوت شدن سیستم عامل اجرا شود از دستور زیر استفاده کنید :

systemctl enable haproxy-1.9.7

 

پیشنهاد میکنم مقاله ی کانفیگ کردن SSL برروی Ha Proxy را از دست ندهید. و از این به بعد در صورت امکان با بالانس کردن درخواست ها در HA Proxy بار را بین سرور ها تقسیم کنید.

دسته بندی شده در: