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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Application Auto Scaling 的目标跟踪扩展策略

使用目标跟踪扩展策略,您可以选择扩展指标并设置一个目标值。Application Auto Scaling 创建和管理触发扩展策略的 CloudWatch 警报,并根据指标和目标值计算扩展调整。扩展策略根据需要增加或减少容量,将指标保持在指定的目标值或接近指定的目标值。除了将指标保持在目标值附近以外,目标跟踪扩展策略还会对由于负载模式变化而造成的指标变化进行调整。

选择指标

创建目标跟踪扩展策略时,可使用以下预定义指标。您可以选择使用自定义量度规范来定义要监视的度量,并将其与目标跟踪扩展策略一起使用。

预定义的指标名称

  • DynamoDBReadCapacityUtilization

  • DynamoDBWriteCapacityUtilization

  • ALBRequestCountPerTarget

  • RDSReaderAverageCPUUtilization

  • RDSReaderAverageDatabaseConnections

  • EC2SpotFleetRequestAverageCPUUtilization

  • EC2SpotFleetRequestAverageNetworkIn

  • EC2SpotFleetRequestAverageNetworkOut

  • SageMakerVariantInvocationsPerInstance

  • ECSServiceAverageCPUUtilization

  • ECSServiceAverageMemoryUtilization

  • AppStreamAverageCapacityUtilization

  • ComprehendInferenceUtilization

  • LambdaProvisionedConcurrencyUtilization

  • CassandraReadCapacityUtilization

  • CassandraWriteCapacityUtilization

  • KafkaBrokerStorageUtilization

每个指标代表 Amazon CloudWatch 中存储的一个按时间排序排列的数据点集。虽然大多数指标Amazon默认情况下每分钟报告一次,则默认情况下每五分钟报告一次 Amazon EC2 指标。对于其他费用,您可以启用详细监控,从而以 1 分钟的频率获取实例的指标数据。为了确保更快地响应利用率变化,我们建议您启用详细监控。有关更多信息,请参阅 。对实例启用或禁用详细监控中的适用于 Linux 实例的 Amazon EC2 用户指南

选择指标时请记住原则:

  • 并非所有 指标都适用于目标跟踪。当指定自定义指标时,这可能很重要。指标必须是有效的使用率指标并且描述可扩展目标的繁忙程度。指标值必须根据可扩展目标的容量按比例增加或减少,以便指标数据可用于按比例扩展可扩展目标。

  • 要使用 ALBRequestCountPerTarget 指标,您必须指定 ResourceLabel 参数以标识与该指标关联的目标组。

  • 当指标向云监视发出实际 0 值时(例如ALBRequestCountPerTarget),则当您的应用程序没有流量时,应用程序 Auto Scaling 可以扩展到 0。要实现在不存在路由请求时使您的可扩展目标扩展为 0,可扩展目标的最小容量必须设置为 0。

  • 并非所有服务都可让您通过目标服务的控制台管理自定义指标。要查看目标服务是否支持控制台中的自定义指标,请参阅该服务的文档。

Considerations

