AWS后端目标组draining返回503 域名无法访问3001端口问题
故障原因及解决方法
1. 目标组健康检查配置错误(最高概率)
- 绝大多数此类404不健康问题是因为目标组默认健康检查路径为
/,但你的后端服务仅在/api路径下提供服务,请求/会直接返回404,被ALB判定为不健康,实例被标记为draining后停止接收流量,就会返回503错误。 - 解决方法:进入EC2控制台的目标组配置页,修改后端目标组的健康检查配置:
- 健康检查路径改为
/api(如果后端有专用健康检查接口如/api/health则更推荐) - 匹配成功状态码设置为
200-299区间 - 健康检查端口选择
流量端口(即3001),协议选择HTTP
- 健康检查路径改为
2. ECS后端任务资源不足
- 你配置的后端任务仅分配128MiB内存、128CPU单元,同时运行Node.js服务和MongoDB两个容器的资源阈值远高于该配置,MongoDB默认启动就需要至少200MiB以上内存,资源不足会导致进程OOM被内核杀死,ECS会自动终止故障任务,实例进入draining阶段。
- 解决方法:修改后端任务定义,将任务内存调整为至少1GiB、CPU单元调整为至少512,重新部署服务验证。
3. 后端ALB监听器配置错误
- 需确认后端ALB的443端口监听器配置符合要求:
- 已绑定覆盖你后端域名的有效SSL证书,证书未过期
- 监听器转发规则已将所有请求(或至少
/api/*前缀的请求)转发到后端3001端口的目标组,未误转发到前端资源 - 监听器的SSL策略配置兼容你请求端的TLS版本
4. 安全组及网络配置校验
- 确认ECS后端任务所在EC2实例的安全组,已允许后端ALB的安全组访问3001端口,仅放开公网访问权限不代表ALB内部流量可正常通行
- 确认你的后端域名已正确解析到后端ALB的公网IP,未误解析到前端ALB地址
内容的提问来源于stack exchange,提问作者Karanveer Singh
相关产品推荐
相关产品推荐

