Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложения контейнеров Azure управляют автоматическим горизонтальным масштабированием с помощью набора декларативных правил масштабирования. По мере масштабирования контейнера приложения новые экземпляры контейнера приложения создаются по запросу. Эти экземпляры называются репликами.
В этом руководстве вы добавите правило масштабирования HTTP в приложение контейнера и посмотрите, как масштабируется приложение.
Необходимые компоненты
| Требование | Instructions |
|---|---|
| Учетная запись Azure | Если у вас нет учетной записи Azure, ее можно создать бесплатно. Чтобы продолжить, вам потребуется разрешение участника на подписку Azure. Дополнительные сведения см. в статье "Назначение ролей Azure" с помощью портал Azure. |
| Учетная запись GitHub | Получите его бесплатно. |
| Azure CLI | Установите интерфейс командной строки Azure. |
Настройка
Чтобы войти в Azure из ИНТЕРФЕЙСА командной строки, выполните следующую команду и следуйте инструкциям, чтобы завершить процесс проверки подлинности.
az login
Чтобы убедиться, что вы используете последнюю версию интерфейса командной строки, выполните команду обновления.
az upgrade
Затем установите или обновите расширение "Приложения контейнеров Azure" для интерфейса командной строки.
Если при выполнении az containerapp команд в Azure CLI или командлетах из Az.App модуля PowerShell возникают ошибки о отсутствующих параметрах, убедитесь, что установлена последняя версия расширения "Приложения контейнеров Azure".
az extension add --name containerapp --upgrade
Примечание.
Начиная с мая 2024 г. расширения Azure CLI больше не поддерживают предварительные версии функций по умолчанию. Чтобы получить доступ к функциям предварительной версии контейнерных приложений, установите расширение "Приложения контейнеров" с --allow-preview trueпомощью .
az extension add --name containerapp --upgrade --allow-preview true
Теперь, когда установлено текущее расширение или модуль, зарегистрируйте Microsoft.App пространства имен и Microsoft.OperationalInsights пространств имен.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Создание и развертывание приложения-контейнера
Создайте и разверните приложение-контейнер с помощью containerapp up команды. Эта команда создает следующую команду:
- Группа ресурсов
- Среда Контейнеров приложений
- Рабочая область Log Analytics
Если любой из этих ресурсов уже существует, команда использует существующие ресурсы, а не создает новые.
Наконец, команда создает и развертывает приложение контейнера с помощью общедоступного образа контейнера. mcr.microsoft.com/dotnet/samples:aspnetapp Этот образ используется для активации правил масштабирования, создаваемых в этой статье. Вам не нужно знать или использовать .NET для выполнения этой процедуры.
az containerapp up \
--name my-container-app \
--resource-group my-container-apps \
--location centralus \
--environment 'my-container-apps' \
--image mcr.microsoft.com/dotnet/samples:aspnetapp \
--target-port 8080 \
--ingress external \
--query properties.configuration.ingress.fqdn \
Примечание.
Убедитесь, что значение параметра --image имеет нижний регистр.
Если установить для --ingress значение external, приложение-контейнер будет поддерживать общедоступные запросы.
Команда up возвращает полное доменное имя (FQDN) для приложения контейнера. Скопируйте полное доменное имя в текстовый файл. Он используется в разделе "Отправка запросов ". Полное доменное имя выглядит следующим образом:
https://my-container-app.icydune-96848328.centralus.azurecontainerapps.io
Добавление правила масштабирования
Добавьте правило масштабирования HTTP в приложение контейнера, выполнив az containerapp update команду.
az containerapp update \
--name my-container-app \
--resource-group my-container-apps \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name my-http-scale-rule \
--scale-rule-http-concurrency 1
Эта команда добавляет правило масштабирования HTTP в приложение контейнера с именем my-http-scale-rule и параметром 1параллелизма. Если приложение получает несколько одновременных HTTP-запросов, среда выполнения создает реплики приложения для обработки запросов.
Команда update возвращает новую конфигурацию в виде ответа JSON, чтобы проверить успешность запроса.
Запуск выходных данных журнала
Вы можете наблюдать за эффектами масштабирования приложения, просматривая журналы, созданные средой выполнения приложений контейнеров.
az containerapp logs show Используйте команду, чтобы начать прослушивание записей журнала.
az containerapp logs show \
--name my-container-app \
--resource-group my-container-apps \
--type=system \
--follow=true
Команда show возвращает записи из системных журналов для приложения-контейнера в режиме реального времени. Вы можете ожидать ответ, как показано в следующем примере:
{
"TimeStamp":"2023-08-01T16:49:03.02752",
"Log":"Connecting to the container 'my-container-app'..."
}
{
"TimeStamp":"2023-08-01T16:49:03.04437",
"Log":"Successfully Connected to container:
'my-container-app' [Revision: 'my-container-app--9uj51l6',
Replica: 'my-container-app--9uj51l6-5f96557ffb-5khg9']"
}
{
"TimeStamp":"2023-08-01T16:47:31.9480811+00:00",
"Log":"Microsoft.Hosting.Lifetime[14]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9481264+00:00",
"Log":"Now listening on: http://[::]:80"
}
{
"TimeStamp":"2023-08-01T16:47:31.9490917+00:00",
"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9491036+00:00",
"Log":"Application started. Press Ctrl+C to shut down."
}
{
"TimeStamp":"2023-08-01T16:47:31.949723+00:00",
"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9497292+00:00",
"Log":"Hosting environment: Production"
}
{
"TimeStamp":"2023-08-01T16:47:31.9497325+00:00",
"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9497367+00:00",
"Log":"Content root path: /app/"
}
Дополнительные сведения см. в журналах az containerapp.
Отправка запросов
Откройте новую оболочку Bash. Выполните следующую команду, заменив <YOUR_CONTAINER_APP_FQDN> полное доменное имя приложения контейнера, сохраненное в разделе "Создание и развертывание приложения контейнера".
seq 1 50 | xargs -Iname -P10 curl "<YOUR_CONTAINER_APP_FQDN>"
Эти команды отправляют 50 запросов в приложение-контейнер в параллельных пакетах из 10 запросов.
| Команда или аргумент | Description |
|---|---|
seq 1 50 |
Создает последовательность чисел от 1 до 50. |
| |
Оператор канала отправляет последовательность команде xargs . |
xargs |
Выполняется curl с указанным URL-адресом |
-Iname |
Выступает в качестве заполнителя выходных seqданных. Этот аргумент предотвращает отправку возвращаемого curl значения в команду. |
curl |
Вызывает заданный URL-адрес. |
-P10 |
Предписывает xargs выполнять до 10 процессов за раз. |
Дополнительные сведения см. в документации по следующим причинам:
В первой оболочке, где вы выполнили az containerapp logs show команду, выходные данные теперь содержат одну или несколько записей журнала, как показано ниже.
{
"TimeStamp":"2023-08-01 18:09:52 +0000 UTC",
"Type":"Normal",
"ContainerAppName":"my-container-app",
"RevisionName":"my-container-app--00001111",
"ReplicaName":"my-container-app--00001111-aaaaa22222-bbbb",
"Msg":"Replica 'my-container-app--00001111-aaaaa22222-bbbb' has been scheduled to run on a node.",
"Reason":"AssigningReplica",
"EventSource":"ContainerAppController",
"Count":0
}
Просмотр масштабирования в портал Azure (необязательно)
Войдите на портал Azure.
В строке поиска в верхней части введите my-container-app.
В результатах поиска в разделе "Ресурсы" выберите my-container-app.
В панели навигации слева разверните узел "Приложение " и выберите "Масштаб" и " реплики".
На странице масштабирования и реплик выберите реплики.
Теперь приложение-контейнер имеет несколько реплик.
Возможно, потребуется выбрать "Обновить" , чтобы просмотреть новые реплики.
В панели навигации слева разверните узел "Мониторинг" и выберите "Метрики".
На странице метрик задайте для метрики значение "Запросы".
Выберите Применить разделение.
Разверните раскрывающийся список "Значения" и проверьте реплику.
Щелкните значок синей галочки, чтобы завершить редактирование разбиения.
На диаграмме показаны запросы, полученные приложением-контейнером, разделенные по реплике.
По умолчанию для шкалы графа задано значение последних 24 часов с степенью детализации времени в 15 минут. Выберите масштаб и измените его на последние 30 минут с степенью детализации времени за одну минуту. Нажмите кнопку Применить.
Выберите график и перетащите его, чтобы выделить недавнее увеличение запросов, полученных приложением-контейнером.
На следующем снимках экрана показано увеличенное представление о том, как запросы, полученные приложением-контейнером, разделяются между репликами.
Масштабирование ЦП и памяти
Если это возможно, следует предпочесть правила масштабирования HTTP для правил масштабирования ЦП или памяти. Масштабирование ЦП и памяти не позволяют приложению-контейнеру масштабироваться до нуля.
После добавления правила масштабирования ЦП или памяти его можно протестировать, отправив запросы в приложение контейнера и просмотрев масштабирование на портале Azure.
После отправки запросов в приложение масштабирования может потребоваться несколько минут до запуска правила масштабирования и создания новых реплик.
Масштабирование ЦП
Масштабирование ЦП позволяет вашему приложению масштабироваться внутрь или наружу в зависимости от уровня загрузки ЦП.
Например, если вы создаете правило масштабирования ЦП со значением 50использования, приложения контейнеров Azure создают дополнительные реплики приложения-контейнера, когда среднее использование ЦП для всех реплик достигает 50%.
Масштабирование ЦП не позволяет приложению-контейнеру масштабироваться до нуля. Дополнительные сведения об этом триггере см. в разделе "Триггер масштабирования ЦП KEDA".
Добавьте правило масштабирования ЦП в приложение контейнера, выполнив az containerapp update команду.
Примечание.
При использовании Azure CLI для добавления правила масштабирования в приложение-контейнер, которое уже имеет правило масштабирования, новое правило масштабирования заменяет старое правило масштабирования. Сведения о добавлении нескольких правил масштабирования см. в разделе "Несколько правил масштабирования".
Перед выполнением следующей команды замените <PLACEHOLDERS> вашим значением. В этом руководстве замените <UTILIZATION> на 1. Это приводит к масштабированию приложения-контейнера, когда среднее использование ЦП для всех реплик достигает 1%. Это значение предназначено только для демонстрации. Количество реплик ограничено 10 заданным --max-replicas 10 при выполнении az containerapp update.
az containerapp update \
--name my-container-app \
--resource-group my-container-apps \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name my-cpu-scale-rule \
--scale-rule-type cpu \
--scale-rule-metadata type=Utilization value=<UTILIZATION>
Масштабирование памяти
Масштабирование памяти позволяет приложению масштабироваться в зависимости от объема используемой памяти.
Например, если вы создаете правило масштабирования памяти со значением 50использования, приложения контейнеров Azure создают больше реплик приложения-контейнера, когда среднее использование памяти для всех реплик достигает 50%.
Масштабирование памяти не позволяет приложению-контейнеру масштабироваться до нуля. Дополнительные сведения об этом триггере см. в разделе "Триггер масштабирования памяти KEDA".
Добавьте правило масштабирования памяти в приложение контейнера, выполнив az containerapp update команду.
Примечание.
При использовании Azure CLI для добавления правила масштабирования в приложение-контейнер, которое уже имеет правило масштабирования, новое правило масштабирования заменяет старое правило масштабирования. Сведения о добавлении нескольких правил масштабирования см. в разделе "Несколько правил масштабирования".
Перед выполнением следующей команды замените <PLACEHOLDERS> вашим значением. В этом руководстве замените <UTILIZATION> на 1. Это приводит к масштабированию приложения-контейнера, когда среднее использование памяти для всех реплик достигает 1%. Это значение предназначено только для демонстрации. Количество реплик ограничено 10 заданным --max-replicas 10 при выполнении az containerapp update.
az containerapp update \
--name my-container-app \
--resource-group my-container-apps \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name my-memory-scale-rule \
--scale-rule-type memory \
--scale-rule-metadata type=Utilization value=<UTILIZATION>
Несколько правил масштабирования
Чтобы добавить несколько правил масштабирования в приложение контейнера с помощью Azure CLI, необходимо использовать YAML.
Экспортируйте конфигурацию вашего приложения контейнера в YAML с помощью команды
az containerapp show.az containerapp show \ --name my-container-app \ --resource-group my-container-apps \ --output yaml > app.yamlproperties>template>scale>rulesВ разделеapp.yamlдобавьте следующие свойства. Замените значения<PLACEHOLDERS>на свои.... properties: ... template: ... scale: ... rules: - name: cpu-scaling-rule custom: type: cpu metadata: type: "Utilization" value: "<CPU_UTILIZATION>" - name: memory-scaling-rule custom: type: memory metadata: type: "Utilization" value: "<MEMORY_UTILIZATION>" ...Импортируйте конфигурацию приложения-контейнера из
app.yaml, с помощью командыaz containerapp update.az containerapp update \ --name my-container-app \ --resource-group my-container-apps \ --yaml app.yaml
Очистка ресурсов
Если вы не собираетесь продолжать использовать это приложение, выполните следующую команду, чтобы удалить группу ресурсов вместе со всеми ресурсами, созданными в этом руководстве.
Внимание
Следующая команда удаляет указанную группу ресурсов и все ресурсы, содержащиеся в ней. Если ресурсы вне области этого руководства существуют в указанной группе ресурсов, они также будут удалены.
az group delete --name my-container-apps
Совет
Возникли проблемы? Сообщите о них в репозитории Azure Container Apps на GitHub.