目标组因 503 错误而耗尽并且无法通过 AWS 中的域名访问端口 3001

Traget Group draining with 503 error and Unable to access port 3001 through domain name in AWS

我是 AWS 的新手,我试图使用 ECS 和 Docker 在 EC2 上托管完整的 MERN 应用程序。在我的项目中,我有单独的前端和后端模块。在 ECS 中,我创建了 2 个任务 (EC2),前端和后端各 1 个。在前端,我添加了一个容器,它有端口映射到 80 to 80 的主机映射。另外,添加了一些环境变量。对于后端,我添加了 2 个带有端口映射的容器以托管 3001 to 300127017 to 27017 的映射。我还添加了链接和主机名。 我为前端任务和后端任务分配了 512 任务内存 (MiB) 和 512 CPU 单元,这些值为 128 MiB 和 128 单元。 然后,我创建了 2 个负载均衡器和 2 个目标组,前端 LB 在端口 80 和 443 上有一个监听器,后端 LB 在 3001 和 443 上有一个监听器。 前端的目标群体 protocol:port 为 http:80,而后端的目标群体为 http:3001。 我还创建了 2 条单独的路线并链接到 2 LB 中的每一条。然后我用各自的任务和 LB 创建了 2 个服务。我现在遇到的问题是后端服务。前端工作正常。我可以通过 public IP 和域名(Route 53)访问,但后端只能使用 public IP。所以,基本上,http://x.x.x.x:3001/api works, but https://domain.name/api 不起作用。它显示 503 Temporary Service unavailable.

我确实尝试找到问题所在,目标组(后端)正尝试在端口 3001 上注册实例,但它一直失败。同样令人惊讶的是,当目标注册开始并处于 initial 阶段时,域名也有效,但是,然后它进入 unhealthy(Failed due to 404) 阶段,然后域显示 502 bad gateway 错误。然后,目标开始 draining,之后显示 503 Temporary Service unavailable。 安全组的80、3001、22、443端口我也都打开了

有人知道为什么会这样吗?这可能吗?我需要 post 更多详细信息吗?

谢谢!!!

好的,所以,我能够解决这个问题。做了一些挖掘后发现,每个人都在谈论 Target Group 的健康检查 urls,所以,我将健康检查 url 从 / 更改为 /backendhealth。然后,在 Advanced Health Settings 中,我还将端口设置从 Traffic Port 更改为 Override80 端口,它成功地在端口 3001 上注册了相应集群的 EC2 实例。 松了一口气!!!