Почему служба приложений Azure перезапускается при смене слотов? - PullRequest
2 голосов
/ 02 апреля 2019

После того, как эта проблема была в производстве в течение длительного времени, и прочитав все, что я могу найти (например, это или это или то ), я сделал простой тест.

  1. Создать пустой сайт asp.net
  2. в Application_Start отправьте вам электронное письмо или сообщение (я использовал PushBullet), чтобы вы знали, когда приложение запускается
  3. Создание нового плана обслуживания приложений и группы ресурсов
  4. Создайте веб-сайт на Azure и опубликуйте его
  5. Создание слота промежуточного развертывания
  6. Смена сцены / производство
  7. Опубликуйте сайт снова, чтобы оба слота имели одинаковую версию сайта

Итак, у меня пустой сайт, нет строки подключения, нет настройки слота: no change in both slots

Когда я нажимаю swap, я получаю уведомления о том, что слоты перезапускаются (хотя бы один раз).

Почему это происходит?

UPDATE:

После изучения ответа Мохита мне нужно еще кое-что прояснить.

  • Мы отправляем уведомление в методе Application_Start, который запускается событием AppInit, если я правильно понимаю.

  • Я не понимаю поведение, которое вы объясняете. Заказ кажется очень важным, чтобы не было простоев, но вы говорите, что он не обязательно в этом порядке. Почему требуется перезапустить домен приложения для рабочего слота? Почему пользователи раздражаются, что сайт не работает (не должен)?

  • Что такое функция «новый обмен»? Какая разница со "старым свопом"? Для моих тестов я просто поменялся местами на портале.

  • Вы упоминаете паузы "новый обмен" перед обменом. Я полагаю, это просто означает, что он ожидает завершения applicationInitialization (например, HTTP 200 on /)?

  • Я провел еще несколько тестов со вчерашнего дня. В методе Application_Start я добавил несколько Thread.Sleep, чтобы увеличить время запуска приложений. Однако, когда я поменяюсь, я не вижу простоев ни на постановке, ни на производстве. Разве я не должен испытывать простои при постановке, по крайней мере, на время запуска моего приложения? Означает ли это, что слот, который подогревается и заменяется производственным процессом, фактически является еще одним временным слотом, который не является ни промежуточным, ни промежуточным?

1 Ответ

2 голосов
/ 03 апреля 2019

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

Также в соответствии с этой веткой, Предотвращение перезапуска промежуточного сайта во время обмена

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

Вы запускаете свою электронную почту из события AppInit?

swap выполняет следующие действия:

• Слот источника будет прогрет. Azure делает это, запуская пару запросов в корень слота. Вы также можете настроить собственные правила разминки.

• Azure меняет местами виртуальные IP-адреса слотов отправителя и получателя, тем самым меняя URL-адреса слотов.

• Он также применяет (или сохраняет, в зависимости от того, как вы его видите) определенные параметры, относящиеся к целевому слоту. o Публикация конечных точек o Пользовательские доменные имена o SSL-сертификаты и привязки o Настройки масштаба o Планировщики WebJobs o Расширения сайта

Предполагая, что слоты 'staging' и 'production' ведут себя примерно так (необязательно в этом порядке):

• Своп начат

• Конфигурация для «производства» применяется к «промежуточному» сайту - домен приложения перезапускается

• Конфигурация для «постановки» применяется к «производственному» сайту - домен приложения перезапускается

• Настройки DNS / IP обновлены, обмен завершен

• Пользователи раздражаются, что сайт временно «закрыт»

Если вы используете опцию new swap ', она все равно перезапустит домен приложения, но остановится перед тем, как фактически применяет swap, что даст вам время прогреть «промежуточный» экземпляр после его перезапуска.

Пожалуйста, прочитайте больше на этой теме - https://stackify.com/azure-deployment-slots/

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