AWS Fargate 网络 - 端口 80:连接被拒绝

Posted

技术标签:

【中文标题】AWS Fargate 网络 - 端口 80:连接被拒绝【英文标题】:AWS Fargate networking - port 80: Connection refused 【发布时间】:2019-12-18 03:59:28 【问题描述】:

我正在尝试在 Fargate 中与两个服务通信,当服务 A 使用 Route 53 名称(而不是 IP)调用服务 B 时,它显示 port 80: Connection denied

为了查看发生了什么,我通过 SSH 连接到同一 vpc 中的 EC2 实例,当我使用私有 IP:port 发出请求时一切正常,但在我使用 Route 53 名称时失败。

在我看来,我缺少将 Route 53 名称链接到私有 IP:8080 而不是私有 IP:80 的步骤,或者更有可能是在服务 B 主机内从端口 80 重定向到 8080。

你知道如何解决这个问题吗?

谢谢!

【问题讨论】:

到目前为止,您似乎正在尝试在不通过 Internet 的情况下在 ECS 服务之间进行通信。根据您的解释,您想做与 docker 链接等效的 ECS。那是对的吗?我很确定除非容器在同一个任务中,否则 docker link 路由将不起作用。 ***.com/questions/34517265/… @JaronF 感谢您的链接。那里批准的答案说“ECS 还与 Route 53 自动命名集成,用于使用 A 和 SRV 记录进行基于 DNS 的服务发现。您的服务任务可以自动输入和从 DNS 记录中删除。”我想要这样的东西,因为对我来说,两个服务独立工作并且不需要在同一个主机中,所以在同一个任务中是很重要的。 【参考方案1】:

服务 B 是否在端口:8080 上运行?如果是这样,那么您可能必须在添加服务自动发现时在 dns 记录类型字段中进行设置。将您的记录类型设置为 srv 并在此处仅选择端口或容器和端口。这应该允许您连接到服务 B。

您可以执行此操作的另一种方法是在您的服务中使用负载平衡器。现在您可以使用负载均衡器 DNS 访问服务 B,并可能使用 route53 将负载均衡器 url 映射到您拥有的某个域。由于您可以创建负载均衡器internal,因此它可以完全私有。

【讨论】:

嗨@MasterFowl,谢谢。我已经尝试添加 SRV 记录,然后如果我使用 ,我可以根据需要访问服务 B,但这会使服务 A 知道服务 B 在其中运行的端口 (8080)。我只想使用 . 好像没有办法在路由 53 中配置端口映射。如果你想对容器进行干净的调用(没有端口),为什么不使用负载均衡器.将负载均衡器 URL 映射到您可以创建的域。然后,您可以拥有负载均衡器正在侦听的端口 (80),并使用其他端口 (8080) 与任务通信。另外,如果您在具有多个任务的服务上使用服务发现,您是否知道您的请求会执行哪些任务?

以上是关于AWS Fargate 网络 - 端口 80:连接被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

AWS ECS Fargate 和端口映射

无法使用 Fargate 连接到 AWS 网络负载均衡器

AWS 使用 Fargate 对 ECS 服务的多个端口进行负载平衡

AWS ECS Fargate ALB 错误(请求超时)

如何理解AWS 网络,如何创建一个多层安全网络架构

在 AWS ECS Fargate 中,任务内无法进行容器间连接