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