Выбор ответа Senior Балансировка и nginx обновлено
Health checks в открытом nginx
Вопрос
Как открытая версия nginx узнаёт, что сервер в upstream недоступен?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Пассивно: по неудачным запросам (maxfails за failtimeout). В открытом nginx есть только пассивные проверки: реальные запросы, завершившиеся ошибкой или таймаутом, считаются неудачами.
Варианты ответа
- Активно: раз в 5 секунд запрашивает
/healthу каждого сервера - По ICMP ping каждые несколько секунд к адресам из upstream
- Пассивно: по неудачным запросам (
max_failsзаfail_timeout)правильный ответ - Никак: запросы идут на мёртвый сервер, пока его не удалят из конфига
Разбор
В открытом nginx есть только пассивные проверки: реальные запросы, завершившиеся ошибкой или таймаутом, считаются неудачами. Активные проверки есть в NGINX Plus и сторонних модулях, а также в HAProxy и Envoy. Ping не используется. Вариант «никак» неверен: после max_fails сервер выводится на fail_timeout.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.