Перезапуск веб-сервера без влияния на пользователей?

Есть несколько методов, которые я могу придумать для этого:

  • Настройка реплики веб-сервера на другой порт и / или IP, затем использование DNS в качестве балансировщика нагрузки; перезапуск одного сервера за раз
  • Использование более явной балансировки нагрузки (которую используют PaaS, такие как Heroku и OpenShift) с неявными репликами
  • Использование некоторого встроенного механизма (например, в nginx)

Я работаю в рамках решения I aaS и буду настраивать git и некоторые слушатели для обработки всей этой установки.

Каков наилучший способ перезапуска веб-сервера - чтобы моя последняя версия моего веб-приложения на Python могла начать работу - без заметного влияния на посетителей / пользователей / клиентов сайта?

1 ответ

Чем проще, тем лучше, без серебряной пули.

  1. Для одного сервера может помочь механизм изящного перезапуска. Он запустит новые процессы, чтобы принять новые запросы, и будет поддерживать старые процессы до завершения старых запросов. Nginx уже использует это, см. http://wiki.nginx.org/CommandLine

  2. Для нескольких серверов рекомендуется использовать обратный прокси-сервер. Пример структуры выглядит следующим образом, и ее можно легко построить с помощью Nginx: Если какой-либо из внутренних серверов вышел из строя, обратный прокси-сервер может отправлять запросы на другие исправные серверы и не будет влиять на пользователей. Вы можете настроить стратегию балансировки нагрузки для более детального управления. И вы также можете гибко добавить сервер для увеличения или выбрать сервер для устранения неполадок или обновления кода.

Другие вопросы по тегам