Запуск HAProxy на CentOS Stream 8

Краткое руководство по запуску балансировщика нагрузки 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 есть также множество других фишек, подходящих под определённые задачи. Все они описаны в документации и различных мануалах, которые можно найти на просторах всемирной паутины.

Добавить комментарий

Ваш адрес email не будет опубликован.