ELB健康检查未能通过AWS

问题描述

我的ELB运行状况检查始终失败,但无法弄清楚原因(502网关错误)。

我有一个集群(ECS),其服务运行至少一个任务(Fargate),这是一个节点API,正在侦听端口3000和3001(HTTP为3000,HTTPs为3001,因为我无法使用1024以下的端口)。

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

此目标组的目标类型为:ip地址,因为我使用Fargate而不是EC2进行任务。 因此,当任务打开时,我可以正确看到任务的专用IP注册到目标组中。

我的健康路线是server_ip_address / health,它返回经典的200状态代码。该路由之所以有效,是因为我直接从任务的公共ip地址尝试了此操作(由于运行状况检查失败,它很快就停止了),并且返回200。我还通过ELB dns名称(也就是my-elb)进行了尝试。 eu-west-1.elb.amazonaws.com/health),而且效果很好,所以我不明白为什么健康检查失败。

有人知道我错过了吗?

解决方法

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

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

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