Yandex Cloud: Сетевой балансировщик помечает здоровый сервер как недоступный

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

Сетевой балансировщик Yandex Network Load Balancer показывает UNHEALTHY для работающей виртуальной машины. «Работает сайт в браузере» не равно «пройдена проверка балансировщика»: проверка использует заданный протокол, порт, путь и сетевой источник.

В этой статье
  1. Признаки неисправности и область применимости
  2. Почему это происходит
  3. Пошаговая диагностика и устранение
  4. Как проверить, что проблема исправлена
  5. Если проблема осталась

#Признаки неисправности и область применимости

Сетевой балансировщик Yandex Network Load Balancer показывает UNHEALTHY для работающей виртуальной машины. «Работает сайт в браузере» не равно «пройдена проверка балансировщика»: проверка использует заданный протокол, порт, путь и сетевой источник.

#Почему это происходит

Возможная причинаКак узнатьЧто делать
Нет доступа к порту проверкиГруппа безопасности не пропускает источники проверок.Сервер отвечает пользователю, но не балансировщикуРазрешите служебные проверки только на назначенный порт.
Проверяется неправильный путьДля HTTP-проверки требуется корректный ответ ожидаемого типа.HTTP-проверка возвращает 301/403/404Сверьте URL и HTTP-код.
Служба слушает другой адресПриложение может слушать только 127.0.0.1 или другой порт.Локальный curl проходит, с сети сервера порт закрытПроверьте bind/listen и привязку целевой группы.

#Пошаговая диагностика и устранение

  1. Снимите исходный статусОткройте нужный каталог → Network Load Balancer → ваш балансировщик. Запишите имя целевой группы, состояние цели и конфигурацию проверки; не отсоединяйте ресурс от работающего балансировщика ради диагностики.
  1. Узнайте метод проверкиВ настройках группы посмотрите протокол TCP или HTTP, номер порта, а для HTTP — путь. Для проверки HTTP ожидается успешный ответ 200; перенаправление 301 на HTTPS способно сделать цель UNHEALTHY. Не меняйте путь до проверки обработки на сервере.
  1. Проверьте целевой сервер без балансировщикаПодключитесь на ВМ и из терминала выполните локальный запрос на настроенный порт и путь, подставив фактический адрес. Если ответ 403/404/503, проверьте приложение. Если локально 200, но цель недоступна, переходите к сети.
  2. Замените порт 8080 и /health значениями проверки
    Linux · Терминал (Bash)Команда
    Замените порт 8080 и /health значениями проверки. Работает только при HTTP-службе; ожидается 200, иначе анализируйте маршрут.
    curl -sS -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8080/health
  1. Проверьте прослушивание интерфейсаНа самой ВМ посмотрите, слушает ли служба порт на внутреннем адресе либо 0.0.0.0, а не только на loopback. Ошибка приложения, слушающего 127.0.0.1, не исправится добавлением правил в облаке.
  2. Linux
    Linux · Терминал (Bash)КомандаНужен sudo
    Linux. Замените 8080 фактическим портом. Команда ничего не меняет; покажет локальный адрес и процесс.
    sudo ss -lntp | grep -E ":8080[[:space:]]"
  1. Проверьте разрешение служебных проверокВ привязанной к интерфейсу группе безопасности проверьте правило входящего TCP на порт проверки с источником «Load balancer healthchecks». Документация приводит подсети проверок 198.18.235.0/24 и 198.18.248.0/24; безопаснее выбрать предусмотренный источник в интерфейсе, а не разрешать всему интернету.
  1. Сверьте адрес цели и портОткройте целевую группу: внутренняя IP-адресация и зона должны соответствовать реально работающим ВМ. При замене ВМ либо сети могла остаться старая цель. Перед заменой сохраните прежний состав группы и понимайте, какая доля трафика зависит от неё.
  1. Проверяйте изменения по одномуПри подтверждённом неправильном HTTP-пути измените только путь на реально возвращающий 200; при подтверждённом блокировании — только правило для проверок. После этого подождите несколько интервалов health-check и не путайте переходный INITIAL с постоянным UNHEALTHY.
  1. Оцените работу сервиса после HEALTHYПроверьте с внешнего клиента один безопасный запрос по имени сайта, затем повторите его через балансировщик. Даже при HEALTHY приложение может ошибаться на других URL: это повод улучшить собственную health-страницу, а не отключать проверку.

#Как проверить, что проблема исправлена

Цель получает HEALTHY после нескольких успешных проверок, внешний запрос через балансировщик обслуживается без ошибки, а прямой запрос к health-URL возвращает 200. Проверки идут на предназначенный порт, без общего открытия входящего трафика.

#Если проблема осталась

При стойком UNHEALTHY повторите проверку по IP цели из той же подсети (если возможно), осмотрите журналы приложения и настройки TLS/Host. Снимите время проверки и статус для поддержки Yandex Cloud; не повышайте порог до маскировки реальной ошибки.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.