【发布时间】:2020-04-28 22:18:55
【问题描述】:
我创建了一个 ECS 服务来部署一个 spring-boot 应用程序。我已通过在 aws ecs 控制台中为此服务创建容器时指定负载均衡器名称将目标组添加到网络负载均衡器。
现在,当我检查该目标群体的健康状况时,它会不断地使用不同的 IP 地址进行注册和注销。我还检查了安全组,它允许所有端口和 IP。
任何人都可以在这里帮助解决目标群体未达到“健康”状态的问题。
请查看附件 ECS 服务、健康检查状态和使用的安全组的截图。
【问题讨论】:
-
请在您的问题中包含目标群体的健康检查设置
-
@priyadhingra19 了解主机端口和容器端口之间的区别。看起来您正在尝试根据目标组设置将流量转发到 80 端口上的容器,但您的任务定义为主机((查看注册的目标及其端口)和容器(查看容器端口)带来 10001 上的容器服务负载均衡)。您有 2 个选项。1)更新/创建目标组以在 10001 而不是 80 上转发流量。或 2)更新任务定义以将容器端口带到 80 而不是 10001。
-
@priyadhingra19 我不担心默认目标组(80),它在这里无关紧要,你可以删除它,只要你用 10001 端口访问 NLB(例如:
http://nlbhostname:10001/)。你的弹簧靴是什么端口?转到VoiceX:1任务定义并提供Port Mapping详细信息?Host <--> Container映射。您的目标组 (ecs-VoiceX-VoiceX-service) 端口应与 Spring Boot 应用程序容器端口匹配。 -
@priyadhingra19 awsvpc 模式将容器带到与容器端口相同端口的主机上。好的。执行我最初给出的选项之一。重新创建目标组
ecs-VoiceX-VoiceX-service,端口为 10001 而不是 80 并附加回服务(您可能需要再次重新创建服务!!)。 -
@priyadhingra19 太棒了!!我将添加我的观察结果作为答案。如果你没问题,那么你可以接受并投票!!
标签: amazon-web-services spring-boot amazon-ecs aws-load-balancer nlb