AWS EC2「Launch more like this」操作时出现502 Bad Gateway报错
异常根因定位
自动生成ALB的触发逻辑
使用「EC2 > 操作 > 镜像和模板 > Launch more like this」启动新实例时,控制台引导流程存在多个无强提示的默认勾选项,不需要主动发起创建请求就会触发对应资源生成:
- 流程走到负载均衡配置环节时,默认勾选了「为新实例创建Application Load Balancer」,会随实例启动自动完成ALB、关联安全组、目标组的全量资源创建
- 流程走到Route53关联环节时,默认勾选了「将已存在的生产域名别名指向新创建的ALB」,这就是原有域名解析被悄悄变更的核心原因
502错误的产生路径
当原有生产域名的解析被自动切到新生成的ALB后,ALB会按照默认配置执行后端健康检查:
- 默认健康检查的端口、探测路径和你副本实例上实际运行的Apache、Tomcat服务端口/访问路径不匹配,健康检查会判定后端实例为“不健康”状态
- ALB收到域名请求后,无法从目标组拿到正常响应,就会直接返回502 Bad Gateway,全程流量不会经过原来的生产EC2实例
排查与解决步骤
按优先级依次操作即可快速恢复:
- 最高优先级恢复生产访问
打开Route53控制台,定位生产域名对应的解析记录,直接把记录值改回原有生产EC2绑定的弹性IP、或是原生产环境的正确指向。等待解析生效后,先验证站点可正常访问,再开展后续调试操作。 - 核对ALB的异常配置
找到这台自动创建的ALB,查看其关联的目标组配置:- 确认目标组的健康检查端口、探测路径和副本实例上的服务实际配置一致。比如Apache反向代理Tomcat的场景,健康检查端口要匹配Apache的80/443端口,探测路径要和站点实际可访问的路径匹配,不能沿用默认的/路径(如果站点根路径不存在,就会被判定为不健康)
- 核对两端安全组规则:ALB的安全组需要放行80/443的公网入站流量,副本实例的安全组需要放行来自ALB安全组的对应端口入站流量,避免流量被安全组拦截导致转发失败
- 清理冗余临时资源
确认生产服务完全恢复、且副本调试不需要ALB参与的场景,直接删除这台自动生成的ALB、关联目标组和冗余安全组即可,不会影响原有生产实例的运行。如果后续调试需要用ALB做对比测试,把目标组的健康检查规则、转发规则调整为和生产环境完全一致的配置即可正常使用 - 长期规避提示
后续使用「Launch more like this」功能时,不要全程使用默认配置一路Next完成,每一步都要核对涉及负载均衡、Route53记录变更的勾选项,默认的快速部署配置很容易误操作影响现有生产资源
内容的提问来源于stack exchange,提问作者Sunil Choudhary
相关产品推荐
相关产品推荐

