【问题标题】:Using AWS ECS Service discovery with Application Load Balancer将 AWS ECS 服务发现与 Application Load Balancer 结合使用
【发布时间】:2020-01-17 14:41:42
【问题描述】:

在 ECS 集群中创建 Fargate 服务时,我使用的是应用程序负载均衡器,并且我还使用了服务发现,因此我的服务有一个端点。我的问题是:我应该将请求发送到服务发现提供的端点还是负载均衡器?

另外,服务发现如何决定它应该将请求发送到哪个任务?

我搜索了 AWS 文档,但找不到这个问题的直接答案。

【问题讨论】:

    标签: amazon-web-services amazon-ecs amazon-elb service-discovery aws-fargate


    【解决方案1】:

    负载均衡器提供了您可以向其发送请求的端点。负载均衡器负责将请求路由到不同任务,您无法真正控制它。

    另一方面,服务发现是一项允许服务通过名称/网址找到彼此的功能。这使得在主服务器可以知道所有服务发现 url 并在微服务之间传递消息的微服务的情况下,内部通信更容易

    【讨论】:

      【解决方案2】:

      服务发现用于网络级通信。 客户端-服务器的负载平衡器,或者换句话说,通过 Internet 通信。

      因此,如果您想从 VPC 外部发送请求,那么您将使用负载均衡器。

      或者

      如果您想在 VPC 中发送请求,那么您可以使用服务发现。

      服务发现如何决定它应该发送到哪个任务 请求?

      所以 Route53 对每个 Fargate 服务都有 IP。

      要了解这两个服务如何协同工作,请看一下此图

      因此,为了更好地进行内部通信,最好使用服务发现来节省时间,因为呼叫在同一网络上。

      为了客户端到服务器的通信更好地使用负载平衡器。

      amazon-ecs-service-discovery

      【讨论】:

      • 在我有微服务A向同一个VPC内的微服务B(运行同一任务的多个副本)发送请求的场景中,我是否需要一个负载均衡器来实现微服务?服务 B ?还是 服务发现 将负载平衡来自 vpc 内的传入请求?
      • 是的,服务发现会处理它。 LB 用于外部流量(经验法则)
      • 错了,负载均衡器既可以是内部的,也可以是外部的。我们甚至可以使用 Fargate 任务 (ENI) 的公共 IP 来引导一个 Fargate 服务上的流量,并使用内部负载均衡器在内部分配给其他微服务,因此它与 Internet 无关。使用 Route53 的服务发现意味着您省略了负载均衡器,并且可以使用 route53“A”记录来手动配置服务负载均衡。这可能是由于任何原因,例如 LB 不提供的某些功能,或者您想要更多控制权。 aws.amazon.com/blogs/compute/task-networking-in-aws-fargate
      • 如果我们谈论负载平衡器,那么它的意思是公共负载平衡器,而不是内部负载平衡器。或者可以使用内部负载平衡器,这是服务发现之前的方法
      • 在架构中,我们明确提到了内部/外部,并且也像 ALB 或 NLB 这样的类型。服务发现和 LB 是完全不同的概念,使用的原因也不同。我没有提到将服务放在公共子目录中,在现代安全架构中,您将使用 API 网关进行公共访问,而在此之后,您需要私有子网中的内部负载均衡器,它可以在服务之间进行负载均衡。请查看有关如何使用 fargate 进行架构设计的官方示例。 aws.amazon.com/getting-started/projects/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 2020-08-03
      • 2017-02-20
      • 2020-12-31
      • 2019-04-19
      • 2021-01-21
      • 1970-01-01
      相关资源
      最近更新 更多