ELMA365 On-Premises > Подготовка инфраструктуры > Балансировщик нагрузки / Отказоустойчивый HAProxy

Отказоустойчивый HAProxy

HAProxy — инструмент обеспечения высокой доступности и балансировки нагрузки. В архитектуре системы ELMA365 HAProxy используется для построения отказоустойчивой архитектуры при организации высокодоступного кластера ELMA365. В зависимости от выстраиваемой архитектуры выбирается необходимая конфигурация HAProxy. В статье описана установка HAProxy и keepalived для ОС Ubuntu Linux 20.04 и 22.04.

Установка состоит из шести этапов:

  1. Подготовка нод (серверов).
  2. Установка HAProxy.
  3. Установка keepalived.
  4. Настройка keepalived.
  5. Настройка базовой конфигурации HAProxy.
  6. Добавление конфигураций для балансировки компонентов ELMA365.

Шаг 1: Подготовка нод (серверов)

  1. Создайте две ноды (сервера) с последовательно пронумерованными именами хостов:
  • haproxy-server1.your_domain, 192.168.1.1;
  • haproxy-server2.your_domain, 192.168.1.2.
  1. Создайте сопоставления имён хостов в DNS-сервере и внесите соответствующую А-запись для виртуального IP:

haproxy-server.your_domain A 192.168.1.13

Если такой возможности нет, внесите нужные записи в /etc/hosts.

  1. Включите параметры ядра net.ipv4.ip_nonlocal_bind, net.ipv4.ip_forward, выполнив следующие команды:

sudo echo net.ipv4.ip_nonlocal_bind=1 >> /etc/sysctl.conf
sudo echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
sudo sysctl -p

Шаг 2: Установка HAProxy

  1. Установите HAProxy на все узлы, выполнив команду:

sudo apt install haproxy -y

  1. Запустите сервис HAProxy на всех узлах и добавьте его в автозагрузку:

sudo systemctl enable --now haproxy

Шаг 3: Установка keepalived

Установите keepalived на все узлы:

sudo apt update
sudo apt install keepalived

Шаг 4: Настройка keepalived

  1. Создайте директорию keepalived:

sudo mkdir -p /usr/libexec/keepalived

  1. Создайте файл скрипта haproxy_check.sh для отслеживания работоспособности HAProxy:

sudo nano /usr/libexec/keepalived/haproxy_check.sh

  1. Добавьте в файл haproxy_check.sh сценарий проверки работоспособности HAProxy:

#!/bin/bash
/bin/kill -0 $(cat /var/run/haproxy.pid)

  1. Создайте файл конфигурации keepalived на каждой ноде:

sudo nano /etc/keepalived/keepalived.conf

  1. Добавьте в файл keepalived.conf пример конфигураций keepalived для узла haproxy-server1.your_domain:

global_defs {
  router_id haproxy-server1
  enable_script_security
  script_user root
}
 
vrrp_script haproxy_check {
  script "/usr/libexec/keepalived/haproxy_check.sh"
  interval 2
  weight 2
}
 
vrrp_instance VI_1 {
  interface eth0
  virtual_router_id 101
  priority 100
  advert_int 2
  state MASTER
  virtual_ipaddress {
    192.168.1.13
  }
  track_script {
    haproxy_check
  }
  authentication {
    auth_type PASS
    auth_pass SecretPassword
  }
}

  1. Добавьте в файл keepalived.conf пример конфигураций keepalived для узла haproxy-server2.your_domain:

global_defs {
  router_id haproxy-server2
  enable_script_security
  script_user root
}
 
vrrp_script haproxy_check {
  script "/usr/libexec/keepalived/haproxy_check.sh"
  interval 2
  weight 2
}
 
vrrp_instance VI_1 {
  interface eth0
  virtual_router_id 101
  priority 90
  advert_int 2
  state BACKUP
  virtual_ipaddress {
    192.168.1.13
  }
  track_script {
    haproxy_check
  }
  authentication {
    auth_type PASS
    auth_pass SecretPassword
  }
}

Где введённые параметры:

  • router_id — ID роутера, уникальное значение на каждом узле;
  • script_user — пользователь, от имени которого будут запускаться скрипты VRRP;
  • interface — наименование интерфейса, к которому будет привязан keepalived;
  • virtual_router_id — ID виртуального роутера, общее значение на всех узлах;
  • priority — приоритет нод внутри виртуального роутера;
  • state — тип роли ноды в виртуальном роутере;
  • virtual_ipaddress — виртуальный IP;
  • auth_type — тип аутентификации в виртуальном роутере;
  • auth_pass — пароль.
  1. Перезапустите keepalived на всех узлах:

sudo systemctl restart keepalived

Шаг 5: Настройка базовой конфигурации HAProxy

  1. Переместите конфигурационный файл по умолчанию:

sudo mv /etc/haproxy/haproxy.cfg{,.original}

  1. Создайте и откройте для редактирования новый конфигурационный файл с помощью команды:

sudo nano /etc/haproxy/haproxy.cfg

Пример базовой конфигурационный HAProxy для файла haproxy.cfg

  1. Перезапустите HAProxy:

sudo systemctl restart haproxy

Шаг 6: Добавление конфигураций для балансировки компонентов ELMA365

Конфигурации компонентов ELMA365 добавляются в файл haproxy.cfg по необходимости.

В зависимости от выстраиваемой архитектуры добавьте конфигурации: