2017-02-07 4 views
2

Я вижу интересное поведение в Azure App Service, что я надеюсь, что кто-то будет достаточно любезен, чтобы комментировать.Azure App-Service Swap «Bounces» Между источником и назначением

шаги воспроизведения (все Лазурные шаги могут быть сделаны на портале):

  • Создать новую Web App в App службы (стандартный уровень цен, один экземпляр отлично), например, mysite
  • Create a new staging slot для этого приложения, например. mysite-staging
  • Deploy голые кости ASP.NET приложение для mysite с файлом /scripts/test.js, который имеет содержание //ONE
  • Deploy голые кости ASP.NET приложение для mysite-staging с файлом/скриптов/тестирования .js, который имеет содержание //TWO
  • Swap the deployment slots
  • Сразу после запуска замены, перейдите к mysite.azurewebsites.net/scripts/test.js и контролировать возвращенное содержимое во время операции свопа (при постоянно делая усилие-обновление в браузере)

Что я ожидал увидеть:

  • В какой-то момент в ходе обмена, содержание изменяется плавно/последовательно/необратимо от //ONE до //TWO

Что я на самом деле вижу:

  • Во время операции подкачки содержимое «мерцает»/«отскакивает» между //ONE и //TWO. После того, как операция своп завершена, поведение устойчиво и //TWO последовательно возвращается

Наблюдаемое поведение свидетельствует о том, что нет ни одной точки во времени, при котором весь трафик, можно сказать, идет к новой версии.

Причина это касается меня следующий сценарий:

  • Пользователь запрашивает страницу mysite.azurewebsites.net, которая во время этого «прыгающий» стадии, реагирующий с «v2» версия страницы с ссылка на сценарий, размещенный на CDN mycdn.com/scripts/test.js?v2 (?v2 - это новая строка запроса)
  • Браузер запрашивает скрипт из CDN, который, в свою очередь, запрашивает скрипт от mysite.azurewebsites.net. На этот раз «подпрыгивание» заставляет ответ быть версией сценария v1.
  • Теперь у нас есть версия v1 сценария кэшированных в CDN, что все пользователи в этой области будет загружаться с версией v2 страницы

Мой вопрос: Является ли это «прыгающий» поведение во время операция свопинга «по дизайну»? Если да, то каков рекомендуемый подход для решения патологического случая выше?

ответ

2

Поведение, которое вы описали, в настоящее время разрабатывается.Когда мы выполняем своп, мы обновляем сопоставления между именами хостов и сайтами в нашей базе данных, но наши внешние экземпляры кэшируют эти сопоставления и обновляют их каждые 30 секунд. Таким образом, период «подпрыгивания» может длиться до 30 секунд.

У меня нет на данный момент хорошей рекомендации о том, как решить проблему, но рассмотрим возможные способы решения этой проблемы.

+0

«В« Информатике »есть только две тяжелые вещи: кэш-аннулирование и именование вещей» (Фил Карлтон). Похоже, что операция свопинга должна аннулировать записи кэша в ваших интерфейсных экземплярах. Я предполагаю, что это не тривиально для вас, ребята, чтобы достичь. Обходной путь в моем случае - очистить содержимое CDN непосредственно после завершения операции свопинга, чтобы я мог быть уверен, что CDN содержит правильное содержимое. – sammy34

Смежные вопросы