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