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