请注意以下事项:

  • 目标跟踪扩展策略假设它应该在指定指标高于目标值时执行向外扩展。因此,不能使用目标跟踪扩展策略在指定指标低于目标值时向外扩展。

  • 您可能会看到目标值与实际指标数据点之间存在差距。这是因为 Application Auto Scaling 在确定要添加或删除多少容量时始终通过向上或向下舍入保守方式进行操作。以免添加的容量不足或删除的容量过多。但是,对于具有小容量的可扩展目标,实际指标数据点可能看起来与目标值差距很大。

  • 对于容量更高的可扩展目标,添加或删除容量将缩小目标值与实际指标数据点之间的差距。

  • 为了确保应用程序可用性,Application Auto Scaling 会针对指标尽快按比例横向扩展,但缩减过程相对缓慢。

  • 一个可扩展目标可以具有多个目标跟踪扩展策略,前提是它们分别使用不同的指标。Application Auto Scaling 的目的是始终优先考虑可用性,因此其行为会有所不同,具体取决于目标跟踪策略是否已准备好扩展或缩减。如果任何目标跟踪策略已准备好进行向外扩展,它将向外扩展可扩展目标,但仅在所有目标跟踪策略(启用了缩减部分)准备好缩减时才执行缩减。

  • 如果多个策略指示可扩展目标同时横向扩展或缩减,Application Auto Scaling 将根据为缩减和横向扩展提供最大容量的策略进行扩展。这样可以更灵活地覆盖多种场景,并确保始终有足够的容量来处理应用程序工作负载。

  • 您可以禁用目标跟踪扩展策略的缩减部分。利用此功能,您可以灵活地使用与用于向外扩展的方法不同的缩减方法。例如,您可以使用步进扩展策略进行缩减,同时使用目标跟踪扩展策略进行横向扩展。

  • 不过,在将目标跟踪扩展策略与步进扩展策略结合使用时,我们建议您务必谨慎,因为这些策略之间的冲突可能会导致意外的行为。例如,如果步进扩展策略在目标跟踪策略准备执行缩减之前启动缩减活动,则不会阻止缩减活动。在缩减活动完成后,目标跟踪策略可能会指示可扩展目标重新横向扩展。

  • 当警报的状态为时,目标跟踪扩展策略不会缩减INSUFFICIENT_DATA。有关更多信息,请参阅 使用 CloudWatch 警报进行监控

  • 请勿编辑或删除为目标跟踪扩展策略配置的 CloudWatch 警报。与您的目标跟踪扩展策略关联的 CloudWatch 警报由Amazon,并在不再需要时自动删除。

冷却时间

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

对于目标跟踪扩展策略,有两种类型的冷却时间:

  • 使用 scale-out cooldown period (向外扩展冷却时间),目的是持续(但不过度)向外扩展。Application Auto Scaling 使用目标跟踪扩展策略成功向外扩展后,它将开始计算冷却时间。除非触发更大的向外扩展或冷却时间结束,否则扩展策略不会再次增加所需容量。尽管此向外扩展冷却时间有效,但启动向外扩展活动所添加的容量将计算为下一个向外扩展活动所需容量的一部分。

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

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

您可以从默认值开始,稍后可对其进行微调。例如,您可能需要延长冷却时间,以防止目标跟踪扩展策略对短时间内发生的更改过于激进。有关默认值,请参阅TargetTrackingScalingPolicyConfiguration中的Application Auto Scaling API 参考

在高利用率期间支持应用程序可用性

目标跟踪扩展策略在利用率提高时添加容量比在利用率降低时删除容量更为积极。例如,如果策略的指定指标达到其目标值,则策略假定您的应用程序已达到高负载。因此,它通过尽可能快地添加与指标值成比例的容量来进行响应。指标越高,添加的容量就越多。

当指标低于目标值时,策略预计利用率最终会再次增加。因此,只有当利用率超过远低于目标值(通常低于 10%)的阈值时,它才会通过移除容量来减慢扩展速度。这种更保守的行为旨在确保只有当应用程序不再遇到与之前相同的高级别需求时,才会删除容量。这是目前所有目标跟踪扩展策略的默认行为(尽管行为将来可能会发生变化)。

对于具有周期性质的工作负载,您还可以选择使用计划扩展按计划自动更改容量。对于每个计划的操作,可以定义新的最小容量值和新的最大容量值。这些值构成扩展策略的边界。

当立即需要容量时,计划扩展和目标跟踪扩展的组合有助于减少利用率级别急剧增加的影响。

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

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

Limitations

以下是使用目标跟踪扩展策略时的限制:

  • 可扩展目标不能是 Amazon EMR 集群。Amazon EMR 不支持目标跟踪扩展策略。

  • 当 Amazon MSK 集群是可扩展目标时,将禁用扩展并且无法启用。

  • 您不能使用 RegisterScalableTargetPutScalingPolicy API 操作来更新 Amazon Auto Scaling 扩展计划。有关使用扩展计划的信息,请参阅Amazon Auto Scaling文档中)。