Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Слоты развертывания Azure Functions позволяют вашему приложению функции запускать различные экземпляры, называемые слотами. Слоты — это разные среды выполнения, доступные через общедоступную конечную точку. Один экземпляр приложения всегда сопоставляется с производственным слотом, и по запросу вы можете поменять экземпляры, назначенные слоту.
Количество доступных слотов зависит от конкретного варианта размещения:
| Вариант размещения | Слоты (включая продакшн) |
|---|---|
| План потребления | 2 |
| План потребления Flex | В настоящий момент не поддерживается |
| План категории "Премиум" | 3 |
| Выделенный план (служба приложений) | 1-20 |
| Контейнерные приложения | Использует редакции |
В следующих описаниях показано, как функции изменяются при обмене слотами:
- Перенаправление трафика не вызывает затруднений, а запросы не теряются из-за переключения. Это бесшовное поведение происходит, так как следующий триггер функции направляется в замененный слот.
- Выполняющиеся в данный момент функции завершаются во время переключения. Сведения о том, как писать функции без состояния и защитные функции, см. в статье «Повышение производительности и надежности функций Azure».
Зачем использовать слоты?
Существует множество преимуществ использования слотов развертывания, в том числе:
- Разные среды для разных целей: использование разных слотов позволяет различать экземпляры приложений перед переключением на рабочий или промежуточный слот.
- Предварительный прогрев: развертывание в слот вместо непосредственного развертывания в продакшен позволяет приложению прогреться перед выходом в эксплуатацию. Кроме того, использование слотов сокращает задержку для рабочих нагрузок, активируемых по HTTP. Перед развертыванием происходит предварительный прогрев экземпляров, что сокращает время холодного старта вновь развернутых функций.
- Простые возвраты: после переключения на рабочий режим слот с предыдущим промежуточным приложением теперь переключится на предыдущее рабочее приложение. Если изменения в рабочем слоте после переключения не соответствуют вашим ожиданиям, вы можете мгновенно переключиться назад к последнему рабочему экземпляру.
- Сведение перезапусков к минимуму: для изменения параметров приложения в рабочем слоте требуется перезапуск запущенного приложения. Вместо этого можно изменить параметры в слоте подготовки и перенести изменения параметров в рабочую среду с помощью разогретого экземпляра. Слоты — это рекомендуемый способ миграции между версиями среды выполнения Функций при сохранении максимальной доступности. Дополнительные сведения см. в разделе "Минимальное время простоя".
Операции обмена
Во время переключения один слот считается источником, а другой — целевым. Исходный слот содержит экземпляр приложения, который применяется к целевому слоту. Следующие шаги позволяют избежать простоев целевого слота во время переключения:
Применить параметры: параметры из целевого слота применяются ко всем экземплярам исходного слота. Например, к промежуточному экземпляру применяются параметры рабочего экземпляра. Примененные параметры относятся к следующим категориям:
- Параметры приложения и строки подключения для конкретного слота (если применимо)
- Параметры непрерывного развертывания (если активны)
- Параметры аутентификации App Service (если включены)
Ожидание перезагрузки и доступности: переключение ожидает завершения перезагрузки каждого экземпляра в слоте источника и его перехода в состояние готовности принимать запросы. Если какой-либо экземпляр не перезапускается, операция обмена отменяет все изменения в исходном слоте и прекращает выполнение.
Обновление маршрутизации: если все экземпляры в исходном слоте успешно находятся в состоянии полной готовности, два слота завершают обмен путем смены правил маршрутизации. На этом шаге в целевом слоте (например, рабочем слоте) уже находится приложение, которое ранее было разогрето в исходном слоте.
Повторная операция. Теперь, когда исходный слот имеет приложение preswap ранее в целевом слоте, выполните ту же операцию, применяя все параметры и перезагрузив экземпляры для исходного слота.
Помните о следующих моментах.
В любой момент операции переключения инициализация переключенных приложений происходит в исходном слоте. Целевой слот остается в сети, а исходный слот готовится независимо от того, успешно ли выполнено переключение.
Чтобы заменить промежуточный слот производственным, необходимо убедиться, что производственный слот всегда является целевым. Таким образом, операция переключения не влияет на рабочее приложение.
Параметры, связанные с источниками событий и привязками, необходимо настроить в качестве параметров слота развертыванияперед началом переключения. Отметив их как «прикрепленные», вы обеспечиваете отправку событий и выходных данных к нужному экземпляру.
При создании промежуточного слота все существующие параметры из рабочего слота создаются в новом слоте независимо от прилипания параметра.
Управление параметрами
Некоторые параметры конфигурации зависят от слота. Ниже указано, какие параметры изменяются при переключении слотов, а какие остаются неизменными.
Параметры для конкретных слотов:
- Конечные точки публикации
- Личные доменные имена
- Неопубликованные сертификаты и параметры TLS/SSL
- Настройки масштабирования
- Ограничения IP-адресов
- Всегда включено
- Параметры диагностики
- Общий доступ к ресурсам независимо от источника (CORS)
- Частные конечные точки
Не зависящие от слота настройки:
- Общие параметры, например версия платформы, 32/64-разрядная версия, веб-сокеты
- Параметры приложения (их также можно привязать к слоту)
- Строки подключения (можно привязать к слоту)
- Сопоставления обработчиков
- Открытые сертификаты
- Гибридные подключения *
- Интеграция с виртуальной сетью *
- Конечные точки служб *
- Сеть доставки содержимого Azure *
Функции, помеченные звездочкой (*), не заменяются по дизайну.
Примечание.
Некоторые параметры приложения, применяемые к непереключаемым параметрам, также не переключаются. Например, поскольку параметры диагностики не переключаются, связанные параметры приложения, такие как WEBSITE_HTTPLOGGING_RETENTION_DAYS и DIAGNOSTICS_AZUREBLOBRETENTIONDAYS, также не переключаются, даже если они не отображаются как параметры слота.
Создание параметра развертывания
Параметры можно пометить как параметр развертывания, что делает его постоянным. Параметр закрепления не переключается с экземпляром приложения.
Если вы создаете параметр развертывания в одном слоте, обязательно создайте тот же параметр с уникальным значением в любом другом слоте, который участвует в переключении. Таким образом, хотя значение параметра не меняется, имена параметров в разных слотах будут согласованными. Такая согласованность имен гарантирует, что код не попытается получить доступ к параметру, который задан в одном слоте, но не задан в другом.
Выполните следующие действия для создания параметра развертывания:
Перейдите в раздел Слоты развертывания в приложении-функции и выберите имя слота.
Выберите Конфигурация, а затем выберите имя параметра, которое нужно прикрепить к текущему слоту.
Выберите Параметр слота развертывания, а затем нажмите OK.
После того как раздел параметра исчезнет, нажмите кнопку Сохранить, чтобы сохранить изменения
Развертывание
При создании слота он будет пустым. Для развертывания приложения в слот можно использовать любую из поддерживаемых технологий развертывания.
Масштабирование
Все слоты масштабируются до такого же количества рабочих процессов, как и в производственном слоте.
- Для планов потребления слот масштабируется по мере масштабирования приложения-функции.
- Для планов службы приложений приложение масштабируется до фиксированного числа рабочих процессов. Слоты работают с тем числом рабочих ролей, которое задано в плане приложений.
Просмотр слотов
Вы можете просмотреть сведения о существующих слотах с помощью Azure CLI или портал Azure.
Выполните следующие действия, чтобы создать новый слот на портале:
Перейдите к функциональному приложению.
Выберите Слоты развертывания, и будут показаны существующие слоты.
Добавление слота
Вы можете добавить слот с помощью Azure CLI или портал Azure.
Чтобы создать слот на портале, выполните следующие действия.
Перейдите к функциональному приложению.
Выберите Слоты развертыванияи щелкните + Добавить слот.
Введите имя слота и нажмите кнопку Добавить.
Вы также можете создать слот с помощью шаблонов ARM или файлов Bicep. Пример того, как создать функциональное приложение в плане потребления с использованием слота для развертывания, см. в этом кратком руководстве по Azure Resource Manager.
Доступ к ресурсам слота
Доступ к ресурсам (триггерам HTTP и конечным точкам администратора) выполняется в промежуточном слоте так же, как и в рабочем слоте. Однако вместо имени узла приложения-функции вы используете имя узла конкретного слота в URL-адресе запроса, а также все ключи, относящиеся к слотам. Так как промежуточные слоты являются динамическими приложениями, необходимо защитить свои функции в промежуточном слоте, как и в рабочем слоте.
Перестановка слотов
Слоты можно менять между рабочим и нерабочим состоянием с помощью Azure CLI или с помощью портала Azure.
Выполните следующие действия, чтобы переключить промежуточный слот на рабочую среду:
Перейдите к функции приложения.
Выберите Слоты развертывания и выберите Поменять местами.
Проверьте параметры конфигурации для вашего свопа и выберите Своп.
Операция переключения может занять несколько секунд.
Откат результатов обмена
Если переключение приводит к ошибке или вы просто хотите отменить его, можно выполнить откат к начальному состоянию. Чтобы вернуться к состоянию до замены, выполните ещё одну замену, чтобы отменить её.
Удалите слот
Вы можете удалить слот с помощью Azure CLI или с помощью портала Azure.
Чтобы удалить слот из приложения на портале, выполните следующие действия.
Перейдите в раздел Слоты развертывания в приложении-функции и выберите имя слота.
Выберите команду Удалить.
Введите имя слота развертывания, который необходимо удалить, и нажмите кнопку Удалить.
Закройте область подтверждения.
Изменить план службы приложений
С помощью приложения-функции, которое выполняется в рамках плана службы приложений, можно изменить базовый план службы приложений для слота.
Примечание.
Невозможно изменить план службы приложений слота в плане потребления.
Чтобы изменить план службы приложений для слота, выполните следующие действия:
Перейдите в раздел Слоты развертывания в приложении-функции и выберите имя слота.
В разделе План службы приложений выберите команду Изменить план службы приложений.
Выберите план, который необходимо обновить, или создайте новый план.
Нажмите ОК.
Рекомендации
Слоты развертывания Функций Azure имеют следующие ограничения:
- Количество слотов, доступных для приложения, зависит от плана. План потребления допускает только один слот для развертывания. Дополнительные слоты доступны для приложений, работающих по другим тарифным планам. Подробные сведения можно найти в разделе Ограничения службы.
- При переключении слота сбрасываются ключи для приложений, у которых настройка приложения
AzureWebJobsSecretStorageTypeравнаfiles. - Если слоты приложения включены, ваше функциональное приложение будет работать на портале в режиме "только для чтения".
- Переключение слотов может завершиться ошибкой, если ваше функциональное приложение использует защищённую учетную запись хранилища в качестве учетной записи хранения по умолчанию (установлено в
AzureWebJobsStorage). Для получения дополнительной информации смотрите справочник поWEBSITE_OVERRIDE_STICKY_DIAGNOSTICS_SETTINGS. - Используйте имена приложений-функций короче 32 символов. Имена дольше 32 символов подвержены риску возникновения конфликтов идентификаторов хоста.