HAProxy (High Availability Proxy) — open-source L4 (TCP) и L7 (HTTP) балансировщик, написан на C с фокусом на минимальную латентность и максимальную пропускную способность. Держит сотни тысяч concurrent-connection на одной машине, задержка added-latency < 1 мс.
Классические use-case: (1) балансировка веб-app'а — 3 инстанса backend на разных VPS, HAProxy распределяет round-robin / least-conn / IP-hash. (2) failover БД — Postgres primary/replica, HAProxy направляет `write` на primary, `read` на реплики. (3) TLS-terminator — принимает HTTPS от клиента, ходит по HTTP к backend'у (быстрее в 3-5 раз). (4) rate-limiting / DDoS-фильтр — stick-table + tcp-request content для anti-bot.
Config-файл `/etc/haproxy/haproxy.cfg`: секции `global` (worker count, chroot), `defaults` (timeout, mode), `frontend` (listen порт + ACL), `backend` (список серверов + healthchecks), `listen` (frontend + backend в одной секции для простых случаев).
Мониторинг: HAProxy Stats page (`stats enable` в конфиге) — HTML-страница с real-time статусом backend'ов, RPS, latency, connection count, sessions. Prometheus-exporter встроен с v2.0.
vs nginx: nginx проще для базового reverse-proxy + static-serving. HAProxy сильнее для чистой балансировки: больше алгоритмов, глубже мониторинг, точнее healthchecks. Часто ставят рядом: HAProxy → nginx → app, где HAProxy распределяет между несколькими nginx-нодами.