Краткое руководство по запуску балансировщика нагрузки HAProxy на ОС CentOS Stream 8.5.
Для начала создадим правило для файрволла и применим его
# firewall-cmd --add-service=http --zone=public --permanent # firewall-cmd --reload
После этого установим пакет haproxy
# yum install haproxy
Затем запустим службу haproxy и включим её в автозагрузку
# systemctl start haproxy # systemctl enable haproxy
Теперь открываем файл конфигурации haproxy.cfg
# vi /etc/haproxy/haproxy.cfg
и в самом конце допишем такие строчки:
################### frontend cvm35 bind *:80 default_backend cvm35_back frontend cvm bind *:8080 default_backend cvm_back backend cvm35_back balance roundrobin server dvm31 192.168.1.31:80 server dvm32 192.168.1.32:80 backend cvm_back server cvm 192.168.1.20:80 ###################
Теперь подробнее о нём
У нас имеются 4 машины
- две — с веб-сервером nginx: dvm31 с IP 192.168.1.31 и dvm32 с IP 192.168.1.32, обе — с открытым портом 80/tcp (это указано в параметре bind);
- одна машина — это сервер с HAProxy — cvm35, например, с IP 192.168.1.35;
- и ещё одна — cvm с IP 192.168.1.20 тоже, с веб-сервером nginx или apache, она также использует порт 80/tcp, но обратиться к этой машине возможно только через порт 8080/tcp (это также указано в параметре bind).
В данном конфиге запросы поступают равномерно по всем перечисленным серверам, но можно распределить их по количеству запросов, добавив параметр weight, например, каждый 10-й запрос будет отправляться на сервер dvm32:
server dvm31 192.168.1.31:80 weight 90 server dvm32 192.168.1.32:80 weight 10
После этого перезапустим службу haproxy
# systemctl restart haproxy
На другой машине в сети в браузере вводим http://ИмяХоста/ или http://IP_сервера/ (IP сервера в данном случае 192.168.1.35) и подключимся к веб-серверам 192.168.1.31 и 192.168.1.32.
У HAProxy есть также множество других фишек, подходящих под определённые задачи. Все они описаны в документации и различных мануалах, которые можно найти на просторах всемирной паутины.