Предотвращение 502 плохого шлюза в циклическом перезапуске процесса веб-сервера
У меня есть балансировщик нагрузки / обратный прокси-сервер (nginx или cherokee, неважно, какой), развернутый на моем сервере, и он указывает на несколько фоновых процессов веб-сервера (либо gunicorn, либо cherrypy, неважно, какой) в циклической конфигурации,
Чтобы минимизировать время простоя, у меня есть сценарий перезапуска веб-сервера, который убивает определенный процесс веб-сервера (скажем, из 8 процессов), а затем сразу же запускает его снова; и затем переходит к следующему процессу веб-сервера (убейте его, затем запустите его снова), так что в любой момент времени для моего обратного прокси-сервера всегда будет доступно по крайней мере 7 процессов.
Это замечательно; но есть ли способ "усовершенствовать" этот процесс так, чтобы я вообще не получил 502 Bad gateway? Шлюз 502 происходит, когда пользователь оказывается на сайте и использует процесс веб-сервера, который временно уничтожается и восстанавливается.
Очевидно, что причина, по которой мне нужен сценарий перезапуска, заключается в развертывании нового кода Python в моем приложении Python (работающем на gunicorn или cherrypy).
4 ответа
Nginx должен сделать это из коробки. http://nginx.org/r/proxy_next_upstream умолчанию error timeout
Параметр передает запрос следующему члену вышестоящего блока, если выбранный начальный сервер недоступен.
Почему ты убиваешь огнестрельное оружие? Просто отправьте SIGHUP, как любой другой хорошо работающий процесс Unix, и он с радостью перезагрузится, не потеряв никаких соединений.
Если вы используете haproxy и настраиваете бэкэнд для каждого процесса веб-сервера, а также используете проверки работоспособности этих бэкэндов, он обнаружит, что один из них не работает, и пометит его как автономный, вместо этого балансировав запросы к работоспособным.
Пользователь, подключенный к перезапускающемуся веб-серверу, должен быть перебалансирован на работающий после того, как он обновит страницу или инициирует другой запрос.
Вместо этого используйте apache httpd.
Он имеет ультраконфигурируемый балансировщик нагрузки с обратным прокси-сервером, который поддерживает утечку элементов и взвешенные предпочтения, не говоря уже о реконфигурации в режиме онлайн через интерфейс балансировщик-менеджер.