AWS ECS ALB 错误(请求超时)

Posted

技术标签:

【中文标题】AWS ECS ALB 错误(请求超时)【英文标题】:AWS ECS ALB Error (Request timed out) 【发布时间】:2018-09-06 17:27:21 【问题描述】:

我正在尝试学习/使用 AWS ECS,但一直在学习

服务已达到稳定状态。

接着是:

由于(原因请求超时),服务(实例 i-05873e2a55ecba2f6)(端口 32768)在目标组中不正常

我不确定您需要哪些信息来提供帮助,但我之前在 EC2 实例中使用过这个负载均衡器,但我正在用通过 ECS 启动的实例替换这些 EC2 实例,现在我遇到了这个错误。

我的集群位于我的默认 VPC 中,并且包含所有 3 个子网(东区)。安全组是我的负载均衡器安全组,它允许端口 40 和 443 上的所有流量。我尝试更改安全组,以便它允许任何端口上的任何人,但这不起作用。

我的任务定义中的主机端口是 0,我的容器端口是 3000,这是我在 Dockerfile 中公开的。

健康检查只是在路径“/”处的目标端口上

【问题讨论】:

什么是实例安全组?端口 32768 是否在实例级别打开? 是的,我试过了 你能从宿主容器连接到应用程序吗? curl <ip>:3000 您能否确认运行状况检查端口是32768 还是运行服务的端口? 302 用于 url 重定向,请参阅我修复***.com/questions/49389510/…的答案 【参考方案1】:

我的问题是一样的。查看ALB的安全组的入站规则,应该是这样的。 All traffic / All / All / "sg-xxxxxxxxxxxx" –.

sg-xxxxxxxxxxxx这应该是您的应用程序负载均衡器的安全组。

【讨论】:

【参考方案2】:

This answer总结了调试此类错误时要验证的点清单:

既然如此,后端没有路由Path /healthcheck 服务 /healthcheck 的状态码不是200 可能是目标端口无效,请正确配置,如果 在端口 8080 或 3000 上运行的应用程序应该是 30008080 安全组不允许目标组上的流量 应用程序未在容器中运行

【讨论】:

如果您使用 Terraform 部署一些受限 SG,请不要忘记添加 self 属性,以便您自己的 SG 上允许该端口(这将是用于 ELB 标记的端口) : registry.terraform.io/providers/hashicorp/aws/latest/docs/…

以上是关于AWS ECS ALB 错误(请求超时)的主要内容,如果未能解决你的问题,请参考以下文章

带有 ALB 的 AWS Elastic Beanstalk:节点 Websocket 超时

AWS Glue 作业失败:调用 o71.getDynamicFrame..SdkClientException 时发生错误:无法执行 HTTP 请求:Connect .s3..connect 超时

AWS Lambda 内部的 Parameter Store 请求超时

如何设置 AWS Appsync 请求超时限制 || AWSAppSync 客户端未提供回调

Netflix Zuul/Ribbon/Eureka 与 AWS ELB/ALB 和 ECS

每个 ECS 服务的 AWS ALB 与微服务架构的每个 ALB 的多个服务