Выбор ответа Senior Балансировка и nginx обновлено

Health checks в открытом nginx

Вопрос

Как открытая версия nginx узнаёт, что сервер в upstream недоступен?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Пассивно: по неудачным запросам (maxfails за failtimeout). В открытом nginx есть только пассивные проверки: реальные запросы, завершившиеся ошибкой или таймаутом, считаются неудачами.

Варианты ответа

  1. Активно: раз в 5 секунд запрашивает /health у каждого сервера
  2. По ICMP ping каждые несколько секунд к адресам из upstream
  3. Пассивно: по неудачным запросам (max_fails за fail_timeout)правильный ответ
  4. Никак: запросы идут на мёртвый сервер, пока его не удалят из конфига

Разбор

В открытом nginx есть только пассивные проверки: реальные запросы, завершившиеся ошибкой или таймаутом, считаются неудачами. Активные проверки есть в NGINX Plus и сторонних модулях, а также в HAProxy и Envoy. Ping не используется. Вариант «никак» неверен: после max_fails сервер выводится на fail_timeout.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.