2015-08-19 2 views
1

У меня есть приложение, размещенное на нескольких серверах на AWS с балансировщиком нагрузки.
Я нажимаю обновления для серверов с помощью Microsoft Web Deploy.Публикуется в IIS в безопасном производстве

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

ответ

1

Это зависит от того, что вы подразумеваете под «безопасным». С точки зрения состояния вашего текущего развертывания ничто не будет затронуто. С точки зрения целостности данных этот процесс может быть небезопасным. Когда .dll для вашего проекта заменяется на сервере, пул приложений перерабатывается почти сразу.

Результатом этого является то, что весь текущий процесс прекращается безнаказанно. Чем больше пользователей используют систему, тем более распространенным будет результат неопределенного поведения. Главное, что вытаскивают, это соединения с базой данных, и часто пользователь будет в середине публикации, и все будет выглядеть нормально, но только часть или ни одна из их транзакций не завершится.

Запросы Ajax будут время от времени зависеть от времени в результате этого. В принципе, это просто уничтожает все, что в настоящее время работает, и нет льготного периода или прощения.

Чтобы обойти это, крупные службы часто выдают предупреждение.

Сервер будет перезагружен за 15 минут.

Для облегчения этого помогает, если есть переключатель, который вы можете изменить в самом приложении, где в основном возвращается страница, указывающая, что сервер отключен каким-то действием на глобальном уровне, когда запрос впервые встречается. Включите это через 15 минут и дайте ему работать до тех пор, пока это может потребоваться для очень долгого запроса на обслуживание. Это должно быть значением по умолчанию где-то (я знаю, что для большинства мест это целых 2 минуты, а иногда и до 30 секунд).

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