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个。