Краткая инструкция по запуску балансировщика нагрузки HAProxy на ОС Debian GNU/Linux 11.3 и Ubuntu Server 22.04.
В первую очередь установим пакет haproxy
# apt install haproxy
Затем открываем файл /etc/haproxy/haproxy.cfg
# nano /etc/haproxy/haproxy.cfg
и в самом конце допишем такой кусок конфигурации:
############### frontend dvm30 bind *:80 default_backend dvm30_back frontend dvm bind *:8080 default_backend dvm_back backend dvm30_back balance roundrobin server dvm31 192.168.1.31:80 server dvm32 192.168.1.32:80 backend dvm_back server dvm 192.168.1.20:80 ###############
Теперь подробнее о нём
У нас имеются 4 машины
- две — с веб-сервером nginx: dvm31 с IP 192.168.1.31 и dvm32 с IP 192.168.1.32, обе — с открытым портом 80/tcp (это указано в параметре bind);
- одна машина — это сервер с HAProxy — dvm30, например, с IP 192.168.1.30;
- и ещё одна — тоже, с веб-сервером nginx или apache — dvm с IP 192.168.1.20, она также использует порт 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.30) и подключимся к веб-серверам 192.168.1.31 и 192.168.1.32.
У HAProxy есть также множество других фишек, подходящих под определённые задачи. Все они описаны в документации и различных мануалах, которые можно найти на просторах всемирной паутины.