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

Apollo GraphQL联邦网关ECS负载均衡健康检查失败求助

ECS网关健康检查失败重启的调试与配置方案

一、先排查网络连通性问题

  • 检查安全组配置:确保负载均衡器的安全组能访问ECS任务的健康检查端口,同时ECS任务的安全组允许来自负载均衡器安全组的入站流量(别用0.0.0.0/0,限定源更稳妥)。
  • 核对VPC路由表:确认ECS任务所在子网和负载均衡器子网之间的路由是通的,没有NAT网关或路由规则限制流量。
  • 容器内直接测试:通过AWS控制台或aws ecs execute-command命令进入容器,先执行curl localhost:端口/健康检查路径确认本地响应正常,再用负载均衡器的内网IP访问任务的健康检查路径,看是否能拿到200响应。

二、验证健康检查的实际响应细节

  • 查负载均衡器访问日志:去CloudWatch里找LB的访问日志,看健康检查请求的具体状态码、响应头和响应体——本地请求和LB请求的环境变量(比如NODE_ENV)可能不一样,导致返回结果不同。
  • 核对环境变量:ECS任务的环境变量和本地可能有差异,比如网关依赖的子图地址、端口配置错误,导致服务启动后健康检查逻辑因为依赖不可达返回非200状态。
  • 简化健康检查逻辑:临时把健康检查接口改成直接返回200 OK,去掉依赖子图的逻辑,看任务能不能通过健康检查,以此排查是不是健康检查逻辑本身的问题。

三、调整健康检查阈值与启动时机

  • 拉长初始延迟时间:Express网关加载子图schema可能需要时间,比本地启动慢,默认的初始延迟(比如5秒)不够,改成30-60秒,给网关足够的启动时间。
  • 调整重试参数:把健康检查间隔改成10秒,重试次数改成3次,避免单次网络波动导致误判。
  • 核对端口映射:确认任务定义里的容器端口和负载均衡器健康检查的端口完全一致,别出现容器用3000、LB检查80这种错误。

四、其他关键排查点

  • 检查目标组协议:确保目标组的协议(HTTP/HTTPS)和网关的监听协议一致,比如网关用HTTP,目标组配成HTTPS肯定会失败。
  • 看任务停止原因:在ECS控制台的任务详情里,明确任务是被LB标记为不健康后终止的,还是自身有其他错误导致重启。
  • 查网关请求日志:除了启动日志,重点看健康检查请求进来时的日志,有没有路由匹配错误、中间件拦截请求这类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:36:34