HAProxy распределяет соединения между несколькими бэкендами (серверами) и
проверяет их здоровье. Работает на L4 (TCP) и L7 (HTTP). Часто стоит перед пулом
веб-серверов (nginx) или БД.
bash
systemctl status haproxy
haproxy -c -f /etc/haproxy/haproxy.cfg # проверить конфиг ПЕРЕД reload
Нет «живых» бэкендов: health-check провалился у всех server. Открой :8404/stats —
видно UP/DOWN каждого. Проверь, что бэкенд отвечает: curlhttp://10.0.0.11:8000/health.
Все запросы идут на один сервер
balance не задан или включена cookie/source-липкость. Проверь секцию backend.
Не применяется конфиг
haproxy -c -f ... покажет ошибку (строку). reload (graceful) вместо restart,
чтобы не рвать соединения.
Не вижу реальный IP клиента на бэкенде
Добавь option forwardfor и читай X-Forwarded-For на бэкенде/nginx
(real_ip). Для TLS-проброса без терминации — режим tcp + send-proxy.
Таймауты / обрывы под нагрузкой
Настрой timeout connect/client/server в defaults и maxconn. Слишком малые
server-timeout рвут долгие ответы; смотри ss на бэкенде.
См. также
nginx — Веб-сервер и обратный прокси. Конфиг проверяется nginx -t; reload без даунтайма.
keepalived — Высокая доступность через виртуальный IP — failover между узлами по VRRP.
ss — Кто слушает порты и какие соединения открыты — современная замена netstat.