2 个服务如何在 AWS Fargate 上相互通信?

JLa*_*oie 4 amazon-web-services aws-fargate

我在 AWS 上设置了 Fargate 集群。我的集群有以下服务

  • 服务器-A(端口 3000)
  • 服务器-B(端口 4000)

每个服务都在同一个 VPC 中并且具有相同的安全组(任何端口、任何源、任何目的地)。VPC 与 Internet 隔离。

现在,我希望服务器 A 向服务器 B 发送一个 http 查询。我会假设,就像在 Docker swarm 中一样,有一个私有 DNS 将服务名称映射到其私有 IP,并且就像将查询发送到:http://server-B:4000一样简单。但是,服务器 A 超时,这意味着它无法访问服务器 B。

我在文档中读到我可以将 2 个容器放在同一个服务中,每个容器侦听不同的端口,因此,由于有环回接口,我可以从 server-A 查询http://127.0.0.0.0 。 0.1:4000和服务器 B 将响应,反之亦然。

但是,我希望能够独立扩展 server-A 和 server-B ,因此我认为通过拥有 2 个服务来保持每个服务器彼此独立是有意义的。

我读过,要让 2 个任务相互通信,我需要设置一个负载平衡器。来自 Docker Swarm 的世界,通过服务名称查询服务非常容易,并且在幕后,请求被转发到该服务中的容器之一。但它在 AWS Fargate 上似乎并不像那样工作。

问题:

  • 服务器 A 如何与服务器 B 通话?
  • 由于服务有时会重新部署,他们的私有IP会发生变化,因此通过IP查询是没有意义的,通过主机名查询似乎是最自然的方式
  • 我需要设置任何类型的内部 DNS 吗?

感谢您的帮助,我真的迷失在做这个简单的设置。

JLa*_*oie 5

搜索后发现是因为我在服务创建过程中没有启用“服务发现”,所以没有创建私有DNS。以下是一些额外的文档,它们准确地解释了这些步骤:

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service-discovery.html