Application Auto Scaling 的分步扩缩策略 - Application Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Application Auto Scaling 的分步扩缩策略

借助分步扩缩,您可以为触发扩缩流程的 CloudWatch 警报选择扩缩指标和阈值,并定义当阈值违反指定数量的评估期时应如何扩展您的可扩展目标。

如果您的扩展指标是与可扩展目标的容量成比例增加或减少的利用率指标,我们建议您使用目标跟踪扩展策略。有关更多信息,请参阅 Application Auto Scaling 的目标跟踪扩缩策略。您仍然可以选择使用目标跟踪扩展与步进扩展来实现更高级的扩展策略配置。例如,如果需要,您可以在利用率达到特定级别时配置更积极的响应。

步进扩展策略根据一组扩展调整增加或减少可扩展目标的当前容量,这些调整称为步进调整。这些调整将根据警报违例规模发生变化。Application Auto Scaling 会在收到警报消息时评估所有违例的警报。

分步调整

创建分步扩展策略时,将添加一个或多个分步调整,让您可以根据警报的严重程度进行扩展。每个分步调整指定以下内容:

  • 指标值的下限

  • 指标值的上限

  • 要扩展的数量(基于扩展调整类型)

CloudWatch 根据与您的 CloudWatch 警报关联的指标的统计信息聚合指标数据点。违反警报时,将触发相应的扩缩策略。Application Auto Scaling 将指定的聚合类型应用于 CloudWatch 的最新指标数据点(而不是原始指标数据)。它将此聚合指标值与步进调整定义的上限和下限进行比较,以确定执行哪个步进调整。

您可以指定相对于违例阈值的上限和下限。例如,假设您有一个既具有当前容量又具有所需容量 10 的可扩展目标。您有一个违规阈值为 50% 的 CloudWatch 警报。您具有调整类型 PercentChangeInCapacity 以及以下步进调整的扩展和缩减策略:

示例:扩展策略的步进调整
下限 上限 调整

0

10

0

10

20

10

20

null

30

示例:缩放策略的步进调整
下限 上限 调整

-10

0

0

-20

-10

-10

null

-20

-30

这将创建以下扩展配置。

Metric value -infinity 30% 40% 60% 70% infinity ----------------------------------------------------------------------- -30% | -10% | Unchanged | +10% | +30% -----------------------------------------------------------------------

以下几点总结了扩展配置相对于可扩展目标的所需容量和当前容量的行为:

  • 在聚合指标值大于 40 并小于 60 时,将保留当前容量和所需容量。

  • 如果指标值达到 60,Application Auto Scaling 将可扩展目标的所需容量增加 1,达到 11。这基于向外扩展策略的第二个步进调整(增加 10 的 10%)。在增加新容量后,Application Auto Scaling 将当前容量增加到 11。如果即使在增加该容量后指标值仍增加到 70,Application Auto Scaling 会将目标容量增加 3 以达到 14。这基于向外扩展策略的第三个步进调整(增加 11 的 30%,即 3.3,向下舍入到 3)。

  • 如果指标值达到 40,根据横向缩减策略的第二个步骤调整(减去 14 的 10%,即 1.4,向下舍入到 1),Application Auto Scaling 将目标容量减少 1 以达到 13。如果在减少该容量后指标值仍降到 30,根据横向缩减策略的第三个步骤调整(减去 13 的 30%,即 3.9,向下舍入到 3),Application Auto Scaling 将目标容量减小 3 以达到 10。

为扩展策略指定步进调整时,请注意以下事项:

  • 分步调整范围不能重叠或有间隙。

  • 只有一个分步调整可以有空下限 (负无穷)。如果一个分步调整有负下限,则必须有一个分步调整有空下限。

  • 只有一个分步调整可以有空上限 (正无穷)。如果一个步进调整有正上限,则必须有一个步进调整有空上限。

  • 同一步进调整中的上限和下限不能为空。

  • 如果指标值高于违例阈值,则含下限而不含上限。如果指标值低于违例阈值,则不含下限而含上限。

扩展调整类型

您可以根据您选择的扩展调整类型来定义执行最佳扩展操作的扩展策略。您可以将调整类型指定为可扩展目标的当前容量的百分比或绝对数。

对于分步扩缩策略,Application Auto Scaling 支持以下调整类型:

  • ChangeInCapacity - 将可扩展目标的当前容量增加或减少指定的值。正值将增加容量,负值将减少容量。例如:如果当前容量为 3 且调整值为 5,则 Application Auto Scaling 将为容量增加 5(总量为 8)。

  • ExactCapacity - 将可扩展目标的当前容量更改为指定的值。为该调整类型指定一个正值。例如:如果当前容量为 3 且调整值为 5,则 Application Auto Scaling 将容量更改为 5。

  • PercentChangeInCapacity - 将可扩展目标的当前容量增加或减少指定的百分比。正值将增加容量,负值将减少容量。例如:如果当前容量为 10 且调整值为 10%,则 Application Auto Scaling 将为容量增加 1(总量为 11)。

    注意

    如果得出的值不是整数,Application Auto Scaling 将进行舍入,如下所示:

    • 大于 1 的值向下取整。例如,12.7 取整为 12

    • 0 和 1 之间的值舍入到 1。例如,.67 取整为 1

    • 0 和 -1 之间的值舍入到 -1。例如,-.58 取整为 -1

    • 小于 -1 的值向上取整。例如,-6.67 取整为 -6

    对于 PercentChangeInCapacity,您还可以使用 MinAdjustmentMagnitude 参数指定最小扩展量。例如,假定您创建一个增加 25% 的策略,并指定最小扩展量为 2。如果可扩展目标的容量为 4 并执行该扩展策略,4 的 25% 为 1。不过,由于您指定最小扩展量为 2,Application Auto Scaling 将增加 2。

冷却时间

等待上一个扩展活动生效的时间量称为冷却时间。

  • 使用向外扩展政策,目的是持续(但不过度)向外扩展。Application Auto Scaling 使用步进扩展策略成功向外扩展后,它将开始计算冷却时间。除非触发更大的向外扩展或冷却时间结束,否则扩展策略不会再次增加所需容量。尽管冷却时间有效,但启动向外扩展活动所添加的容量将计算为下一向外扩展活动所需容量的一部分。例如,如果警报触发一个步进扩展策略以将容量增加 2,将成功完成扩展活动并开始计算冷却时间。如果警报在冷却时间内再次触,但进行了 3 这样更大幅度的步进调整,以前增加的 2 将被视为当前容量的一部分。因此,仅在容量中增加 1。

  • 使用横向缩减策略,目的是以保守方式进行横向缩减以保护应用程序的可用性,因此在冷却时间过期之前阻止横向缩减活动。但是,如果另一个警报在缩减活动后的冷却时间内触发了向外扩展活动,Application Auto Scaling 将立即向外扩展目标。在这种情况下,缩减活动的冷却时间将停止而不完成。

冷却时间以秒为单位进行度量,仅适用于与扩展策略相关的扩展活动。在冷却时间内,当计划的操作在计划的时间开始时,它可以立即触发扩展活动,而无需等待冷却时间到期。

扩缩策略创建、管理和删除的常用命令

使用扩缩策略的常用命令包括:

Limitations

以下是使用分步扩缩策略时的限制:

  • 您无法为某些服务创建分步扩缩策略。DynamoDB、Amazon Comprehend、Lambda、Amazon Keyspaces、Amazon MSK、ElastiCache 或 Neptune 不支持分步扩缩策略。