Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Установка и настройка HAProxy

HAProxy (High Availability Proxy) — универсальный балансировщик нагрузки с открытым исходным кодом и программное обеспечение прокси-сервера. Его задача — эффективно распределять входящий сетевой трафик между несколькими брокерами для обеспечения высокой доступности, надежности и оптимальной производительности системы.

Для корректной работы системы выберите тип балансировки с привязкой пользователя к определенному серверу: balance source и hash-type consistent.

Подробнее о типах балансировки.

В этом разделе описано, как установить и настроить балансировщик нагрузки HAProxy для операционных систем: РЕД ОС, Astra Linux, Debian, Alt Linux и OpenSUSE.

РЕД ОС

  1. Установите ПО HAProxy с помощью команды:

    sudo dnf install haproxy
  2. Включите службу haproxy и добавьте автозагрузку с помощью команды:

    sudo systemctl enable haproxy --now
  3. Добавьте в конец файла конфигурации /etc/haproxy/haproxy.cfg настройку серверов для балансировки.

    Пример конфигурации для внутреннего балансировщика

    В примере приведен файл конфигурации с типом балансировки Source IP Hash.

    frontend termit
       mode tcp
       bind :80
       default_backend termit_servers
    
    backend termit_servers
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:80 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:80 check check-ssl verify none
    
    frontend termit_https
       mode tcp
       bind :443
       default_backend termit_servers_https
    
    backend termit_servers_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:443 check check-ssl verify none
    
    frontend termit_8443_https
       mode tcp
       bind :8443
       default_backend termit_servers_8443_https
    
    backend termit_servers_8443_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance leastconn
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:8443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:8443 check check-ssl verify none
    Пример конфигурации для внешнего балансировщика

    В примере приведен файл конфигурации с типом балансировки Source IP Hash.

    frontend termit
       mode tcp
       bind :80
       default_backend termit_servers
    
    backend termit_servers
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:80 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:80 check check-ssl verify none
    
    frontend termit_https
       mode tcp
       bind :443
       default_backend termit_servers_https
    
    backend termit_servers_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:10443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:10443 check check-ssl verify none
    
    frontend termit_8443_https
       mode tcp
       bind :8443
       default_backend termit_servers_8443_https
    
    backend termit_servers_8443_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance leastconn
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:8443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:8443 check check-ssl verify none
  4. Проверьте созданный файл конфигурации с помощью команды ниже. Вывод команды не должен содержать ошибок. Предупреждения (warnings) не являются ошибками.

    sudo haproxy -f /etc/haproxy/haproxy.cfg -c
  5. Перезапустите службу с помощью команды:

    sudo systemctl restart haproxy
  6. Разрешите работу в SELinux с помощью команд:

    для внутреннего балансировщика
    sudo semanage port -m -t http_port_t -p tcp 9090
    для внешнего балансировщика
    sudo semanage port -a -t http_port_t -p tcp 10443
    sudo semanage port -m -t http_port_t -p tcp 10443
  7. Проверьте доступность СТД «Термит» по URL адресу, указанному при установке брокер серверов.

Astra Linux

Для установки используется последняя доступная в репозитории Astra Linux версия HAProxy. Подробнее о конфигурации можно ознакомиться на официальном сайте Astra Linux.

