确定自动缩放因素
通过自动缩放,可以指定 Web 应用应横向扩展和再次缩小的条件。 有效的自动缩放能够确保有足够的资源用于在高峰时处理大量请求,并在需求下降时管理成本。
可以根据基于资源使用情况的因素组合,配置自动缩放检测缩小和横向扩展的时机。 还可将自动缩放配置为根据计划发生。
在本单元中,你将了解如何指定可用于自动缩放服务的因素。
自动缩放和应用服务计划
自动缩放是应用服务计划(供 Web 应用使用)的一项功能。 当 Web 应用横向扩展时,Azure 将启动由应用服务计划定义的新的硬件实例到应用。
要防止失控的自动缩放,应用服务计划必须限制实例数。 成本更高的定价层中的计划具有更高的限制。 自动缩放可创建的实例数不得超过此限制。
注意
并非所有应用服务计划的定价层都支持自动缩放。
自动缩放条件
你指出如何通过创建自动缩放条件进行自动缩放。 Azure 提供两个用于自动缩放的选项:
- 基于指标缩放,如磁盘队列长度,或者等待处理的 HTTP 请求数量。
- 根据计划缩放为具体实例数。 例如,可以安排在一天内的特定时间横向扩展,或在特定的日期或一周内的某天进行。 还需指定结束日期,系统会在这一时间还原缩放。
通过缩放到特定实例数,你只能横向扩展到所定义的实例数。 如果需要以增量方式横向扩展,可在同一自动缩放条件下组合使用指标和基于计划的自动缩放。 因此,可安排系统在 HTTP 请求数超过某个阈值时进行横向扩展,但只能在当天特定时段间进行。
可以创建多个自动缩放条件以处理不同的计划和指标。 应用下列任一条件时,Azure 自动缩放服务。 如果其他条件均不可用,应用服务计划还会使用默认条件。 此条件始终处于活动状态,因此没有计划。
自动缩放规则的指标
按指标进行自动缩放要求定义一个或多个自动缩放规则。 自动缩放规则指定要监视的指标,以及当此指标超过定义的阈值时的自动缩放的响应方式。 你可以监视的 Web 应用指标包括:
- CPU 百分比。 此指标表示所有实例的 CPU 使用率。 较高的值表示实例正在变为 CPU 绑定,这可能会造成处理客户端请求延迟。
- 内存百分比。 此指标捕获所有实例的应用程序内存占用情况。 较高的值指示空闲内存可能即将用尽,最终可能会造成一个或多个实例失败。
- 磁盘队列长度。 此指标是所有实例的未完成 I/O 请求的数量的度量值。 较高的值意味着可能正在发生磁盘争用。
- Http 队列长度。 此指标值表示等待 Web 应用处理的客户端请求数量。 如果此数值较大,客户端请求可能失败,并出现 HTTP 408(超时)错误。
- 数据输入。 此指标表示所有实例接收的字节数。
- 数据输出。此指标表示所有实例已发送的字节数。
你还可基于其他 Azure 服务的指标进行缩放。 例如,如果 Web 应用处理来自服务总线队列的请求,且如果 Azure 服务总线队列中托管的项数超过临界长度,你可能想要启动 Web 应用的更多实例。
自动缩放规则如何分析指标
自动缩放通过分析所有实例中随着时间变化的指标值中的趋势来进行工作。 分析是一个多步骤过程。
在第一步中,自动缩放规则聚合在一段称为“时间粒度”的时间段内为所有实例的指标检索的值。 每个指标都具有其自己的内部时间粒度,但在大多数情况下此时间段为 1 分钟。 聚合的值称为“时间聚合”。 可用选项包括“平均值”、“最小值”、“最大值”、“总和”、“上次结果”和“计数”。
如果要确定指标中的任何更改是否足够长久以使自动缩放实现其价值,则一分钟的时间间隔非常短。 因此,自动缩放规则执行第二步,在较长的用户指定时间段内执行由"时间聚合"计算的值的进一步聚合,这被称为“持续时间”。 最短持续时间为 5 分钟。 例如,如果“持续时间”设置为 10 分钟,则自动缩放规则会聚合为时间粒度计算的 10 个值。
“持续时间”的聚合计算可能与“时间粒度”的聚合计算不同。 例如,如果时间聚合为“平均值”且收集的统计信息是一分钟时间粒度的 CPU 百分比,则会计算所有实例在此分钟内的每分钟平均 CPU 使用率百分比。 如果时间粒度统计信息设置为“最大值”,且规则“持续时间”设置为 10 分钟,则使用 CPU 使用率百分比的 10 个平均值中的最大值来确定是否已超过规则阈值。
自动缩放操作
当自动缩放规则检测到某个指标超出阈值时,它可以执行自动缩放操作。 自动缩放操作可以是横向扩展或缩小。 横向扩展操作会增加实例数,而横向缩减操作会减少实例数。 自动缩放操作使用运算符(例如“小于”、“大于”、“等于”等)来确定如何对阈值做出反应。 通常情况下横向扩展使用“大于”运算符来比较指标值和阈值。 缩小操作通常使用“小于”运算符来比较指标值和阈值。 自动缩放操作可将实例数设置为特定级别,而不是递增或递减可用的数。
自动缩放操作有冷却时段,以分钟为单位。 在此间隔期间,不会再次触发缩放规则。 这样让系统可以在自动缩放事件之间保持稳定。 请记住,启动或关闭实例需要时间,因此任何收集的指标可能在几分钟内不会显示任何显著更改。 最小冷却时段为 5 分钟。
配对自动缩放规则
工作负荷降低时应计划缩小。 请考虑在相同的自动缩放条件下成对定义自动缩放规则。 一个自动缩放规则应指示当指标超过阈值上限时应如何横向扩展系统。 另一个规则应定义当同一指标下降到低于阈值下限时,如何再次还原系统缩放。
组合自动缩放规则
单一的自动缩放条件可以包含多个自动缩放规则(例如,横向扩展规则和相应的缩小规则)。 但是,自动缩放条件中的自动缩放规则无需直接相关。 可以在同一自动缩放条件中定义以下四个规则:
- 如果 HTTP 队列长度超过 10,横向扩展 1
- 如果 CPU 使用率超过 70%,横向扩展 1
- 如果 HTTP 队列长度为 0,缩小 1
- 如果 CPU 使用率下降到 50% 以下,缩小 1
决定是否要横向扩展时,如果满足任意横向扩展规则(HTTP 队列长度超过 10 或 CPU 使用率超过 70%),则执行自动缩放操作。 横向缩减时,仅当满足所有横向缩减规则(HTTP 队列长度降至 0 且 CPU 使用率下降到 50% 以下)时才运行自动缩放操作。 如果需要在仅满足其中一项缩小规则的情况下进行缩小,则必须在单独的自动缩放条件中定义规则。