Назад | Перейти на главную страницу

Настройка обратного прокси nginx для корректного развертывания вышестоящих серверов

Моя текущая установка - это nginx в качестве балансировщика нагрузки перед кучей вышестоящих серверов.

Я хочу иметь возможность развертывать без каких-либо изменений в пользовательском опыте. Это означает отсутствие 502-х и увеличения времени загрузки страниц.

Я так понимаю, когда nginx -s reload , nginx изящно создаст новые потоки для обработки новых подключений для новой конфигурации, но все равно завершит обработку запросов, которые находились в полете во время перезагрузки. Более того, я где-то читал, что отметка апстрима как down в блоке восходящего потока и перезагрузка возьмет это восходящее направление из ротации, но все равно завершит любые соединения с ним в полете.

Все это правильно?

Текущий план состоит в том, чтобы иметь небольшой процесс на хосте nginx, который будет в основном изменять конфигурацию nginx и выполнять эти плавные перезагрузки, когда их попросят сделать это через внутренний REST API.

Затем мой инструмент развертывания подключит этот процесс и последовательно добавит / удалит мои восходящие потоки из конфигурации nginx после завершения корректного завершения работы и загрузки / разогрева для каждого восходящего потока.

Имеет ли это смысл? Как это делают другие люди? Есть ли для этого уже доступные инструменты?

Мне не очень повезло с поиском информации по этому поводу ...

Да, вы правы, полагая, что nginx продолжит обработку текущих запросов при перезагрузке и начнет обрабатывать новые запросы с новой конфигурацией.

http://nginx.org/en/docs/beginners_guide.html#control

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

Пометка восходящего потока как down существенно не отличается от удаления из конфигурации. В обоих случаях он не будет принимать новые запросы.

Мы часто перезагружаем конфигурацию nginx (созданную с помощью cog https://nedbatchelder.com/code/cog/), и это не вызывает простоев прокси, поскольку вверх по течению локации. Пока восходящий поток готов обрабатывать запросы, простоя нет.