ELB 健康检查失败 AWS

ELB health check fail AWS

我的 ELB 健康检查一直失败但无法弄清楚原因(502 错误网关)。

我有一个集群 (ECS),其服务至少运行一个任务 (Fargate),它是一个节点 API 侦听端口 3000 和 3001(3000 用于 http,3001 用于 https,因为我不能使用低于 1024 的端口)。

我有一个 Elastic Load Balancer(应用程序)正在侦听端口 80。它使用协议端口 3000 转发目标组上的流量。

此目标组的目标类型为:ip 地址,因为我使用 fargate 而不是 EC2 来完成我的任务。 所以当一个任务打开时,我正确地看到了注册到目标组的任务的私有IP。

我的健康路线是 server_ip_address/health,它 returns 是经典的 200 状态码。这条路线运作良好,因为我直接从任务的 public ip 地址尝试了它(在它因为健康检查失败而停止之前很快)并且它 returns a 200。我也通过 ELB 尝试过dns 名称(所以我的-elb.eu-west-1.elb.amazonaws.com/health)并且它工作得很好所以我不明白为什么健康检查失败。

有人知道我错过了什么吗?

在目标组中目标的屏幕截图中,端口显示为 80,这意味着负载均衡器(和运行状况检查)将尝试连接到端口 80 上的 Fargate 容器。

您提到它应该从端口 3000 提供服务,因此您需要确保目标组改为侦听端口 3000。一旦到位,假设主机的安全组允许入站访问,502 错误应该消失。

需要明确的是,侦听器端口是客户端连接到的端口,而目标端口是负载均衡器连接到目标的端口。