Для корректной работы HAProxy на Astra Linux в режимах высокой или максимальной защищенности может понадобится отключение или дополнительная настройка ненулевых классификационных меток. Подробнее о настройке можно ознакомиться на официальном сайте Astra Linux.

  1. Установите ПО HAProxy с помощью команды:

    sudo apt install haproxy
  2. Включите службу haproxy и добавьте автозагрузку с помощью команды:

    sudo systemctl enable haproxy --now
  3. Добавьте в конец файла конфигурации /etc/haproxy/haproxy.cfg настройку серверов для балансировки.

    Пример конфигурации для внутреннего балансировщика

    В примере приведен файл конфигурации с типом балансировки Source IP Hash.

    frontend termit
       mode tcp
       bind :80
       default_backend termit_servers
    
    backend termit_servers
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:80 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:80 check check-ssl verify none
    
    frontend termit_https
       mode tcp
       bind :443
       default_backend termit_servers_https
    
    backend termit_servers_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:443 check check-ssl verify none
    
    frontend termit_8443_https
       mode tcp
       bind :8443
       default_backend termit_servers_8443_https
    
    backend termit_servers_8443_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance leastconn
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:8443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:8443 check check-ssl verify none
    Пример конфигурации для внешнего балансировщика

    В примере приведен файл конфигурации с типом балансировки Source IP Hash.

    frontend termit
       mode tcp
       bind :80
       default_backend termit_servers
    
    backend termit_servers
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:80 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:80 check check-ssl verify none
    
    frontend termit_https
       mode tcp
       bind :443
       default_backend termit_servers_https
    
    backend termit_servers_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:10443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:10443 check check-ssl verify none
    
    frontend termit_8443_https
       mode tcp
       bind :8443
       default_backend termit_servers_8443_https
    
    backend termit_servers_8443_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance leastconn
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:8443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:8443 check check-ssl verify none
  4. Проверьте созданный файл конфигурации с помощью команды ниже. Вывод команды не должен содержать ошибок. Предупреждения (warnings) не являются ошибками.

    sudo haproxy -f /etc/haproxy/haproxy.cfg -c
  5. Перезапустите службу с помощью команды:

    sudo systemctl restart haproxy
  6. Проверьте доступность СТД «Термит» по URL адресу, указанному при установке брокера.

Debian

  1. Установите ПО HAProxy с помощью команды:

    sudo systemctl install haproxy
  2. Включите службу haproxy и добавьте автозагрузку с помощью команды:

    sudo systemctl enable haproxy --now
  3. Добавьте в конец файла конфигурации /etc/haproxy/haproxy.cfg настройку серверов для балансировки:

    Пример конфигурации для внутреннего балансировщика

    В примере приведен файл конфигурации с типом балансировки Source IP Hash.

    frontend termit
       mode tcp
       bind :80
       default_backend termit_servers
    
    backend termit_servers
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:80 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:80 check check-ssl verify none
    
    frontend termit_https
       mode tcp
       bind :443
       default_backend termit_servers_https
    
    backend termit_servers_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:443 check check-ssl verify none
    
    frontend termit_8443_https
       mode tcp
       bind :8443
       default_backend termit_servers_8443_https
    
    backend termit_servers_8443_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance leastconn
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:8443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:8443 check check-ssl verify none
    Пример конфигурации для внешнего балансировщика

    В примере приведен файл конфигурации с типом балансировки Source IP Hash.

    frontend termit
       mode tcp
       bind :80
       default_backend termit_servers
    
    backend termit_servers
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:80 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:80 check check-ssl verify none
    
    frontend termit_https
       mode tcp
       bind :443
       default_backend termit_servers_https
    
    backend termit_servers_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:10443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:10443 check check-ssl verify none
    
    frontend termit_8443_https
       mode tcp
       bind :8443
       default_backend termit_servers_8443_https
    
    backend termit_servers_8443_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance leastconn
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:8443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:8443 check check-ssl verify none
  4. Проверьте файл конфигурации с помощью команды:

    sudo haproxy -f /etc/haproxy/haproxy.cfg -c
  5. Перезапустите службу с помощью команды:

    sudo systemctl restart haproxy
  6. Проверьте доступность СТД «Термит» по URL адресу, указанному при установке брокера.

