Автозагрузка и включение:
systemctl enable haproxy && systemctl start haproxy
Добавляем записи о соседних серверах с nginx:
vi /etc/hosts 10.0.2.20 nginx1.domain.local nginx1 10.0.2.30 nginx2.domain.local nginx2
Бэкапим конфигурационный файл:
cd /etc/haproxy/ && cp haproxy.cfg haproxy.cfg.original
Секции: global - Глобальные настройки, применяются ко всем публикациям defaults - Настройки по умолчанию, применяются если не указаны явно в публикациях frontend - Правила обработки и передачи приходящих на сервер с haproxy запросов серверам в backend backend - Настройки backend серверов userlist - Допсекция
Пример настройки секции frontend:
frontend balance_http
bind 10.0.2.10:8080
acl url_stat path_end -i .css .js
use_backend webserver if url_stat
default_backend webserver
Где: balance_http - название фронтэнда url_stat - название правила
use_backend webserver if url_stat - правило обработки
Запросы попавшие под действие правила обработаются backend с названием webserver
Слушаем запросы на порту 8080, ip - 10.0.2.10
Поступающие на файлы с расширением .css\.js запросы передаем на backend с названием webserver
Остальные запросы передаем на backend с названием webserver
default_backend - указывает на backend по умолчанию
Пример настройки секции backend:
backend webserver
balance roundrobin
server nginx1 10.0.2.20:80 check
server nginx2 10.0.2.30:80 check
Где алгоритм балансировки запросов: roundrobin - по очередно на каждый сервер в зависимости от указанного веса, вес может быть изменен на лету static-rr - по очередно на каждый сервер в зависимости от указанного веса, вес не может быть изменен на лету
uri - с одинковыми url (все, что до знака ?) будут идти на один и тот-же сервер url_param - с одинаковыми параметрами get (все, что после знака ?) будут идти на один и тот-же сервер
lessconn - на наменее загруженный сервер с наименьшим количеством активных соединений source - от одного и того-же ip адреса идут на один и тот-же сервер
После изменения конфига рестартуем сервер:
systemctl restart haproxy или systemctl reload haproxy && systemctl status haproxy