Amazon web services ECS Fargate交叉微服务通信选项

Amazon web services ECS Fargate交叉微服务通信选项,amazon-web-services,networking,amazon-ecs,aws-fargate,Amazon Web Services,Networking,Amazon Ecs,Aws Fargate,我一直在研究使用ECS Fargate在自己的服务/任务中连接多个MiscorService的不同方式 通常,如果所有的微服务都是在同一个任务定义中定义的,我们可以只使用带有相应端口的本地ip,但这意味着我们不能扩展单个的微服务。据我所知,当我们将这些服务分为多个服务时,有两种“主要”方式可以实现这种通信: 向每个服务添加负载平衡器,并使用负载平衡器公共ip作为从一个服务到另一个服务的单点访问 我的问题是: a。是否所有需要通信的服务都需要位于同一VPC中并具有 服务的传入规则设置为负载平衡器的

我一直在研究使用ECS Fargate在自己的服务/任务中连接多个MiscorService的不同方式

通常,如果所有的微服务都是在同一个任务定义中定义的,我们可以只使用带有相应端口的本地ip,但这意味着我们不能扩展单个的微服务。据我所知,当我们将这些服务分为多个服务时,有两种“主要”方式可以实现这种通信:

  • 向每个服务添加负载平衡器,并使用负载平衡器公共ip作为从一个服务到另一个服务的单点访问

    我的问题是:

    a。是否所有需要通信的服务都需要位于同一VPC中并具有 服务的传入规则设置为负载平衡器的安全组

    b。假设我们现在已经配置了整个设置,需要在一个微服务代码库中设置一个loadbalancer公共DNS,那么实现这一点的最佳方法是什么,我猜某种terraform脚本“假设”将添加到其中的公共DNS

  • 利用AWS服务发现,这意味着我们可以使用一个简单的构建标识符查询服务到服务

    我的问题是:

    a。我们是否仍然可以将负载平衡器连接到服务并仍然使用服务发现?或 service discovery是否已配置引擎盖下负载平衡器

  • 非常感谢您的帮助

    1.a同一专有网络中的所有服务及其安全组(SGs)

    我假设您讨论的是每个服务都有自己的负载平衡器(LB)的情况。由于LBs是公共的,因此它们可以位于任何专有网络、区域或帐户中

    SG的设置通常使服务的传入规则只允许来自LB的SG的连接

    1.b域名系统

    每项任务都可以有。这是传递DNS值的好方法。如果您正在使用terraform(TF),那么TF将提供LBs,然后创建任务,并使用LBs的DNS值设置env变量。因此,您将知道LBs的DNS,因为它们在您提供服务之前就已经创建了

    2.服务发现(SD)

    SD仅用于服务之间的私人通信。不涉及互联网,所以所有内容都必须在同一个专有网络或对等专有网络中。因此,它基本上是LBs的第一个解决方案

    我认为你应该能够同时使用公共LB和SD


    SD不使用LB。相反,当您通过SD查询服务的DNS时,您将以随机顺序获得任务的私有IP地址。因此,随机顺序近似于服务中任务之间连接的负载平衡。

    回答得很好,非常感谢@没问题。很高兴我能帮忙。