ALB 导致 ECS 出现 504 网关超时错误

ALB results in 504 gateway time out error with ECS

我有一个带有 ECS 服务和 ALB 的 httpd 容器。

带有 ALB 的容器正在使用动态端口功能,这意味着主机端口设置为 0。 如果我尝试在实例容器中使用 ssh 并尝试 curl localhost:port number 它有效。

但是当我尝试使用 ALB DNS 名称时,结果是 504。

ALb 安全组允许来自任何地方的 HTTP 80 连接,实例 sg 允许来自 alb sg 的任何端口上的任何连接。

有意思

当我尝试检查与 alb 关联的目标组时,所有实例都不健康。

更新:- 我试图打开 ecs 容器的安全组 public,但实例不健康

您需要检查 ECS 服务的事件并查看确切的错误消息是什么。如果它指出诸如端口 45675 之类的东西不健康,那么您需要检查您的安全组配置,它应该摆脱 504 错误消息。如果它指出健康检查失败(这应该给出 502),那么您应该通过 ssh 进入容器并检查应用程序在哪个端口 运行 并创建一个修改后的新服务。

假设您已经配置了流量端口的健康检查并且没有修改它。

httpd服务一般工作在80端口,所以我建议使用容器端口为80。

504 是 Gateway Timeout error,如果以上信息没有帮助你可以提供看看 AWS link 这里 - https://aws.amazon.com/premiumsupport/knowledge-center/troubleshoot-http-5xx/

如果您可以分享来自 ecs 事件的错误消息,这将有助于缩小问题范围。

添加我为解决问题所做的更改的屏幕截图,希望对您有所帮助。我假设您使用的是默认的 httpd 图像 -