ECS上的auto sccaling分为两种:
原理:使用 CloudWatch 指标, 通过添加更多Task来扩展Service以应对高峰时段的需求,并通过减少Task数量来缩容服务以在利用率较低期间节省成本。
进入ECS页面,在web services上,点击Update:
选择Use service auto scaling
, 配置最小task数量为2,最大为8。ECS service metric选择ALBRequestCountPerTarget
:
最后点击更新。
安装Siege压力测试工具,并进行压力测试:
sudo yum -y install siege
siege -c 200 -i [Your ALB DNS name] + '/'
在cloudwatch alarm中,已经自动创建好了两个告警规则:
在AlarmHigh
中,看到RequestsCountPerTarget
会超过1000,从而触发报警及Task扩容:
在Events页面,能看到web service触发了task扩容:
Desired Task数量也被提升:
在demo-ecs
集群的Capacity Provider
里,点击Update:
可以看到默认已经开启Managed scaling
,当target capacity大于100%时,触发扩容:
这样ECS 会根据上面的配置创建两个CloudWatch Alarm:
在上面的Seige压力测试过程中,由于一开始只有两台EC2,启动更多task时会遇到资源不足的情况:
在 ASG活动中看到对应的扩容事件:
新的机器启动后,web task被部署到上面,从而达到目标的8个。