Перейти к содержанию

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