HAProxy - Load Balancer
Автоматически сгенерировано: 2026-03-03 09:38
Общая информация
Назначение: Балансировка нагрузки между backend серверами
Серверы: - lb-1 (10.10.19.10) - lb-2 (10.10.19.11)
Конфигурация: /etc/haproxy/haproxy.cfg
Frontends
| Frontend | Bind | Backend | Описание |
|---|---|---|---|
| http | *:80 | - | HTTP редирект на HTTPS |
| https | *:443 | callbox, suo, admin | HTTPS терминация + routing |
Backends
callbox_backend
Балансировка: roundrobin
Серверы: - web-1 (10.10.19.21:8000) - web-2 (10.10.19.22:8000)
Health check: HTTP GET /health
suo_backend
Балансировка: roundrobin
Серверы: - web-1 (10.10.19.21:8001) - web-2 (10.10.19.22:8001)
Health check: HTTP GET /health
shared_admin_backend
Балансировка: roundrobin
Серверы: - web-1 (10.10.19.21:8002) - web-2 (10.10.19.22:8002)
Health check: HTTP GET /health
postgres_backend
Балансировка: leastconn
Серверы: - db-1 (10.10.19.31:5432) - primary - db-2 (10.10.19.32:5432) - backup (только для read-only если настроено)
Health check: TCP check port 5432
Примечание: HAProxy может проверять PostgreSQL master через HTTP endpoint на Patroni (порт 8008)
Health Checks
HAProxy проверяет здоровье backend серверов:
- Интервал: каждые 3 секунды
- Timeout: 2 секунды
- Fall: 3 неудачные проверки → сервер DOWN
- Rise: 2 успешные проверки → сервер UP
При отказе backend сервера: - HAProxy исключает его из ротации - Трафик идёт на оставшиеся healthy серверы - Автоматическое возвращение при восстановлении
Stats
URL: http://lb-1:9000/stats (внутренний)
Логин/пароль: см. конфигурацию
Показывает: - Статус всех backend серверов (UP/DOWN) - Количество активных соединений - Request rate - Ошибки
Проверка
# Статус HAProxy
ssh lb-1 'systemctl status haproxy'
# Проверка конфигурации
ssh lb-1 'sudo haproxy -c -f /etc/haproxy/haproxy.cfg'
# Статус backend серверов
ssh lb-1 'echo "show stat" | sudo socat stdio /run/haproxy/admin.sock'
# Логи
ssh lb-1 'sudo tail -f /var/log/haproxy.log'
# Stats через curl
curl http://lb-1:9000/stats
Операции
Отключить backend сервер (maintenance)
echo "disable server callbox_backend/web-1" | sudo socat stdio /run/haproxy/admin.sock
Включить backend сервер
echo "enable server callbox_backend/web-1" | sudo socat stdio /run/haproxy/admin.sock
Reload конфигурации (graceful)
ssh lb-1 'sudo systemctl reload haproxy'
Проверка SSL сертификатов
# Список сертификатов
echo "show ssl cert" | sudo socat stdio /run/haproxy/admin.sock