План Функций Azure категории "Премиум"

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

Внимание

Функции Azure могут выполняться на платформе Службы приложений Azure. На платформе Службы приложений планы, предусматривающие размещение приложений-функций, которые выполняются согласно плану категории "Премиум", называются эластичными планами категории "Премиум". А названия ценовых категорий выглядят следующим образом: EP1. Если вы решили запустить приложение-функцию, выбрав план "Премиум", обязательно создайте план с именем ценовой категории, начинающимся с "E". Например, EP1. Названия ценовых категорий плана службы приложений, начинающиеся с буквы "P" — например, P1V2 (план "Премиум для малого бизнеса версии 2") — являются на самом деле планами выделенного размещения. Так как они относятся к разряду планов с выделенным размещением, а не эластичными категории "Премиум", планы с названиями ценовых категорий, начинающимися с буквы "P", не будут динамически масштабироваться, что может привести к увеличению затрат.

Размещение в соответствии с планом "Премиум" предоставляет следующие преимущества для функций:

  • Исключение холодного запуска благодаря использованию "теплых" экземпляров.
  • Подключение к виртуальной сети.
  • Поддерживает более длительные сроки выполнения.
  • Выбор размеров экземпляра Premium.
  • Более предсказуемые цены по сравнению с планом "Потребление".
  • Распределение приложений с высокой плотностью для планов с несколькими приложениями-функциями.

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

Выставление счетов

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

Примечание.

В каждом плане "Премиум" в любое время имеется по крайней мере один активный (оплачиваемый) экземпляр.

Создание плана "Премиум"

При создании приложения-функции на портале Azure по умолчанию используется план "Потребление". Чтобы создать приложение-функцию, которое работает по плану "Премиум", необходимо явно создать план размещения для решения Функции Azure уровня "Премиум", используя один из номеров SKU уровня Эластичный "Премиум". Затем создаваемое приложение-функция размещается в этом плане. Портал Azure упрощает одновременное создание плана "Премиум" и приложения-функции. Вы можете запустить несколько приложений-функций в одном и том же плане "Премиум", но они должны работать на одной и той же операционной системе (Windows или Linux).

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

Устранение холодного запуска

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

План "Премиум" предоставляет две функции, которые эффективно устраняют холодные запуски в функциях: всегда готовые экземпляры и предварительно подготовленные экземпляры. Всегда готовые экземпляры — это категория предварительно размещенных экземпляров, не затронутых масштабированием, и предварительно подготовленные экземпляры являются буфером по мере масштабирования из-за событий HTTP.

Когда события начинают запускать приложение, они сначала направляются в экземпляры с режимом постоянной готовности. По мере того как функция становится активной из-за событий HTTP, другие экземпляры нагреваются как буфер. Эти буферные экземпляры называются предварительно подготовленными экземплярами. Этот буфер уменьшает холодный запуск для новых экземпляров, необходимых во время масштабирования.

Постоянно готовые экземпляры

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

Этот параметр уровня приложения также управляет минимальным числом экземпляров плана. Например, в одном плане "Премиум" можно использовать три приложения-функции. Если два приложения всегда готовы к количеству экземпляров, равным одному, а в третьем экземпляре — пять, минимальное число для всего плана — пять. Это также отражает минимальное количество экземпляров, для которых выставляется счет за ваш план. Максимальное число экземпляров с постоянной готовностью, поддерживаемых для каждого приложения, равно 20.

Вы можете настроить количество постоянно готовых экземпляров на портале Azure: выберите пункт Приложение-функция, перейдите на вкладку Функции платформы и выберите параметры Горизонтальное масштабирование (Scale out). В окне "Изменение приложения-функции" постоянно готовые экземпляры относятся только к этому приложению.

Параметры эластичного масштабирования на портале

Предварительно подготовленные экземпляры

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

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

Вы также можете определить триггер прогревания, который выполняется во время предварительного процесса. Вы можете использовать триггер прогревания для предварительной загрузки пользовательских зависимостей во время предварительного процесса, чтобы функции были готовы немедленно начать обработку запросов. Дополнительные сведения приведены в разделе Триггер прогрева Функций Azure.

Рассмотрим этот пример того, как всегда готовые экземпляры и предварительно подготовленные экземпляры работают вместе. Приложение-функция "Премиум" имеет два всегда готовых экземпляра, а по умолчанию — один предварительно подготовленный экземпляр.

Граф горизонтального масштабирования

  1. Когда приложение бездействует и нет событий, запускающих это приложение, для работы этому приложению предоставляется два экземпляра. В настоящее время вы выставляете счета за два всегда готовых экземпляра, но не выставляются счета за предварительно подготовленный экземпляр, так как не выделяется предварительно подготовленный экземпляр.
  2. По мере того как приложение начинает получать HTTP-трафик, запросы балансируют нагрузку между двумя всегда готовыми экземплярами. Как только эти два экземпляра начинают обработку событий, экземпляр добавляется для заполнения предварительно созданного буфера. Теперь приложение работает с тремя подготовленными экземплярами: двумя всегда готовыми экземплярами и третьим предварительно подготовленным и неактивным буфером. Плата взимается за три экземпляра.
  3. По мере увеличения нагрузки приложению требуется больше экземпляров для обработки трафика HTTP. Поэтому предварительно подготовленный экземпляр становится активным. Теперь загрузка HTTP направляется на все три экземпляра, а четвертый экземпляр мгновенно подготавливается для заполнения предварительно подготовленного буфера.
  4. Эта последовательность масштабирования и предварительного потепления продолжается до достижения максимального количества экземпляров для приложения или уменьшения нагрузки, что приводит к уменьшению масштаба платформы в течение периода. Экземпляры не создаются заранее или активируются за пределы максимального значения.

