Application Auto Scaling 的扩展活动 - Application Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Application Auto Scaling 的扩展活动

Application Auto Scaling 会监控您的扩展策略的 CloudWatch 指标,并在超过阈值时启动扩展活动。当您手动或按照计划修改可扩展目标的最大大小或最小大小时,它也会启动扩展活动。

进行扩展活动时,Application Auto Scaling 会执行以下操作之一:

  • 增加可扩展目标的容量(称为横向扩展

  • 减少可扩展目标的容量(称为横向缩减

您可以查看过去六周的扩展活动。

按可扩展目标查找扩展活动

要查看特定可扩展目标的扩展活动,请使用以下describe-scaling-activities命令。

Linux、macOS 或 Unix

aws application-autoscaling describe-scaling-activities --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount --resource-id service/my-cluster/my-service

Windows

aws application-autoscaling describe-scaling-activities --service-namespace ecs --scalable-dimension ecs:service:DesiredCount --resource-id service/my-cluster/my-service

在以下示例响应中,StatusCode 包含活动的当前状态,StatusMessage 包含有关扩展活动状态的信息。

{ "ScalingActivities": [ { "ScalableDimension": "ecs:service:DesiredCount", "Description": "Setting desired count to 1.", "ResourceId": "service/my-cluster/my-service", "ActivityId": "e6c5f7d1-dbbb-4a3f-89b2-51f33e766399", "StartTime": 1462575838.171, "ServiceNamespace": "ecs", "EndTime": 1462575872.111, "Cause": "monitor alarm web-app-cpu-lt-25 in state ALARM triggered policy web-app-cpu-lt-25", "StatusMessage": "Successfully set desired count to 1. Change successfully fulfilled by ecs.", "StatusCode": "Successful" } ] }

有关响应中字段的描述,请参阅ScalingActivity《App lication Auto Scaling API 参考》。

以下状态代码指示引发扩展活动的扩展事件何时达到完成状态:

  • Successful – 扩展已成功完成

  • Overridden – 所需容量已由较新的扩展事件进行更新

  • Unfulfilled – 扩展超时或目标服务无法满足请求

  • Failed – 扩展失败,出现异常

注意

扩展活动的状态也可能为 PendingInProgress。在目标服务响应之前,所有扩展活动都具有 Pending 状态。目标响应后,扩展活动的状态更改为 InProgress

包括未扩展的活动

默认情况下,扩展活动不反映 Application Auto Scaling 决定是否不扩展的时间。

例如,假设 Amazon ECS 服务超出给定指标的最大阈值,但任务数已达到允许的最大任务数。在这种情况下,Application Auto Scaling 不会横向扩展所需的任务数。

要在响应中包括未缩放的活动(不是按比例缩放的活动),请在describe-scaling-activities命令中添加--include-not-scaled-activities选项。

Linux、macOS 或 Unix

aws application-autoscaling describe-scaling-activities --include-not-scaled-activities \ --service-namespace ecs --scalable-dimension ecs:service:DesiredCount \ --resource-id service/my-cluster/my-service

Windows

aws application-autoscaling describe-scaling-activities --include-not-scaled-activities --service-namespace ecs --scalable-dimension ecs:service:DesiredCount --resource-id service/my-cluster/my-service
注意

如果此命令引发错误,请确保已将 Amazon CLI 本地版本更新到最新版本。

为了确认响应包含未扩展的活动,输出中会显示部分失败的扩展活动的 NotScaledReasons 元素(如果不是全部失败的话)。

{ "ScalingActivities": [ { "ScalableDimension": "ecs:service:DesiredCount", "Description": "Attempting to scale due to alarm triggered", "ResourceId": "service/my-cluster/my-service", "ActivityId": "4d759079-a31f-4d0c-8468-504c56e2eecf", "StartTime": 1664928867.915, "ServiceNamespace": "ecs", "Cause": "monitor alarm web-app-cpu-gt-75 in state ALARM triggered policy web-app-cpu-gt-75", "StatusCode": "Failed", "NotScaledReasons": [ { "Code": "AlreadyAtMaxCapacity", "MaxCapacity": 4 } ] } ] }

有关响应中字段的描述,请参阅ScalingActivity《App lication Auto Scaling API 参考》。

如果返回未扩展的活动,根据 Code 中列出的原因代码,响应中可能会出现 CurrentCapacityMaxCapacityMinCapacity 等属性。

为防止出现大量重复条目,只有第一个未按比例缩放的活动才会记录在扩展活动历史记录中。除非不按比例缩放的原因发生变化,否则任何后续未按比例缩放的活动都不会生成新条目。

了解未扩展的原因代码

以下是未扩展的活动的原因代码。

原因代码 定义
AutoScalingAnticipatedFlapping Auto Scaling 算法决定不采取扩展操作,因为这会导致摆动。摆动是横向缩减和横向扩展的无限循环。也就是说,如果采取扩展操作,则指标值将更改以启动另一个相反方向的扩展操作。
TargetServicePutResourceAsUnscalable 目标服务暂时将资源置于不可扩展状态。如果满足扩展策略中配置的自动扩展条件,Application Auto Scaling 将重试。
AlreadyAtMaxCapacity 扩展被指定的最大容量阻止。如果您希望 Application Auto Scaling 进行横向扩展,则需要增加最大容量。
AlreadyAtMinCapacity 扩展被指定的最小容量阻止。如果您希望 Application Auto Scaling 进行横向缩减,则需要减少最小容量。
AlreadyAtDesiredCapacity Auto Scaling 算法计算得出,修改后的容量符合当前容量。