SystemdDoctor
служба не работает haproxy сеть

HAProxy: все серверы группы недоступны

Ошибка 503 от балансировщика означает, что ни один сервер группы не прошёл проверку. Сам HAProxy при этом работает — разбираться надо с серверами и с настройками проверок.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Серверы действительно недоступны

    Проверки честно показывают, что приложения не отвечают. Балансировщик защищает клиентов от отправки запросов в пустоту.

  2. Проверка настроена не на тот путь

    Проверка по адресу, который отвечает ошибкой или требует аутентификации, всегда будет неуспешной при работающем приложении.

  3. Таймаут проверки слишком короткий

    Медленно отвечающее приложение не укладывается в таймаут, и сервер помечается недоступным при формально работающем приложении.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Состояние всех серверов группы.

echo "show stat" | sudo socat stdio /run/haproxy/admin.sock | cut -d, -f1,2,18 | head -20

История изменений состояния серверов.

journalctl -u haproxy -n 40 --no-pager | grep -iE "is DOWN|is UP"

Проверка конфигурации.

sudo haproxy -c -f /etc/haproxy/haproxy.cfg

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Серверы действительно недоступны
Почему происходит
Проверки честно показывают, что приложения не отвечают. Балансировщик защищает клиентов от отправки запросов в пустоту.
Как проверить
Посмотрите состояние серверов в статистике.
echo "show stat" | sudo socat stdio /run/haproxy/admin.sock 2>/dev/null | cut -d, -f1,2,18 | head
journalctl -u haproxy -n 30 --no-pager | grep -i "is DOWN"
Как исправить
Разбирайтесь с приложениями. Балансировщик вернёт серверы в работу сам, как только проверки начнут проходить.
2. Проверка настроена не на тот путь
Почему происходит
Проверка по адресу, который отвечает ошибкой или требует аутентификации, всегда будет неуспешной при работающем приложении.
Как проверить
Посмотрите описание проверки и проверьте путь вручную.
sudo grep -A3 -i "option httpchk" /etc/haproxy/haproxy.cfg
curl -sI http://сервер:8080/health | head -3
Как исправить
Настройте проверку на отдельный путь состояния, который отвечает без аутентификации и не зависит от базы.
3. Таймаут проверки слишком короткий
Почему происходит
Медленно отвечающее приложение не укладывается в таймаут, и сервер помечается недоступным при формально работающем приложении.
Как проверить
Посмотрите таймауты проверок.
sudo grep -iE "timeout (check|connect)" /etc/haproxy/haproxy.cfg
Как исправить
Увеличьте таймаут проверки до времени, за которое приложение отвечает под нагрузкой, с запасом.

Пример вывода

Все серверы группы помечены недоступными. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

haproxy[1200]: Server backend/web1 is DOWN, reason: Layer7 wrong status, code: 503, check duration: 12ms. 1 active and 0 backup servers left.
haproxy[1200]: backend backend has no server available!

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация HAProxy: проверки состояния документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено остановкой всех серверов группы в тестовой схеме.
    собственная проверка, systemd 255
    сверено 15 сентября 2026