为了解决这个问题,我们需要做两件事情:
配置延迟自动缩放。
配置伸缩策略。
下面是代码示例:
{
"Instances":{
"InstanceCount":2,
"InstanceGroups":[{
"AutoScalingPolicy":{
"Constraints":{
"MinCapacity":2,
"MaxCapacity":10
},
"Rules":[{
"Name":"CPU",
"Description":"Increase or decrease task nodes as CPU utilization",
"Action":{
"SimpleScalingPolicyConfiguration":{
"AdjustmentType":"CHANGE_IN_CAPACITY",
"ScalingAdjustment":1,
"CoolDown":300
}
},
"Trigger":{
"CloudWatchAlarmDefinition":{
"ComparisonOperator":"GREATER_THAN",
"EvaluationPeriods":5,
"MetricName":"CPUUtilization",
"Namespace":"AWS/EC2",
"Period":300,
"Statistic":"AVERAGE",
"Threshold":70
}
}
}]
}],
"KeepJobFlowAliveWhenNoSteps":true
},
"BootstrapActions":[{
"Name":"Bootstrap via script-runner.jar",
"ScriptBootstrapAction":{
"Path":"s3://aws-scripts-us-east-1/script-runner/script-runner.jar",
"Args":[
"s3://aws-scripts-us-east-1/autoscaling/autoscaling.sh"
]
}
}]
}
上面的示例设置了最小容量2,最大容量10,CPU利用率阈值70%, 连续5个时间段,300秒的冷却期,每次调整一个状态。您可以更改相应的值以满足您的需求。