ELB health check fail AWS
我的 ELB 健康检查一直失败,但不知道为什么(502 bad gateway)。
我有一个集群 (ECS),其服务至少运行一个任务 (Fargate),这是一个侦听端口 3000 的 Node API
- 您是否检查过健康检查设置?健康检查与路由到的实例流量可能位于不同的端口上。可以分享一下健康检查设置吗
-
@ChrisWilliams 当然,这里是我对目标群体的健康检查设置的屏幕截图:imgur.com/ZMIIk62
-
以下是目标群体的目标:imgur.com/WFVcKca
在目标组中的目标屏幕截图中,它显示端口为 80,这意味着负载均衡器(和健康检查)将尝试连接到端口 80 上的 Fargate 容器。
您提到它应该从端口 3000 提供服务,因此您需要确保目标组正在侦听端口 3000。一旦这到位,假设主机的安全组允许入站访问,502 错误应该会消失。
要明确监听端口是客户端连接的端口,而目标端口是负载均衡器连接到目标的端口。
- 我不确定是否理解。根据文档"默认情况下,负载均衡器使用您在创建目标组时指定的协议和端口号将请求路由到其目标。或者,您可以在注册时覆盖用于将流量路由到目标的端口与目标群体。"这就是我在创建目标组时所做的,我将端口设置为 3000(如您在屏幕上看到的那样)。所以理论上我的负载均衡器应该将流量重定向到端口 3000 上的目标组对吗?
-
嗨,我的意思是,如果您查看屏幕截图:imgur.com/WFVcKca,目标已注册到端口 80。如果您调整到 3000,假设安全组允许,这应该适合您
-
嗨,克里斯,谢谢你的时间!好的,我明白了,问题是我没有决定目标注册的端口。当使用任务的私有 IP 启动新任务时,目标会自动注册。当我在集群中创建新服务时,我可以决定它将使用哪个负载均衡器和哪个目标组,因此我选择了负载均衡器和目标组,但我仍然无法决定端口。也许这就是问题所在?我附上了此步骤的屏幕截图,以便您查看:imgur.com/a/462fr0m
-
我相信这些将是您的 Fargate 任务中的端口映射?您是否映射了 80:80 而不是 3000:3000?
-
而已!我在任务定义中映射了端口 80 和 443 而不是 3000