2种服务如何在AWS Fargate上彼此通信?

时间:2019-07-25 00:35:30

标签: amazon-web-services aws-fargate

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

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

每个服务都在同一VPC中,并且具有相同的安全组(任何端口,任何源,任何目标)。 VPC与互联网隔离。

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

我已经阅读了文档,可以将2个容器放在同一服务中,每个容器都在不同的端口上侦听,因此,由于具有环回接口,服务器A可以查询{{3 }}和服务器B将会响应,反之亦然。

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

我已经读到,要让2个任务互相交谈,我需要设置一个负载均衡器。来自Docker Swarm的世界,通过服务名称查询服务非常容易,并且在后台,请求被转发到该服务中的一个容器。但这在AWS Fargate上似乎不起作用。

问题:

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

感谢您的帮助,我真的迷失了这种简单的设置。

1 个答案:

答案 0 :(得分:0)

搜索后,我发现这是由于在创建服务期间未启用“服务发现”,因此未创建私有DNS。这是一些其他文档,它们确切地解释了步骤:

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