将 AWS ECS 服务发现与 Application Load Balancer 结合使用

Using AWS ECS Service discovery with Application Load Balancer

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

此外,服务发现如何决定将请求发送到哪个任务?

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

服务发现用于网络级通信。 用于客户端-服务器或互联网通信的负载平衡器。

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

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

how does the service discovery decides to which task it should send the request to?

因此 Route53 具有针对每个 fargate 服务的 IP。

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

因此,对于内部通信,最好使用服务发现来节省时间,因为调用在同一网络上。

对于客户端到服务器的通信,最好使用 Loadbalancer。

amazon-ecs-service-discovery

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

另一方面,服务发现是一种允许服务通过 names/urls 找到彼此的功能。这使得微服务的内部通信更容易,其中主服务器可以知道所有服务发现 url 并在微服务之间传递消息