You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置ECS蓝绿部署实现仅部署时动态创建新实例?

ECS蓝绿部署:实现「常态单实例+部署临时扩容」的配置方案

你的理解完全正确

你期望的「平时仅运行1个实例,部署阶段临时扩容为2个实例,完成后自动缩容回单实例」是标准蓝绿部署的合理场景,当前问题源于服务配置未匹配该模式的要求。

问题根源

你当前的部署属于容器级蓝绿部署(同一ECS实例同时运行新旧版本容器),核心原因:

  • 实例剩余资源足够容纳两个任务实例
  • 服务未关联Auto Scaling组或部署参数未开启临时扩容规则
  • 任务放置策略未限制单实例的任务数量

具体配置步骤

1. 关联ECS服务与Auto Scaling组

  • 创建或复用现有Auto Scaling组(ASG),设置最小实例数=1、最大实例数=2、期望实例数=1
  • 在ECS服务的容量提供者配置中,将该ASG设为EC2容量提供者,确保ECS可触发ASG的扩容/缩容动作

2. 调整ECS服务部署参数

在ECS服务的部署配置中修改以下参数:

  • minimum healthy percent:设为100%,保证部署期间原有蓝版本实例始终健康可用
  • maximum percent:设为200%,允许部署期间临时扩容到2个实例
  • 添加任务放置约束:限制每个实例仅能运行1个任务(通过memberOf: ["attribute:ecs.instance-id == *"]规则实现)

3. 配置蓝绿部署的终止规则

在CodePipeline的ECS蓝绿部署动作中,开启部署成功后自动终止旧版本(蓝)任务选项,确保旧版本任务会在流量切换完成后被清理。

4. 匹配任务与实例资源

确保单个ECS实例的可用资源仅能容纳一个任务:

  • 任务定义中设置硬内存限制为300MB
  • 选用512MB规格的实例(扣除系统占用后,可用内存应小于600MB,避免ECS在同一实例调度两个任务)

预期部署流程

配置完成后,触发部署的流程会变为:

  1. ECS检测到需部署新版本任务,因单实例无法容纳,触发ASG扩容至2个实例
  2. 新版本任务调度到新实例,目标组B指向该实例
  3. ALB完成流量切换至目标组B
  4. 旧版本任务被终止,ASG自动缩容回1个实例,仅保留运行新版本的实例

内容的提问来源于stack exchange,提问作者Luna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:45:31