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-dimensionecs:service:DesiredCount
--resource-idservice/default/web-app
Windows
aws application-autoscaling describe-scaling-activities --service-namespace
ecs
--scalable-dimensionecs:service:DesiredCount
--resource-idservice/default/web-app
在以下示例响应中,StatusCode
包含活动的当前状态,StatusMessage
包含有关扩展活动状态的信息。
{ "ScalingActivities": [ { "ScalableDimension": "ecs:service:DesiredCount", "Description": "Setting desired count to 1.", "ResourceId": "service/default/web-app", "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" } ] }
有关响应中字段的描述,请参阅 Application Auto Scaling API Reference(《Application Auto Scaling API 参考》)中的 ScalingActivity。
以下状态代码指示引发扩展活动的扩展事件何时达到完成状态:
-
Successful
– 扩展已成功完成 -
Overridden
– 所需容量已由较新的扩展事件进行更新 -
Unfulfilled
– 扩展超时或目标服务无法满足请求 -
Failed
– 扩展失败,出现异常
扩展活动的状态也可能为 Pending
或 InProgress
。在目标服务响应之前,所有扩展活动都具有 Pending
状态。目标响应后,扩展活动的状态更改为 InProgress
。
包括未扩展的活动
默认情况下,扩展活动不反映 Application Auto Scaling 决定是否不扩展的时间。
例如,假设 Amazon ECS 服务超出给定指标的最大阈值,但任务数已达到允许的最大任务数。在这种情况下,Application Auto Scaling 不会横向扩展所需的任务数。
要在响应中包含没有进行扩展的活动(未扩展的活动),请将 --include-not-scaled-activities
选项添加到 describe-scaling-activities 命令。
Linux、macOS 或 Unix
aws application-autoscaling describe-scaling-activities --include-not-scaled-activities \ --service-namespace
ecs
--scalable-dimensionecs:service:DesiredCount
\ --resource-idservice/default/web-app
Windows
aws application-autoscaling describe-scaling-activities --include-not-scaled-activities --service-namespace
ecs
--scalable-dimensionecs:service:DesiredCount
--resource-idservice/default/web-app
如果此命令引发错误,请确保您已在本地将 Amazon CLI 更新到最新版本。
为了确认响应包含未扩展的活动,输出中会显示部分失败的扩展活动的 NotScaledReasons
元素(如果不是全部失败的话)。
{ "ScalingActivities": [ { "ScalableDimension": "ecs:service:DesiredCount", "Description": "Attempting to scale due to alarm triggered", "ResourceId": "service/default/web-app", "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 } ] } ] }
有关响应中字段的描述,请参阅 Application Auto Scaling API Reference(《Application Auto Scaling API 参考》)中的 ScalingActivity。
如果返回未扩展的活动,根据 Code
中列出的原因代码,响应中可能会出现 CurrentCapacity
、MaxCapacity
和 MinCapacity
等属性。
了解未扩展的原因代码
以下是未扩展的活动的原因代码。
原因代码 | 定义 |
---|---|
AutoScalingAnticipatedFlapping | Auto Scaling 算法决定不采取扩展操作,因为这会导致摆动。摆动是横向缩减和横向扩展的无限循环。也就是说,如果采取扩展操作,则指标值将更改以启动另一个相反方向的扩展操作。 |
TargetServicePutResourceAsUnscalable | 目标服务暂时将资源置于不可扩展状态。如果满足扩展策略中配置的自动扩展条件,Application Auto Scaling 将重试。 |
AlreadyAtMaxCapacity | 扩展被指定的最大容量阻止。如果您希望 Application Auto Scaling 进行横向扩展,则需要增加最大容量。 |
AlreadyAtMinCapacity | 扩展被指定的最小容量阻止。如果您希望 Application Auto Scaling 进行横向缩减,则需要减少最小容量。 |
AlreadyAtDesiredCapacity | Auto Scaling 算法计算得出,修改后的容量符合当前容量。 |