你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:在 Azure Spring Apps 标准消耗和专用计划中为应用程序设置自动缩放
注意
从 2025 年 3 月中旬开始,基本、标准和企业计划将弃用,停用期为三年。 建议过渡到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
从 2024 年 9 月 30 日开始,标准消耗和专用计划将弃用,六个月后将完全关闭。 建议过渡到 Azure 容器应用。 有关详细信息,请参阅将 Azure Spring Apps 标准消耗和专用计划迁移到 Azure 容器应用。
本文适用于:✔️ 标准消耗和专用计划(预览版)❌ 基本/标准计划 ❌ 企业计划
本文介绍如何在 Azure Spring Apps 标准消耗和专用计划中为应用程序设置自动缩放规则。 该计划使用 Azure 容器应用环境来托管 Spring 应用程序,并提供以下管理和支持:
- 通过一组声明性缩放规则管理自动水平缩放。
- 支持 Azure 容器应用支持的所有缩放规则。
有关详细信息,请参阅 Azure 容器应用文档。
先决条件
- Azure 订阅。 如果没有 Azure 订阅,请在开始之前参阅 Azure 免费帐户。
- Azure Spring Apps 标准消耗和专用计划服务实例。 有关详细信息,请参阅快速入门:预配 Azure Spring Apps 标准消耗和专用计划服务实例。
- 部署到 Azure Spring Apps 的 Spring 应用。
缩放定义
缩放由限制和规则的组合定义。
限制是 Spring 允许的最小和最大实例数。
缩放限制 默认值 最小值 最大值 每个部署的最小实例数 1 0 30 每个部署的最大实例数 10 1 30 默认情况下,Spring 应用程序的最小实例计数设置为 1,以确保部署始终运行。 如果要缩小到零,可以将最小实例计数设置为零。
规则是自动缩放在添加或删除实例时所遵循的条件。 缩放规则包括 HTTP、TCP 和自定义规则,如在 Azure 容器应用程序中设置缩放规则的缩放规则部分所述。
如果定义多个缩放规则,则自动缩放在满足任何规则的第一个条件时开始。
轮询间隔和冷却期是自动缩放期间发生的两个时间跨度。
- 轮询间隔定义规则定义的实时数据的每个轮询操作之间的时间跨度。 默认情况下,轮询间隔设置为 30 秒。
- 仅当缩放为零时,冷却期才适用,例如,在上次自动缩放检查消息队列且消息队列为空后等待 5 分钟。
设置自动缩放设置
可以使用 Azure 门户或 Azure CLI 为应用程序设置自动缩放设置。
使用以下步骤定义自动缩放设置和规则。
- 登录到 Azure 门户。
- 在“Azure 服务”下选择“Azure Spring Apps”。
- 在“名称”列中,选择要自动缩放的 Azure Spring Apps 实例。
- 在 Azure Spring Apps 实例的概述页上,选择导航窗格中的“应用”。
- 选择要自动缩放的应用程序。
- 在所选应用的概述页上,选择导航窗格中的“横向扩展”。
- 在“横向扩展(预览版)”页上,选择要自动缩放的部署。
- 设置部署的实例限制。
- 选择“添加”以添加缩放规则。
自定义缩放规则
有关定义自定义规则的信息,请参阅 Keda 缩放程序。 以下部分演示了在 MySQL 和 Cron 上设置缩放规则的两个示例。
在 MySQL 数据库上设置自动缩放规则
以下 CLI 命令演示如何根据 Keda MySQL 缩放程序自动缩放 Spring 应用程序。 首先,创建机密以存储 SQL 连接字符串。 此机密用于缩放规则身份验证。 然后,设置一个规则,该规则根据表的行计数缩放应用。
az spring app update \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-service-instance-name> \
--name <app-name> \
--secrets mysqlconnectionstring="<username>:<pwd>@tcp(<server name>:3306)/<database name>"
az spring app scale \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-service-instance-name> \
--name <app-name> \
--scale-rule-type mysql \
--scale-rule-name <your rule name> \
--scale-rule-auth "connectionString=mysqlconnectionstring" \
--scale-rule-metadata queryValue=4 query="SELECT count(*) FROM mytable" \
--min-replicas 0 \
--max-replicas 3
根据 Linux cron 创建规则
以下命令演示如何根据 Keda Cron 缩放程序设置规则。 副本在 cron 时间间隔内缩放到所需的数值。
az spring app scale \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-service-instance-name> \
--name <app-name> \
--scale-rule-type cron \
--scale-rule-name testscalerule \
--scale-rule-metadata timezone="Asia/Shanghai" \
start="10 * * * *" \
end="15 * * * *" \
desiredReplicas="3" \
--min-replicas 0 \
--max-replicas 3
缩放事件
可以从基础容器应用的系统日志中找到缩放事件,并使用 KEDA
筛选 EventSource,如以下示例所示:
ContainerAppSystemLogs_CL
| where ContainerAppName_s == 'YourAppName' and EventSource_s == 'KEDA'
清理资源
当不再需要在本文中创建的资源时,请务必将其删除。 若要删除资源,只需删除包含它们的资源组即可。 可使用 Azure 门户删除资源组。 或者,若要使用 Azure CLI 删除资源组,请使用以下命令:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."