Слоты развертывания функций Azure

Функции Azure слоты развертывания позволяют приложению-функции запускать различные экземпляры, называемые слотами. Слоты — это разные среды, предоставляемые через общедоступную конечную точку. Один экземпляр приложения всегда сопоставляется с рабочим слотом, и по запросу вы можете поменять экземпляры, назначенные слоту. Приложения-функции, работающие в плане потребления, имеют один дополнительный слот для промежуточного хранения. Вы можете получить больше промежуточных слотов, запустив приложение в плане Premium или выделенном (Служба приложений) плане. Дополнительные сведения см. в статье Ограничения службы.

Ниже показано, как функции зависят от переключения слотов:

  • Перенаправление трафика не вызывает затруднений, а запросы не теряются из-за переключения. Это простое поведение возникает, так как следующий триггер функции направляется в переключение слота.
  • В настоящее время выполнение функции завершается во время переключения. Сведения о том, как писать функции без отслеживания состояния и оборонительных функций, см. в статье "Повышение производительности и надежности Функции Azure".

Зачем использовать слоты?

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

  • Разные среды для разных целей: использование разных слотов позволяет различать экземпляры приложений перед переключением на рабочий или промежуточный слот.
  • Предварительная подготовка: развертывание в слот, а не непосредственно в рабочее состояние позволяет подготовить приложение перед началом работы. Кроме того, использование слотов сокращает задержку для рабочих нагрузок, активируемых по HTTP. Перед развертыванием происходит подготовка экземпляров, что сокращает количество холодных запусков вновь развернутых функций.
  • Простые возвраты: после переключения на рабочий режим слот с предыдущим промежуточным приложением теперь переключится на предыдущее рабочее приложение. Если изменения в рабочем слоте после переключения не соответствуют вашим ожиданиям, вы можете мгновенно переключиться назад к последнему рабочему экземпляру.
  • Сведение перезапусков к минимуму: для изменения параметров приложения в рабочем слоте требуется перезапуск запущенного приложения. Вместо этого можно изменить параметры в промежуточном слоте и переключить такое изменение параметров в рабочую среду с помощью предварительно подготовленного экземпляра. Слоты — это рекомендуемый способ миграции между версиями среды выполнения Функций при сохранении максимальной доступности. Дополнительные сведения см. в разделе "Минимальное время простоя".

Операции переключения

Во время переключения один слот считается источником, а другой — целевым. Исходный слот содержит экземпляр приложения, который применяется к целевому слоту. Следующие шаги позволяют избежать простоев целевого слота во время переключения:

  1. Применить параметры: параметры из целевого слота применяются ко всем экземплярам исходного слота. Например, к промежуточному экземпляру применяются параметры рабочего экземпляра. Примененные параметры относятся к следующим категориям:

  2. Ожидание перезагрузки и доступности: переключение ожидает завершения перезагрузки каждого экземпляра в слоте источника и его перехода в состояние готовности принимать запросы. Если какой-либо экземпляр не перезапускается, операция подкачки отменяет все изменения в исходном слоте и останавливает операцию.

  3. Маршрутизация обновлений: если все экземпляры в исходном слоте успешно подготовлены к работе, два слота выполняют переключение путем смены правил маршрутизации. На этом шаге целевой слот (например, рабочий слот) имеет приложение, которое ранее разогревалось в исходном слоте.

  4. Повторная операция. Теперь, когда исходный слот имеет приложение preswap ранее в целевом слоте, выполните ту же операцию, применяя все параметры и перезагрузив экземпляры для исходного слота.

Помните на следующие моменты.

  • В любой момент операции переключения инициализация переключенных приложений происходит в исходном слоте. Целевой слот остается в сети, а исходный слот готовится независимо от того, успешно ли выполнено переключение.

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

  • Параметры, связанные с источниками событий и привязками, необходимо настроить в качестве параметров слота развертыванияперед началом переключения. Отметив их как «прикрепленные», вы обеспечиваете отправку событий и выходных данных к нужному экземпляру.

Управление параметрами

Некоторые параметры конфигурации зависят от слота. Ниже указано, какие параметры изменяются при переключении слотов, а какие остаются неизменными.

Параметры для конкретных слотов:

  • Конечные точки публикации
  • Личные доменные имена
  • Неопубликованные сертификаты и параметры TLS/SSL
  • Настройки масштабирования
  • Ограничения IP-адресов
  • Всегда включено
  • Параметры диагностики
  • Общий доступ к ресурсам независимо от источника (CORS)
  • Частные конечные точки

Параметры для любых слотов:

  • Общие параметры, например версия платформы, 32/64-разрядная версия, веб-сокеты
  • Параметры приложения (их также можно привязать к слоту)
  • Строки подключения (их также можно привязать к слоту)
  • Сопоставления обработчиков
  • Открытые сертификаты
  • Гибридные подключения *
  • Интеграция с виртуальной сетью *
  • Конечные точки служб *
  • Сеть доставки содержимого Azure *

Функции, помеченные звездочкой (*), не заменяются по дизайну.

Примечание.

