EC2上ECS部署时Capacity Provider无法触发ASG扩容问题
基于EC2的ECS蓝绿部署扩容异常问题
我正在构建基于EC2的ECS服务,目标实现蓝绿部署:每次部署应用新版本时,ECS临时将任务数量翻倍以承载新版本,待新版本任务正常运行后终止旧版本任务,确保用户无停机体验。
按照AWS官方建议,我通过Capacity Provider搭建该架构,CDK代码如下:
const autoscalingGroup = new AutoScalingGroup(this, `${this.id}-autoscaling-group`, { maxCapacity: 2, minCapacity: 1, minHealthyPercentage: 100, maxHealthyPercentage: 200, desiredCapacity: 1, ... }) capacityProvider = new AsgCapacityProvider(this, `${this.id}-capacity-provider`, { autoScalingGroup: autoscalingGroup, enableManagedScaling: true, enableManagedTerminationProtection: true, }) cluster = new Cluster(this, `${this.id}-ecs-cluster`, { ... }) cluster.addAsgCapacityProvider(capacityProvider) new Ec2Service(this, `${this.id}-ec2-service`, { cluster: ecsCluster, ... })
上述代码创建了ECS集群与服务(负责启动应用任务)、ASG(负责启动承载任务的EC2实例),并通过Capacity Provider将两者关联,让集群知晓EC2实例的来源。
首次部署一切正常:ASG启动一台EC2实例,ECS成功在其上调度任务。但后续部署时出现问题:按预期,ECS应触发ASG扩容一台实例以容纳新增任务(我的配置中每个实例仅能承载1个任务),但实际并未触发扩容,ECS因找不到可用实例而无法调度新任务。
内容的提问来源于stack exchange,提问作者Nicola Pedretti
相关产品推荐
相关产品推荐

