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

部署时如何配置EC2自动扩缩容实现ECS服务无停机更新

配置方案

基础配置(推荐,无需改动现有部署流程)

  • 切换ECS服务为REPLICA模式,调整任务定义的CPU/内存配额为单台EC2实例的可用资源上限,确保单实例仅能运行1个任务。
  • 为ECS集群绑定关联了EC2 ASG的ECS容量提供者,开启托管式扩缩容:
    • 容量提供者的扩容触发逻辑基于待调度PENDING任务的资源缺口,而非现有实例的CPU/内存利用率,部署时新任务因资源不足进入排队状态后会自动触发EC2实例扩容,完全适配你的场景。
    • 开启容量提供者的任务缩容保护,避免部署过程中正在运行任务的实例被提前回收,设置缩容冷却时间≥服务启动+健康检查的总耗时。
  • 调整服务部署策略参数:
    • 设置minimumHealthyPercent = 100,保证部署过程中始终有正常运行的服务副本,无停机时间。
    • 设置maximumPercent = 200,允许部署过程中同时存在新旧两个版本的任务,等新版本任务健康检查通过后再自动终止旧版本任务。
  • 部署完成后,旧任务终止后对应的EC2实例进入空闲状态,容量提供者会在冷却时间到期后自动缩容空闲实例,不会产生长期闲置成本。

自定义控制方案(适配已有CI/CD流程)

如果需要更可控的扩缩容时机,可直接在部署流程中加入主动扩缩容步骤:

  • 部署前执行aws autoscaling set-desired-capacity --auto-scaling-group-name <你的ASG名称> --desired-capacity $((当前ASG期望实例数 + 1)),临时扩容1台EC2实例。
  • 等待实例注册到ECS集群后触发正常的服务部署流程,等待新版本任务全部健康、旧版本任务完全终止。
  • 部署完成后执行aws autoscaling set-desired-capacity --auto-scaling-group-name <你的ASG名称> --desired-capacity <原期望实例数>,回收冗余的EC2实例。

原有逻辑说明

你之前使用的基于CPU/内存利用率的ASG扩缩容是常规的负载感知策略,部署时旧任务仍在运行、实例负载已满,但新任务尚未启动,不会产生利用率变化因此无法触发扩容,属于正常逻辑,并不是你对扩缩容的理解有误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:36:04