Вы не можете изменить параметр предварительного количества экземпляров на портале, вместо этого следует использовать Azure CLI или Azure PowerShell.

Максимальное количество экземпляров для приложения-функции

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

Подключение к частной сети

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

Приложению-функции в плане "Премиум" требуется для назначения подсеть с диапазоном IP-адресов, достаточным для подготовки каждого возможного экземпляра. Для этого требуется блок, в котором не менее 100 IP-адресов.

Дополнительные сведения см. в статье об интеграции приложения-функции с виртуальной сетью.

Быстрое эластичное масштабирование

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

Дополнительные сведения о том, как реализуется масштабирование, см. в статье Масштабирование на основе событий в Функциях Azure.

Выполнение с увеличенной продолжительностью

Функции в плане потребления ограничены 10 минутами для одного выполнения. В плане "Премиум" продолжительность выполнения по умолчанию составляет 30 минут, чтобы исключить появление неконтролируемых выполнений. Тем не менее можно изменить конфигурацию host.json, чтобы сделать длительность несоотвязанной для приложений плана Premium со следующими ограничениями:

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

Миграция

С помощью команд Azure CLI можно переносить приложение-функцию между планами "Потребление" и "Премиум" в системе Windows. Конкретные команды зависят от направления переноса. Дополнительные сведения приведены в разделе Планирование миграции.

Этот перенос не поддерживается в Linux.

Параметры плана "Премиум"

Имеется два параметра, определяющих размер плана при его создании: минимальное число экземпляров (или размер плана) и предельно максимальное значение.

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

Размер и максимальные значения для плана можно настроить на портале Azure, выбрав Scale Out в разделе Параметры для приложения-функции, развернутого в этом плане.

Параметры размера плана эластичного масштабирования на портале

Минимальное значение для каждого плана Premium — по крайней мере один экземпляр. Фактическое минимальное количество экземпляров определяется на основе всегда готовых экземпляров, запрашиваемых приложениями в плане. Например, если приложение A запрашивает пять всегда готовых экземпляров, а приложение B запрашивает два всегда готовых экземпляра в одном плане, минимальный размер плана определяется как пять. Приложение A работает на всех пяти, и приложение B работает только на 2.

Внимание

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

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

Вы можете указать минимальное количество экземпляров на портале Azure, выбрав Scale Out в разделе Параметры для приложения-функции, развернутого в этом плане.

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

Номера SKU доступных экземпляров

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

номер SKU Ядра Память Хранилище
EP1 1 3,5 ГБ 250 ГБ
EP2 2 7 ГБ 250 ГБ
EP3 4 14 ГБ 250 ГБ

Рекомендации по использованию памяти

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

Например, для приложения-функции JavaScript объем используемой памяти ограничен предельным значением, заданным по умолчанию в Node.js. Чтобы увеличить этот фиксированный предельный объем памяти, добавьте для приложения параметр languageWorkers:node:arguments со значением --max-old-space-size=<max memory in MB>.

И для планов с более чем 4 ГБ памяти убедитесь, что параметр платформы Bitness установлен в 64 Bit разделе "Общие Параметры".

Максимальное масштабирование региона

В настоящее время поддерживаются максимальные значения горизонтального масштабирования для одного плана в каждом регионе и конфигурации ОС:

Область/регион Windows Linux
Центральная Австралия 100 20
Центральная Австралия 2 100 Недоступно
Восточная Австралия 100 40
Юго-Восточная часть Австралии 100 20
Южная Бразилия 100 20
Центральная Канада 100 100
Центральная Индия 100 20
Центральная часть США 100 100
Восточный Китай 2 100 20
Северный Китай 2 100 20
Восточная Азия 100 20
Восточная часть США 100 100
Восточная часть США 2 100 100
Центральная Франция 100 60
Центрально-Западная Германия 100 20
Израиль, центральный регион 100 20
Северная Италия 100 20
Восточная Япония 100 20
Западная Япония 100 20
Западная Индия Jio 100 20
Республика Корея, центральный регион 100 20
Республика Корея, южный регион 40 20
Центрально-северная часть США 100 20
Северная Европа 100 100
Восточная Норвегия; 100 20
Северная часть ЮАР 100 20
Западная часть ЮАР 20 20
Центрально-южная часть США 100 100
Индия (юг) 100 Недоступно
Юго-Восточная Азия 100 20
Северная Швейцария 100 20
Западная Швейцария 100 20
Северная часть ОАЭ; 100 20
южная часть Соединенного Королевства 100 100
западная часть Соединенного Королевства 100 20
US Gov (Аризона). 100 20
USGov Техас 100 Недоступно
USGov Вирджиния 100 20
Центрально-западная часть США 100 20
Западная Европа 100 100
Индия (запад) 100 20
Западная часть США 100 100
западная часть США 2 100 20
Западная часть США — 3 100 20

Дополнительные сведения см. в полной региональной доступности Функции Azure.

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