练习 - 自动缩放规则

已完成

在本练习中,我们将练习如何设置和触发示例应用程序的自动缩放。

规则练习

在示例 Azure Spring Apps 应用程序中,该应用程序在创建时已在客户服务微服务上触发了横向扩展操作。

Tomcat 请求计数平均每分钟超过 10 个会话时,customers-service 应用将横向扩展。 触发自动缩放后,如果请求计数平均每分钟小于或等于 10 个会话,它会进行横向缩减。

在 Azure 门户中查看自动缩放设置

  1. 在新的 Web 浏览器选项卡中,打开 Azure 门户。
  2. 在顶部搜索框中,搜索“Azure Spring Apps”。
  3. 从 Azure Spring Apps 的“概述”页的结果中选择你的 Azure Spring Apps 实例。
  4. 在左侧导航窗格上菜单中的“设置”下选择“应用”选项卡。
  5. 选择“customers-service”应用程序。 然后会看到应用程序的“概览”页。
  6. 在页面左侧的菜单的“设置”下,转到“横向扩展”选项卡。

Azure 门户中横向扩展设置的屏幕截图。

自动缩放需求管理有两个选项:

  1. 手动缩放:保持固定的实例计数。 在“标准”层中,最多可横向扩展到 500 个实例。 此值更改微服务应用程序的单独运行实例的数目。
  2. 自定义自动缩放:根据任何指标按任何计划进行缩放。

在 Azure 门户中,查看应用程序的预安装配置。 下图显示了用于对 tomcat 请求计数进行缩放的“自定义”自动缩放设置。

Azure 门户中“自定义”自动缩放设置的屏幕截图。

查看已完成的自动缩放事件

在“横向扩展”设置屏幕中,转到“运行历史记录”选项卡以查看最新的缩放操作。 该选项卡以图形方式显示观察到的容量随时间的变化,以及每个自动缩放操作的日志。

Azure 门户中自动缩放运行历史记录的屏幕截图。

使用脚本触发横向扩展操作

还可以通过 Web 浏览器或 shell 脚本手动触发自动缩放。

为了测试自动缩放规则,我们将在实例上生成一些负载。 这种模拟负载会导致自动缩放规则横向扩展,增加实例数。 当模拟负载停止时,自动缩放规则会横向缩减,减少实例数。

为了使你能够触发自动缩放,我们在你用来创建 Azure Spring Apps 应用程序的同一个 GIT 存储库中提供了一个 shell 脚本。

  1. 通过在 https://shell.azure.com bash 窗口中运行以下命令,设置 Spring Apps 服务的实例名称。 使用在上一练习中使用的同一 Azure Spring Apps 服务名称:

    export SPRING_APPS_SERVICE=<spring-apps-instance-name>
    
  2. 接下来,在 bash 窗口中运行以下命令,针对 Spring Apps customers-service 微服务执行事务:

    cd mslearn-autoscale-java
    sh loadTest.sh
    
  3. 你将看到 customers-service 负载测试的输出,它会将 100 个请求发送到实例

通过 Web 浏览器手动触发横向扩展操作(可选)

若要手动触发所创建的自动缩放设置中的横向扩展条件,customers-service 微服务在不到 1 分钟内必须有 10 个以上的请求。

  1. 打开一个新的浏览器窗口,并导航到 customers-service 微服务:

    https://<your-spring-apps-service>-api-gateway.azuremicroservices.io/api/customer/owners
    
  2. 连续重载页面 10 次以上。

查看横向扩展操作

  1. 返回原始浏览器窗口,在“自动缩放”设置中选择“运行历史记录”选项卡。

  2. 应会看到反映实例计数的图表。

  3. 几分钟后,实例计数应从 1 增加到 2。

  4. 在图表下,应该有此自动缩放设置执行的每个缩放操作的活动日志条目。

Azure 门户中自动缩放横向扩展历史记录的屏幕截图。

横向缩减操作

如果在 1 分钟的时间内对 customers-service 微服务的请求少于或等于 10,将触发自动缩放设置中的横向缩减条件。

  1. 确保未向 customers-service 微服务发送请求,并且已关闭应用/服务的浏览器窗口

  2. 观察实例计数。 几分钟后,实例计数可能会从 2 降到 1 (请参阅以下要点)

Azure 门户中自动缩放横向缩减操作的屏幕截图。

重要

Azure Spring Apps 可能无法缩放,因为自动缩放会尝试估计其缩放后的最终状态。 这意味着,如果平均 tomcat 请求数保持不变,甚至只下降了很小一部分,自动缩放就不得不立即再次进行缩放。