Как получить «настоящее» имя экземпляра слота службы приложений Azure? - PullRequest
4 голосов
/ 06 октября 2019

Хотелось бы узнать, как получить уникальный идентификатор для «экземпляра слота», который загружен в него слот службы приложений Azure.

Обратите внимание, что я , а не ссылаясь на название слота.

Например:

  • В моей службе приложений Azure есть два слота с именами «Приложение» (производство) и «Подготовка приложения» (подготовка).
  • Затем я внедряю версию 1 моего проекта в слот "App".
  • Затем я развертываю версию 2 моего проекта в слот "App-Staging".
  • Затем я выполняю операцию обмена слотами на портале Azure:

    • Оба экземпляра моего приложения работают одновременно (представьте, что они запускаются в каком-то контейнере).
    • Оба «контейнера» сразу же «отсоединяются» от связанного с ними слота, пока они еще работают.
    • Оба «контейнера» затем сразу же присоединяются к противоположному слоту.
      • т.е. версия 1 прекращает прием HTTP-запросов для app.azurewebsites.net и неожиданно начинает получать запросы для app-staging.azurewebsites.net.
      • , а версия 2 прекращает прием HTTP-запросов для app-staging.azurewebsites.net и неожиданно начинает получать запросы дляapp.azurewebsites.net.
  • Чтобы исследовать некоторые проблемы, с которыми я столкнулся, я создал текстовый файл на D:\home\SlotName.txt. В слот «App» я ввел «SlotA», а в слот «App-Staging» я ввел «SlotB».

  • Этот SlotName.txt перемещается вместе с экземпляром приложения и позволяет моему приложениюопределить, в какой именно файловой системе или экземпляре «контейнера» он находится - и это не изменится, если будет выполнен обмен слотами.
  • Я считаю эту информацию важной при попытке однозначно идентифицировать развертывания или при исследовании проблем непрерывности ведения журнала (например, промежуточный слот не будет регистрировать производственные данные).
  • Однако мой файл SlotName.txt выглядит как хак, но я не вижу никакой информации в переменных среды для экземпляра моего приложения. это показывает ту же информацию.
    • Переменные среды действительно показывают имя слота, например, «App» и «App-Staging», которое является изменяемым - конечно, но оно не однозначно идентифицирует «контейнер» или экземпляр файловой системы, в которой развернуто приложениеinto.

Вот две страницы среды Kudu из слотов Production и Staging - обратите внимание, что значения либо идентичны (например, Machine name), либо зависят от слота, либок развернутому коду приложения, и ни один из них не ссылается на экземпляр файловой системы / контейнера, в котором они находятся:

enter image description here

Есть ли способ получить эту информацию безиспользуя мой SlotName.txt трюк?

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Ответ скрывается прямо у меня под носом - и другая терминология.

То, что я называл «именем экземпляра слота», на самом деле называется «идентификатором развертывания» (я знаю, что это перегруженный термин какон также используется в контексте PaaS «облачных сервисов» Azure (в настоящее время тоже).

Эта информация отображается на странице среды Kudu и также отображается в виде переменной среды: WEBSITE_DEPLOYMENT_ID.

Значение WEBSITE_DEPLOYMENT_ID имеет форму {SiteName}[__{Random}], с префиксом __{Random}, опущенным для первого пространства развертывания.

Если вы внимательно посмотрите на скриншот, который я разместил, вы 'Вы заметите, что левый скриншот имеет имя сайта-слота Site1__e928, тогда как правый скриншот имеет «первое» пространство слота, поэтому его имя просто Site1.

к сожалению, эта информация не документирована Microsoft публично - по крайней мере, насколько Google может видеть ( поиск термина прямо сейчас дает ноль полезных релевантных результатов ):

Тайна разгадана!

0 голосов
/ 07 октября 2019

У вас есть нечто, называемое значениями настройки слота развертывания, как показано на рисунке ниже:

Прикрепите пару ключ-значение в каждый слот с другим значением.

here
Здесь этот параметр привязан к конкретному приложению, даже если вы поменялись местами.
Это может быть уловка, которую вы ищете.

Источник

...