Azure 中的自动缩放概述

本文介绍 Azure Monitor 中的自动缩放功能及其优点。

自动缩放支持许多资源类型。 有关支持的资源的详细信息,请参阅自动缩放支持的资源

注意

可用性集是一种较旧的扩展功能,适用于支持有限的虚拟机。 我们建议迁移到 Azure 虚拟机规模集以获得更快、更可靠的自动缩放支持。

自动缩放是什么?

自动缩放是一项服务,可用于根据应用程序的负载自动添加和删除资源。

当应用程序遇到更高的负载时,自动缩放会添加资源来处理增加的负载。 负载较低时,自动缩放可减少资源数,从而降低成本。 可以根据 CPU 使用率、队列长度和可用内存等指标缩放应用程序。 还可以根据计划进行缩放。 指标和计划是在规则中设置的。 这些规则包括运行应用程序所需的最低级别的资源,以及不会超过的最大资源级别。

例如,如果每个 VM 的平均 CPU 使用率超过 70%,则通过添加 VM 来横向扩展应用程序。 CPU 使用率下降到 40% 时,移除 VM,缩减规模。

A diagram that shows scaling out by adding virtual machine instances.

满足规则中的条件时,将触发一个或多个自动缩放操作,即添加或移除 VM。 还可以执行其他操作,例如发送电子邮件通知或 Webhook 来触发其他系统中的进程。

水平缩放和垂直缩放

自动扩缩可进行横向扩容或缩容。 横向扩缩即增加或减少资源实例的数目。 例如,对于虚拟机规模集,横向扩展意味着添加更多虚拟机。 横向缩减意味着移除虚拟机。 水平扩展在云环境中非常灵活,因为你可以使用它运行大量 VM 来处理负载。

自动扩缩不支持纵向扩缩。 相比之下,纵向扩容或缩容(即纵向扩缩)会使资源数保持不变,但在内存、CPU 速度、磁盘空间和网络方面为这些资源提供更多容量。 垂直扩展受到更大硬件可用性的限制,最终达到上限。 Azure 中硬件大小的可用性因区域而异。 垂直缩放可能还需要在缩放过程中重启 VM。

A diagram that shows scaling up by adding CPU and memory to a virtual machine.

满足规则中的条件时,将触发一个或多个自动缩放操作,即添加或移除 VM。 还可以执行其他操作,例如发送电子邮件通知或 Webhook 来触发其他系统中的进程。

自动缩放设置

可以通过以下方式设置自动缩放:

体系结构

下图说明了自动缩放体系结构。

Diagram that shows autoscale flow.

资源指标

资源生成自动缩放规则中使用的指标来触发缩放事件。 虚拟机规模集使用 Azure 诊断代理中的遥测数据来生成指标。 Azure 应用服务和 Azure 云服务的 Web 应用功能的遥测直接来自 Azure 基础结构。 一些常用的指标包括:CPU 使用率、内存使用情况、线程计数、队列长度和磁盘使用情况。 有关可用指标列表,请参阅自动缩放常用指标

自定义指标

使用应用程序生成的自定义指标。 将应用程序配置为将指标发送到 Application Insights,以便可以使用这些指标决定何时进行缩放。

时间

设置基于计划的规则以触发缩放事件。 如果看到负载中的时间模式并希望在负载发生预期更改之前进行缩放,请使用基于计划的规则。

规则

规则定义触发缩放事件、缩放方向和缩放量所需的条件。 使用 CPU 使用率和队列长度等不同的指标组合多个规则。 每个配置文件最多定义 10 条规则。

规则可以是:

  • 基于指标:基于指标值触发,例如 CPU 使用率超过 50% 时。
  • 基于时间:根据计划触发,例如,每周六上午 8 点触发。

如果满足任一规则,则自动缩放将纵向扩展。 如果满足所有规则,则自动缩放将横向缩减。 在逻辑运算符方面,当使用多个规则进行横向扩展时使用 OR 运算符。 使用多个规则进行横向缩减时使用 AND 运算符。

操作和自动化

规则可以触发一个或多个操作。 操作包括:

  • 缩放:横向扩展或缩减资源。
  • 电子邮件:向订阅管理员、共同管理员和/或任何其他电子邮件地址发送电子邮件。
  • Webhook:调用 webhook 以触发 Azure 内部或外部的多个复杂操作。 在 Azure 中,可以:

自动缩放设置

自动缩放设置包含自动缩放配置。 该设置包括定义规则、限制、计划和通知的缩放条件。 在设置中定义一个或多个缩放条件,以及一个通知设置。

自动缩放使用下列术语和结构。

UI JSON/CLI 说明
缩放条件 配置文件 基于度量或时间的规则、实例限制和计划的集合。 你可以定义一个或多个缩放条件或配置文件。 每个自动缩放设置最多定义 20 个配置文件。
规则 规则 一组基于时间或指标触发缩放操作的条件。 可以为横向缩减和横向扩展操作定义一个或多个规则。 每个配置文件总共最多定义 10 条规则。
实例限制 容量 每个缩放条件或配置文件定义了可以在该配置文件下运行的实例的默认、最大和最小数量。
计划 recurrence 指示自动缩放何时应将此缩放条件或配置文件生效。 可以设置多个缩放条件,从而能够处理不同和重叠要求。 例如,你可以为一天中的不同时间或一周中的几天设置不同的比例条件。
通知 通知 定义发生自动缩放事件时要发送的通知。 自动缩放可以将通知发送到一个或多个电子邮件地址,也可以使用一个或多个 Webhook 进行调用。 可以在 JSON 中配置多个 webhook,但在 UI 中只能配置一个 webhook。

Diagram that shows Azure autoscale setting, profile, and rule structure.

自动缩放 REST API 中提供了可配置字段和说明的完整列表。

有关代码示例,请参阅:

支持进行自动缩放的服务

自动缩放支持以下服务。

服务 架构和文档
Azure 虚拟机规模集 Azure 虚拟机规模集自动缩放概述
Azure 应用服务的 Web 应用功能 缩放 Web 应用
Azure API 管理服务 自动缩放 Azure API 管理实例
Azure 数据资源管理器群集 管理 Azure 数据资源管理器群集缩放以适应不断变化的需求
Azure 流分析 自动缩放流单元(预览版)
Azure SignalR 服务(高级层) 自动缩放 Azure SignalR 服务的单元
Azure 机器学习工作区 自动缩放联机终结点
Azure Spring Apps 为应用程序设置自动缩放
Azure 媒体服务 媒体服务中的自动缩放

后续步骤

若要了解有关自动缩放的详细信息,请参阅以下资源: