ECS Auto Scaling

ECS上的auto sccaling分为两种:

  • Service级别的auto scaling - 当负载升高时,扩展task的数量
  • cluster级别auto scaling - 当节点资源耗尽时,扩展ec2的数量

Service Auto Scale

原理:使用 CloudWatch 指标, 通过添加更多Task来扩展Service以应对高峰时段的需求,并通过减少Task数量来缩容服务以在利用率较低期间节省成本。

配置Service Auto Scaling

进入ECS页面,在web services上,点击Update:

image-20231018175327971

选择Use service auto scaling, 配置最小task数量为2,最大为8。ECS service metric选择ALBRequestCountPerTarget

image-20231018180807526

最后点击更新。

进行压力测试

安装Siege压力测试工具,并进行压力测试:

sudo yum -y install siege
siege -c 200 -i [Your ALB DNS name] + '/'

image-20231018185052214

image-20231018185152081

在cloudwatch alarm中,已经自动创建好了两个告警规则:

image-20231018185433130

AlarmHigh中,看到RequestsCountPerTarget会超过1000,从而触发报警及Task扩容:

image-20231018185502069

在Events页面,能看到web service触发了task扩容:

image-20231018185604616

Desired Task数量也被提升:

image-20231018185838938

Cluster auto scale

demo-ecs集群的Capacity Provider里,点击Update:

image-20231019092509307

可以看到默认已经开启Managed scaling,当target capacity大于100%时,触发扩容:

image-20231018190321575

这样ECS 会根据上面的配置创建两个CloudWatch Alarm:

image-20231019092352784


在上面的Seige压力测试过程中,由于一开始只有两台EC2,启动更多task时会遇到资源不足的情况:

image-20231019092951687

在 ASG活动中看到对应的扩容事件:

image-20231019093238813

新的机器启动后,web task被部署到上面,从而达到目标的8个。