ALT Linux

  1. Установите ПО HAProxy с помощью команды:

    sudo apt-get install haproxy
  2. Включите службу haproxy и добавьте автозагрузку с помощью команды:

    sudo systemctl enable haproxy --now
  3. Добавьте в конец файла конфигурации /etc/haproxy/haproxy.cfg настройку серверов для балансировки.

    Пример конфигурации для внутреннего балансировщика

    В примере приведен файл конфигурации с типом балансировки Source IP Hash.

    frontend termit
       mode tcp
       bind :80
       default_backend termit_servers
    
    backend termit_servers
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:80 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:80 check check-ssl verify none
    
    frontend termit_https
       mode tcp
       bind :443
       default_backend termit_servers_https
    
    backend termit_servers_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:443 check check-ssl verify none
    
    frontend termit_8443_https
       mode tcp
       bind :8443
       default_backend termit_servers_8443_https
    
    backend termit_servers_8443_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance leastconn
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:8443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:8443 check check-ssl verify none
    Пример конфигурации для внешнего балансировщика

    В примере приведен файл конфигурации с типом балансировки Source IP Hash.

    frontend termit
       mode tcp
       bind :80
       default_backend termit_servers
    
    backend termit_servers
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:80 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:80 check check-ssl verify none
    
    frontend termit_https
       mode tcp
       bind :443
       default_backend termit_servers_https
    
    backend termit_servers_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:10443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:10443 check check-ssl verify none
    
    frontend termit_8443_https
       mode tcp
       bind :8443
       default_backend termit_servers_8443_https
    
    backend termit_servers_8443_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance leastconn
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:8443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:8443 check check-ssl verify none
  4. Проверьте созданный файл конфигурации с помощью команды ниже. Вывод команды не должен содержать ошибок. Предупреждения (warnings) не являются ошибками.

    sudo haproxy -f /etc/haproxy/haproxy.cfg -c
  5. Перезапустите службу с помощью команды:

    sudo systemctl restart haproxy
  6. Проверьте доступность СТД «Термит» по URL адресу, указанному при установке брокера.

OpenSUSE

  1. Установите ПО HAProxy с помощью команды:

    sudo zypper install haproxy
  2. Запустите службу haproxy с помощью команды:

    sudo systemctl enable haproxy --now
  3. Проверьте статус службы haproxy с помощью команды:

    sudo systemctl status haproxy

    Статус должен быть «Active».

    s  sql6
  4. Добавьте в конец файла конфигурации /etc/haproxy/haproxy.cfg настройку серверов для балансировки.

    Пример конфигурации для внутреннего балансировщика

    В примере приведен файл конфигурации с типом балансировки Source IP Hash.

    frontend termit
       mode tcp
       bind :80
       default_backend termit_servers
    
    backend termit_servers
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:80 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:80 check check-ssl verify none
    
    frontend termit_https
       mode tcp
       bind :443
       default_backend termit_servers_https
    
    backend termit_servers_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:443 check check-ssl verify none
    
    frontend termit_8443_https
       mode tcp
       bind :8443
       default_backend termit_servers_8443_https
    
    backend termit_servers_8443_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance leastconn
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:8443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:8443 check check-ssl verify none
    Пример конфигурации для внешнего балансировщика

    В примере приведен файл конфигурации с типом балансировки Source IP Hash.

    frontend termit
       mode tcp
       bind :80
       default_backend termit_servers
    
    backend termit_servers
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:80 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:80 check check-ssl verify none
    
    frontend termit_https
       mode tcp
       bind :443
       default_backend termit_servers_https
    
    backend termit_servers_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance source
       hash-type consistent
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:10443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:10443 check check-ssl verify none
    
    frontend termit_8443_https
       mode tcp
       bind :8443
       default_backend termit_servers_8443_https
    
    backend termit_servers_8443_https
       option httpchk
       http-check connect port 9090 ssl
       http-check send meth GET  uri /_/broker-health
       mode tcp
       balance leastconn
       server %Имя_Термит_Брокера_1% %IP_Адрес_Термит_Брокера_1%:8443 check check-ssl verify none
       server %Имя_Термит_Брокера_2% %IP_Адрес_Термит_Брокера_2%:8443 check check-ssl verify none
  5. Проверьте созданный файл конфигурации с помощью команды ниже. Вывод команды не должен содержать ошибок. Предупреждения (warnings) не являются ошибками.

    sudo haproxy -f /etc/haproxy/haproxy.cfg -c
  6. Перезапустите службу с помощью команды:

    sudo systemctl restart haproxy
  7. Проверьте статус службы с помощью команды:

    sudo systemctl status haproxy

    Статус должен быть «Active».

  8. Проверьте доступность СТД «Термит» по URL адресу, указанному при установке брокера.