问题描述:
当使用CloudFormation和AWS ECS Fargate自动部署和自动缩放时,有时候会遇到CloudWatch数据不足的问题,进而导致自动缩放无法工作。这是由于在启用Fargate任务和集群时,您可能没有配置正确的CloudWatch指标,包括CPU,内存等。
确保您使用了正确的IAM 角色(ecsAutoscaleRole) 来启用自动缩放功能。
在CloudFormation中对 ECS Service 进行设置。
以CPU为例,以下是设置CPU自动扩展的CloudFormation代码:
"EcsAutoScalingPolicy": {
"Type": "AWS::ApplicationAutoScaling::ScalingPolicy",
"Properties": {
"PolicyName": "ScaleBasedOnCPU",
"PolicyType": "TargetTrackingScaling",
"ScalingTargetId": {
"Ref": "EcsServiceScalingTarget"
},
"TargetTrackingScalingPolicyConfiguration": {
"TargetValue": 50,
"PredefinedMetricSpecification": {
"PredefinedMetricType": "ECSServiceAverageCPUUtilization"
},
"ScaleOutCooldown": 60,
"ScaleInCooldown": 60
}
}
}
其中,“PredefinedMetricType”指定了使用哪种指标来自动扩展。
例如,如果您的Task Definition实例只使用了128 MB的内存,而CloudWatch默认最小内存使用量为512 MB,则可能导致CloudWatch指标不可用,并可能导致自动缩放无法启动,因为它无法检测到容器的资源使用情况。
如果您的CloudWatch指标未足够可用,则可能是因为您的任务定义或其他配置不正确。您可以通过执行以下步骤来解决此问题:
a. 登录AWS控制台,并进入ECS集群。
b. 选择集群,然后选择任务执行列表。
c. 在任务列表中,选择任务名称以显示任务运行的详细信息。
d. 在“监控”选项卡下,检查指标是否足够可用