Руководство. Масштабирование приложения-контейнера

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

В этом руководстве вы добавите правило масштабирования HTTP в приложение контейнера и посмотрите, как масштабируется приложение.

Необходимые компоненты

Требование Instructions
Учетная запись Azure Если у вас нет учетной записи Azure, ее можно создать бесплатно.

Чтобы продолжить, вам потребуется разрешение участника на подписку Azure. Дополнительные сведения см. в статье "Назначение ролей Azure" с помощью портал Azure.
Учетная запись GitHub Получите его бесплатно.
Azure CLI Установите интерфейс командной строки Azure.

Настройка

Чтобы войти в Azure из ИНТЕРФЕЙСА командной строки, выполните следующую команду и следуйте инструкциям, чтобы завершить процесс проверки подлинности.

az login

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

az upgrade

Затем установите или обновите расширение "Приложения контейнеров Azure" для интерфейса командной строки.

az extension add --name containerapp --upgrade

Теперь, когда установлено текущее расширение или модуль, зарегистрируйте Microsoft.App пространства имен и Microsoft.OperationalInsights пространств имен.

Примечание.

Ресурсы Контейнеров приложений Azure перенесены из пространства имен Microsoft.Web в пространство имен Microsoft.App. Дополнительные сведения см. в статье о миграции пространства имен из Microsoft.Web в Microsoft.App в марте 2022 г..

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Создание и развертывание приложения-контейнера

Создайте и разверните приложение-контейнер с помощью containerapp up команды. Эта команда создает следующую команду:

  • Группа ресурсов
  • Среда Контейнеров приложений
  • Рабочая область Log Analytics

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

Наконец, команда создает и развертывает приложение контейнера с помощью общедоступного образа контейнера.

az containerapp up \
  --name my-container-app \
  --resource-group my-container-apps \
  --location centralus \
  --environment 'my-container-apps' \
  --image mcr.microsoft.com/k8se/quickstart:latest \
  --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 \
    --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://[::]:8080"
}
{
	"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--9uj51l6",
	"ReplicaName":"my-container-app--9uj51l6-5f96557ffb-f795d",
	"Msg":"Replica 'my-container-app--9uj51l6-5f96557ffb-f795d' has been scheduled to run on a node.",
	"Reason":"AssigningReplica",
	"EventSource":"ContainerAppController",
	"Count":0
}

Просмотр масштабирования в портал Azure (необязательно)

  1. Войдите на портал Azure.
  2. В строке поиска в верхней части введите my-container-app.
  3. В результатах поиска в разделе "Ресурсы" выберите my-container-app.
  4. В панели навигации слева разверните узел "Приложение" и выберите "Масштаб" и реплика.
  5. На странице масштабирования и реплик выберите реплики.
  6. Теперь приложение-контейнер имеет несколько реплика запущено.

Снимок экрана: реплика приложения контейнера.

Возможно, потребуется выбрать "Обновить", чтобы просмотреть новые реплика.

  1. В панели навигации слева разверните узел "Мониторинг" и выберите "Метрики".

  2. На странице метрик задайте для метрики значение "Запросы".

  3. Выберите Применить разделение.

  4. Разверните раскрывающийся список "Значения" и проверка реплику.

  5. Щелкните значок синего проверка знака, чтобы завершить редактирование разбиения.

  6. На диаграмме показаны запросы, полученные приложением-контейнером, разделенные на реплика.

    График метрик приложения-контейнера, в котором отображаются запросы, разделенные по реплика.

  7. По умолчанию для шкалы графа задано значение последних 24 часов с степенью детализации времени в 15 минут. Выберите масштаб и измените его на последние 30 минут с степенью детализации времени за одну минуту. Нажмите кнопку Применить.

  8. Выберите график и перетащите его, чтобы выделить недавнее увеличение запросов, полученных приложением-контейнером.

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

На следующем снимках экрана показано увеличенное представление о том, как запросы, полученные приложением-контейнером, разделяются между реплика.

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

Очистка ресурсов

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

Внимание

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

az group delete --name my-container-apps

Совет

Возникли проблемы? Сообщите о них в репозитории Azure Container Apps на GitHub.

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