HAProxy — инструмент обеспечения высокой доступности и балансировки нагрузки. В архитектуре системы ELMA365 HAProxy используется для построения отказоустойчивой архитектуры при организации высокодоступного кластера ELMA365. В зависимости от выстраиваемой архитектуры выбирается необходимая конфигурация HAProxy. В статье описана установка HAProxy и keepalived для ОС Ubuntu Linux 20.04 и 22.04.
Установка состоит из шести этапов:
- Подготовка нод (серверов).
- Установка HAProxy.
- Установка keepalived.
- Настройка keepalived.
- Настройка базовой конфигурации HAProxy.
- Добавление конфигураций для балансировки компонентов ELMA365.
Шаг 1: Подготовка нод (серверов)
- Создайте две ноды (сервера) с последовательно пронумерованными именами хостов:
- haproxy-server1.your_domain, 192.168.1.1;
- haproxy-server2.your_domain, 192.168.1.2.
- Создайте сопоставления имён хостов в DNS-сервере и внесите соответствующую А-запись для виртуального IP:
haproxy-server.your_domain A 192.168.1.13
Если такой возможности нет, внесите нужные записи в /etc/hosts
.
- Включите параметры ядра
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
- Установите HAProxy на все узлы, выполнив команду:
sudo apt install haproxy -y
- Запустите сервис HAProxy на всех узлах и добавьте его в автозагрузку:
sudo systemctl enable --now haproxy
Шаг 3: Установка keepalived
Установите keepalived на все узлы:
sudo apt update
sudo apt install keepalived
Шаг 4: Настройка keepalived
- Создайте директорию keepalived:
sudo mkdir -p /usr/libexec/keepalived
- Создайте файл скрипта
haproxy_check.sh
для отслеживания работоспособности HAProxy:
sudo nano /usr/libexec/keepalived/haproxy_check.sh
- Добавьте в файл haproxy_check.sh скрипт проверки работоспособности HAProxy:
#!/bin/bash
/bin/kill -0 $(cat /var/run/haproxy.pid)
- Создайте файл конфигурации keepalived на каждой ноде:
sudo nano /etc/keepalived/keepalived.conf
- Добавьте в файл
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
}
}
- Добавьте в файл
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
— пароль.
- Перезапустите keepalived на всех узлах:
sudo systemctl restart keepalived
Шаг 5: Настройка базовой конфигурации HAProxy
- Переместите конфигурационный файл по умолчанию:
sudo mv /etc/haproxy/haproxy.cfg{,.original}
- Создайте и откройте для редактирования новый конфигурационный файл с помощью команды:
sudo nano /etc/haproxy/haproxy.cfg
Пример базовой конфигурационный HAProxy для файла haproxy.cfg
Базовая часть описывает параметры работы сервера HAProxy: режим работы, таймауты, количество подключений, включение web‑интерфейса и т.д. В примере приведена необходимая конфигурация параметров для работы сервера HAProxy. Подробнее об используемых параметрах читайте в официальной документации HAProxy Documentation. global |
- Перезапустите HAProxy:
sudo systemctl restart haproxy
Шаг 6: Добавление конфигураций для балансировки компонентов ELMA365
Конфигурации компонентов ELMA365 добавляются в файл haproxy.cfg
по необходимости.
В зависимости от выстраиваемой архитектуры добавьте конфигурации:
- HAProxy для PostgreSQL;
- HAProxy для RabbitMQ;
- HAProxy для Redis Sentinel;
- HAProxy для S3 Minio;
- HAProxy для web ELMA365;
- HAProxy для сервера документов.