AWS Beanstalk无数据后自动替换实例排查及禁用方案咨询
根因排查步骤
- 优先查询故障时间段对应EC2自动伸缩组(ASG)的活动历史,ASG会明确记录实例替换的触发原因,比如实例健康检查失败、系统侧硬件故障导致状态检查失败等
- 检索被替换的旧实例ID(i-ANOTHER_ID)的CloudWatch历史指标:
- 检查
t2.micro对应的CPUCreditBalance指标,确认是否出现CPU积分耗尽导致实例被限流,无法上报健康数据的情况 - 检查实例状态检查相关指标
StatusCheckFailed、StatusCheckFailed_Instance、StatusCheckFailed_System,区分是实例内部故障还是AWS基础设施故障
- 检查
- 排查CloudTrail日志,搜索旧实例ID定位终止操作的发起方,确认是EB服务触发的自动终止还是其他非预期操作导致
- 你本次无法获取故障前日志是因为配置中
aws:elasticbeanstalk:cloudwatch:logs下的DeleteOnTerminate参数为true,后续将该参数改为false即可保留已终止实例的历史日志,方便后续问题定位
配置调整方案
关闭EB自动替换实例逻辑
你当前配置中aws:elasticbeanstalk:monitoring下的Automatically Terminate Unhealthy Instances设为了true,将该参数修改为false即可关闭自动终止替换实例的逻辑,后续实例健康异常时EB仅会推送告警通知,不会主动销毁实例。
提示:关闭自动替换后实例故障不会自行恢复,建议配置EB健康状态异常告警,收到通知后及时人工介入处理。
避免实例替换后手动修改CNAME
无需完全禁止实例替换也可解决EIP变更的问题,可选两种方案:
- 提前申请一个固定弹性公网IP(EIP),通过EB的
.ebextensions配置启动脚本,实现新实例启动时自动绑定该固定EIP,无论实例是否替换公网IP始终保持不变 - 直接使用EB环境默认分配的固定域名(格式为
xxx.us-east-2.elasticbeanstalk.com),将你的业务CNAME指向该域名即可,EB会自动维护该域名到实例IP的解析,实例替换后无需手动调整配置
内容的提问来源于stack exchange,提问作者user2402616
相关产品推荐
相关产品推荐

