HAProxy — балансировщик нагрузки для TCP и HTTP приложений посредством распределения входящих запросов на несколько обслуживающих серверов.
HAProxy поддерживает балансировку, как HTTP/HTTPS/HTTP2 (например, веб-серверы или Elasticsearch), так и TCP соединений (например, postgres или redis).
Поддерживаются разные алгоритмы балансировки запросов.
Установка HAProxy
1. Обновите менеджер пакетов(репозиториев) apt:
apt update -y
2. Установите HAProxy, используя следующую команду:
apt install haproxy -y
3. Запустите службу балансировщика HAProxy:
systemctl start haproxy
4. Добавьте HAProxy в автозагрузку:
systemctl enable haproxy
Настройка базовой конфигурации HAProxy
1. Переместите конфигурационный файл по умолчанию:
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.backup
2. Создайте новый конфигурационный файл с помощью команды:
nano /etc/haproxy/haproxy.cfg
Базовая часть кофигурационного файла описывает параметры работы сервера HAProxy: режим работы, таймауты, количество подключений, включение web‑интерфейса и т.д.
В примере приведена необходимая конфигурация параметров для работы сервера HAProxy.
Подробнее об используемых параметрах читайте в официальной документации HAProxy Documentation.
Пример базовой конфигурационный HAProxy для файла haproxy.cfgglobal
maxconn 100000
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
mode tcp
log global
retries 2
timeout queue 5s
timeout connect 5s
timeout client 60m
timeout server 60m
timeout check 15s
listen stats
mode http
bind haproxy-server.your_domain:7000
stats enable
stats uri /
### Web ELMA365 ###
### Web ELMA365 ###
### PostgreSQL ###
### PostgreSQL ###
### RabbitMQ ###
### RabbitMQ ###
### S3 MinIO ###
### S3 MinIO ###
### Docs Server ###
### Docs Server ###
Пример конфигурации HAProxy для веб сервера Nginx:global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4096
user haproxy
group haproxy
daemon
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 20s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 30s
timeout check 10s
maxconn 3000
frontend fe_http
option forwardfor except 127.0.0.1
option httpclose
bind *:8181
default_backend be_http
backend be_http
balance roundrobin
option httpchk
server ws_1 192.168.1.1:80 check port 80
server ws_2 192.168.1.2:80 check port 80
3.Перезапустите балансировщик нагрузки HAProxy:
systemctl restart haproxy