Руководство. Масштабирование приложения-контейнера
Приложения контейнеров 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
Если любой из этих ресурсов уже существует, команда использует существующие ресурсы, а не создает новые.
Наконец, команда создает и развертывает приложение контейнера с помощью общедоступного образа контейнера.
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 (необязательно)
- Войдите на портал Azure.
- В строке поиска в верхней части введите my-container-app.
- В результатах поиска в разделе "Ресурсы" выберите my-container-app.
- В панели навигации слева разверните узел "Приложение " и выберите "Масштаб" и " реплики".
- На странице масштабирования и реплик выберите реплики.
- Теперь приложение-контейнер имеет несколько реплик.
Возможно, потребуется выбрать "Обновить" , чтобы просмотреть новые реплики.
В панели навигации слева разверните узел "Мониторинг" и выберите "Метрики".
На странице метрик задайте для метрики значение "Запросы".
Выберите Применить разделение.
Разверните раскрывающийся список "Значения" и проверьте реплику.
Щелкните значок синей галочки, чтобы завершить редактирование разбиения.
На диаграмме показаны запросы, полученные приложением-контейнером, разделенные по реплике.
По умолчанию для шкалы графа задано значение последних 24 часов с степенью детализации времени в 15 минут. Выберите масштаб и измените его на последние 30 минут с степенью детализации времени за одну минуту. Нажмите кнопку Применить.
Выберите график и перетащите его, чтобы выделить недавнее увеличение запросов, полученных приложением-контейнером.
На следующем снимках экрана показано увеличенное представление о том, как запросы, полученные приложением-контейнером, разделяются между репликами.
Очистка ресурсов
Если вы не собираетесь продолжать использовать это приложение, выполните следующую команду, чтобы удалить группу ресурсов вместе со всеми ресурсами, созданными в этом руководстве.
Внимание
Следующая команда удаляет указанную группу ресурсов и все ресурсы, содержащиеся в ней. Если в указанной группе ресурсов существуют другие ресурсы, кроме созданных для работы с этим учебником, они также будут удалены.
az group delete --name my-container-apps
Совет
Возникли проблемы? Сообщите о них в репозитории Azure Container Apps на GitHub.