本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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/my-cluster/my-service
Windows
aws application-autoscaling describe-scaling-activities --service-namespace
ecs
--scalable-dimensionecs:service:DesiredCount
--resource-idservice/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
– 扩展失败,出现异常
注意
扩展活动的状态也可能为 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/my-cluster/my-service
Windows
aws application-autoscaling describe-scaling-activities --include-not-scaled-activities --service-namespace
ecs
--scalable-dimensionecs:service:DesiredCount
--resource-idservice/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
中列出的原因代码,响应中可能会出现 CurrentCapacity
、MaxCapacity
和 MinCapacity
等属性。
为防止出现大量重复条目,只有第一个未按比例缩放的活动才会记录在扩展活动历史记录中。除非不缩放的原因发生变化,否则任何后续未按比例缩放的活动都不会生成新条目。
原因代码
以下是未扩展的活动的原因代码。
原因代码 | 定义 |
---|---|
AutoScalingAnticipatedFlapping | Auto Scaling 算法决定不采取扩展操作,因为这会导致摆动。摆动是横向缩减和横向扩展的无限循环。也就是说,如果采取扩展操作,则指标值将更改以启动另一个相反方向的扩展操作。 |
TargetServicePutResourceAsUnscalable | 目标服务暂时将资源置于不可扩展状态。如果满足扩展策略中配置的自动扩展条件,Application Auto Scaling 将重试。 |
AlreadyAtMaxCapacity | 扩展被指定的最大容量阻止。如果您希望 Application Auto Scaling 进行横向扩展,则需要增加最大容量。 |
AlreadyAtMinCapacity | 扩展被指定的最小容量阻止。如果您希望 Application Auto Scaling 进行横向缩减,则需要减少最小容量。 |
AlreadyAtDesiredCapacity | Auto Scaling 算法计算得出,修改后的容量符合当前容量。 |