你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:在 Azure Spring Apps 标准消耗和专用计划中为应用程序设置自动缩放

注意

Azure Spring Apps 是 Azure Spring Cloud 服务的新名称。 虽然该服务有新名称,但一些地方仍会使用旧名称,我们仍在更新屏幕截图、视频和图形等资产。

本文适用于:✔️ 标准消耗和专用计划(预览版)❌ 基本/标准计划 ❌ 企业计划

本文介绍如何在 Azure Spring Apps 标准消耗和专用计划中为应用程序设置自动缩放规则。 该计划使用 Azure 容器应用环境来托管 Spring 应用程序,并提供以下管理和支持:

  • 通过一组声明性缩放规则管理自动水平缩放。
  • 支持 Azure 容器应用支持的所有缩放规则。

有关详细信息,请参阅 Azure 容器应用文档

先决条件

缩放定义

缩放由限制和规则的组合定义。

  • 限制是 Spring 允许的最小和最大实例数。

    缩放限制 默认值 最小值 最大值
    每个部署的最小实例数 1 0 30
    每个部署的最大实例数 10 1 30

    默认情况下,Spring 应用程序的最小实例计数设置为 1,以确保部署始终运行。 如果要缩小到零,可以将最小实例计数设置为零。

  • 规则是自动缩放在添加或删除实例时所遵循的条件。 缩放规则包括 HTTP、TCP 和自定义规则,如在 Azure 容器应用程序中设置缩放规则缩放规则部分所述。

    如果定义多个缩放规则,则自动缩放在满足任何规则的第一个条件时开始。

  • 轮询间隔冷却期是自动缩放期间发生的两个时间跨度。

    • 轮询间隔定义规则定义的实时数据的每个轮询操作之间的时间跨度。 默认情况下,轮询间隔设置为 30 秒。
    • 仅当缩放为零时,冷却期才适用,例如,在上次自动缩放检查消息队列且消息队列为空后等待 5 分钟。

设置自动缩放设置

可以使用 Azure 门户或 Azure CLI 为应用程序设置自动缩放设置。

使用以下步骤定义自动缩放设置和规则。

  1. 登录到 Azure 门户。
  2. 在“Azure 服务”下选择“Azure Spring Apps”。
  3. 在“名称”列中,选择要自动缩放的 Azure Spring Apps 实例。
  4. 在 Azure Spring Apps 实例的概述页上,选择导航窗格中的“应用”。
  5. 选择要自动缩放的应用程序。
  6. 在所选应用的概述页上,选择导航窗格中的“横向扩展”。
  7. 在“横向扩展(预览版)”页上,选择要自动缩放的部署。
  8. 设置部署的实例限制。
  9. 选择“添加”以添加缩放规则。

Screenshot of the Azure portal preview version showing the Scale out page for an app in an Azure Spring Apps instance.

自定义缩放规则

有关定义自定义规则的信息,请参阅 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 ..."

后续步骤