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

实现即将终止的EC2 Spot Instance自动替换为新实例

自动替换EC2 Spot实例的可行方案

以下是几种成熟的自动替换Spot实例的方案,均为AWS原生或可自定义实现的实用方案:

1. EC2 Auto Scaling组(推荐原生方案)

  • 创建Auto Scaling组时启用混合实例策略,配置Spot实例的占比,同时关联预先定义的Launch Template/Launch Configuration
  • Auto Scaling组会自动监听Spot实例的终止通知,一旦检测到实例即将被回收,会立即启动新的Spot实例补充容量
  • 可配置终止钩子,让旧实例在被终止前完成优雅关闭(比如停止服务、处理完当前请求)
  • 配合负载均衡器使用时,Auto Scaling会自动将新实例注册到LB,待旧实例注销完成后再终止,保证服务不中断

2. Spot Fleet

  • Spot Fleet是专门管理Spot实例的服务,可设定目标实例数量、可选实例类型和可用区范围
  • 当某个Spot实例收到终止通知时,Fleet会自动启动新的实例维持目标容量,无需手动配置监听逻辑
  • 支持多实例类型和多可用区配置,能提高Spot实例的获取成功率,降低因单一实例类型售罄导致的服务中断风险

3. 自定义Lambda+EventBridge方案(适合个性化需求)

  • 通过EventBridge捕获EC2发送的EC2 Spot Instance Termination Notice事件
  • 编写Lambda函数实现以下核心逻辑:
    • 验证事件中的实例确实是因Spot回收即将终止
    • 调用EC2 API启动新的Spot实例(使用预先定义的Launch Template)
    • 将新实例注册到负载均衡器,等待健康检查通过
    • 触发旧实例的优雅关闭脚本,完成后注销旧实例
  • 需为Lambda配置对应的IAM权限(EC2实例操作、负载均衡器操作等)

关键注意事项

  • 确保应用是无状态的,或状态存储在共享服务(如S3、RDS、ElastiCache)中,避免实例替换时数据丢失
  • 在实例上部署监听脚本,通过元数据服务http://169.254.169.254/latest/meta-data/spot/termination-time检测终止通知,提前执行优雅关闭
  • 定期测试终止场景,验证自动替换流程是否正常,比如通过AWS CLI手动模拟终止通知

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:25:33