Некоторые параметры приложения, применяемые к непереключаемым параметрам, также не переключаются. Например, поскольку параметры диагностики не переключаются, связанные параметры приложения, такие как WEBSITE_HTTPLOGGING_RETENTION_DAYS и DIAGNOSTICS_AZUREBLOBRETENTIONDAYS, также не переключаются, даже если они не отображаются как параметры слота.

Создание параметра развертывания

Параметры можно пометить как параметр развертывания, что делает его липким. Параметр закрепления не переключается с экземпляром приложения.

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

Выполните следующие действия для создания параметра развертывания:

  1. Перейдите в раздел Слоты развертывания в приложении-функции и выберите имя слота.

    Find slots in the Azure portal.

  2. Выберите Конфигурация, а затем выберите имя параметра, которое нужно прикрепить к текущему слоту.

    Configure the application setting for a slot in the Azure portal.

  3. Выберите Параметр слота развертывания, а затем нажмите OK.

    Configure the deployment slot setting.

  4. После того как раздел параметра исчезнет, нажмите кнопку Сохранить, чтобы сохранить изменения

    Save the deployment slot setting.

Развертывание

При создании слота он будет пустым. Для развертывания приложения в слот можно использовать любую из поддерживаемых технологий развертывания.

Масштабирование

Все слоты масштабируются на то же количество рабочих ролей, что и рабочий слот.

  • Для планов расхода слот масштабируется по мере масштабирования приложения-функции.
  • Для планов службы приложений приложение масштабируется до фиксированного числа рабочих ролей. Слоты работают с тем числом рабочих ролей, которое задано в плане приложений.

Просмотр слотов

Вы можете просмотреть сведения о существующих слотах с помощью Azure CLI или портал Azure.

Выполните следующие действия, чтобы создать новый слот на портале:

  1. Перейдите к приложению-функции.

  2. Выберите слоты развертывания и существующие слоты.

Добавление слота

Вы можете добавить слот с помощью Azure CLI или портал Azure.

Чтобы создать слот на портале, выполните следующие действия.

  1. Перейдите к приложению-функции.

  2. Выберите Слоты развертыванияи щелкните + Добавить слот.

    Add Azure Functions deployment slot.

  3. Введите имя слота и нажмите кнопку Добавить.

    Name the Azure Functions deployment slot.

Доступ к ресурсам слота

Доступ к ресурсам (триггерам HTTP и конечным точкам администратора) выполняется в промежуточном слоте так же, как и в рабочем слоте. Однако вместо имени узла приложения-функции вы используете имя узла конкретного слота в URL-адресе запроса, а также все ключи, относящиеся к слотам. Так как промежуточные слоты являются динамическими приложениями, необходимо защитить свои функции в промежуточном слоте, как и в рабочем слоте.

Переключение слотов

Слоты можно заменить в рабочей среде с помощью Azure CLI или портал Azure.

Выполните следующие действия, чтобы заменить промежуточный слот на рабочую среду:

  1. Перейдите к приложению-функции.

  2. Выберите Слоты развертывания и щелкните Переключить.

    Screenshot that shows the 'Deployment slot' page with the 'Add Slot' action selected.

  3. Проверьте параметры конфигурации для переключения и выберите Переключить

    Swap the deployment slot.

Операция переключения может занять несколько секунд.

Откат результатов обмена

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

Удаление слота

Вы можете удалить слот с помощью Azure CLI или портал Azure.

Чтобы удалить слот из приложения на портале, выполните следующие действия.

  1. Перейдите в раздел Слоты развертывания в приложении-функции и выберите имя слота.

    Find slots in the Azure portal.

  2. Выберите команду Удалить.

    Screenshot that shows the 'Overview' page with the 'Delete' action selected.

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

    Delete the deployment slot in the Azure portal.

  4. Закройте область подтверждения.

    Deployment slot delete confirmation.

Изменить план службы приложений

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

Примечание.

Невозможно изменить план службы приложений слота в плане потребления.

Чтобы изменить план службы приложений для слота, выполните следующие действия:

  1. Перейдите в раздел Слоты развертывания в приложении-функции и выберите имя слота.

    Find slots in the Azure portal.

  2. В разделе План службы приложений выберите команду Изменить план службы приложений.

  3. Выберите план, который необходимо обновить, или создайте новый план.

    Change the App Service plan in the Azure portal.

  4. Нажмите ОК.

Рекомендации

Слоты развертывания Функций Azure имеют следующие ограничения:

  • Количество слотов, доступных для приложения, зависит от плана. План потребления допускает только один слот развертывания. Дополнительные слоты доступны для приложений, работающих в других планах. Подробные сведения можно найти в разделе Ограничения службы.
  • При переключении слота происходит сброс ключей для приложений с параметром приложения AzureWebJobsSecretStorageType со значением files.
  • Если слоты включены, приложение функция будет работать на портале в режиме "только чтение".
  • Буферы слотов могут завершиться ошибкой, если приложение-функция использует безопасную учетную запись хранения в качестве учетной записи хранения по умолчанию (задано в AzureWebJobsStorage). См. справочник по WEBSITE_OVERRIDE_STICKY_DIAGNOSTICS_SETTINGS.
  • Используйте имена приложений-функций короче 32 символов. Имена дольше 32 символов подвержены риску возникновения конфликтов идентификаторов узла.

Следующие шаги