Поделиться через


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

Слоты развертывания Azure Functions позволяют вашему приложению функции запускать различные экземпляры, называемые слотами. Слоты — это разные среды выполнения, доступные через общедоступную конечную точку. Один экземпляр приложения всегда сопоставляется с производственным слотом, и по запросу вы можете поменять экземпляры, назначенные слоту.

Количество доступных слотов зависит от конкретного варианта размещения:

Вариант размещения Слоты (включая продакшн)
План потребления 2
План потребления Flex В настоящий момент не поддерживается
План категории "Премиум" 3
Выделенный план (служба приложений) 1-20
Контейнерные приложения Использует редакции

В следующих описаниях показано, как функции изменяются при обмене слотами:

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

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

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

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

Операции обмена

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

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

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

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

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

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

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

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

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

  • При создании промежуточного слота все существующие параметры из рабочего слота создаются в новом слоте независимо от прилипания параметра.

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

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

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

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

Не зависящие от слота настройки:

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

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

Примечание.

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

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

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

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

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

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

    Снимок экрана: слоты развертываний на портале Azure.

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

    Снимок экрана: где настроить параметр приложения для слота на портале Azure.

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

    Снимок экрана: где настроить параметр слота развертывания.

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

    Снимок экрана: сохранение параметра слота развертывания.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Снимок экрана: добавление слота развертывания Функций Azure.

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

    Снимок экрана показывает процесс именования слота развертывания Azure Functions.

Вы также можете создать слот с помощью шаблонов ARM или файлов Bicep. Пример того, как создать функциональное приложение в плане потребления с использованием слота для развертывания, см. в этом кратком руководстве по Azure Resource Manager.

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

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

Перестановка слотов

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

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

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

  2. Выберите Слоты развертывания и выберите Поменять местами.

    Снимок экрана со страницы «Слот развертывания», на которой выбрано действие «Добавить слот».

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

    Снимок экрана: переключение слота развертывания.

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

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

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

Удалите слот

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

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

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

    Снимок экрана: страница, на которой находятся слоты на портале Azure.

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

    Снимок экрана со страницей «Обзор», где выбрано действие «Удалить».

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

    Снимок экрана: удаление слота развертывания на портале Azure.

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

    Снимок экрана: подтверждение удаления слота развертывания.

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

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

Примечание.

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

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

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

    Снимок экрана: слоты на портале Azure.

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

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

    Снимок экрана: место изменения плана службы приложений на портале Azure.

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

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

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

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

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