【问题标题】:Load balancing gRPC requests using one of AWS Load Balancers使用 AWS 负载均衡器之一对 gRPC 请求进行负载均衡
【发布时间】:2020-05-26 14:00:34
【问题描述】:

我正在尝试确定是否可以使用 (A/E/N) LB 之一来负载平衡 gRPC 流量。在我们的例子中,一个简单的循环就足够了。

我了解到 ALB 不完全支持 HTTP2,因此不能与 gRPC 一起使用。特别提到了缺乏对向下游发送 HTTP2 流量的支持以及缺乏对尾部标头的支持。还是真的吗?

找不到关于 NLB 或“经典”ELB 的任何明确答案。有什么提示吗?

【问题讨论】:

  • 经典的 ELB 和 NLB 都应该可以工作。最大的决定因素可能是 TLS 终止。
  • ELB 现在支持 HTTP2 了吗?还是仍然是 L4 负载均衡?我对该主题的进一步研究表明,NLB 在连接空闲超时后重置前端连接 [1] 并且您需要保持活动 [1] docs.aws.amazon.com/elasticloadbalancing/latest/network/…

标签: amazon-web-services networking load-balancing grpc amazon-elb


【解决方案1】:

在 AWS 上使用 gRPC 遇到了一些重大挑战。如果 AWS Application Load Balancer 没有完整的 HTTP/2 支持,您必须启动和管理自己的负载均衡器。由于进出同一主机的流量、动态端口映射、SSL 终止复杂性以及 TCP 连接的次优客户端和服务器端轮询等问题,NLB 和 ELB 在 AWS 上都不是可行的替代方案。

gRPC 展示了性能改进,但是,无论是使用 Nginx 还是 Envoy 等 LB,都需要大量的基础设施努力才能采用;或者使用 Istio 之类的东西设置服务网格。另一种可能性是使用胖客户端负载平衡,尽管这也需要额外的服务发现基础设施,例如 Consul 或 ZooKeeper。

AWS 最近宣布了一项名为 AWS App Mesh 的新服务。 AWS App Mesh 支持 HTTP2 和 gRPC 服务

gRPC 现在可以使用 AWS App Mesh 建模和管理其服务间通信。

参考:

【讨论】:

  • 谢谢!这是一个有用的答案。您能否列出具体问题如何影响特定负载均衡器?开始使用网格可能太多了。目前看来,Traeffik 可能是我的最佳选择:jsherz.com/grpc/ecs/aws/docker/containers/load-balancer/elb/nlb/…
  • Traeffik 是一个不错的选择。在第 3 层使用 ELB/ALB,并在其后面放置您自己的 HTTP2 兼容代理(Envoy、nghttpx、Linkerd、Traefik,...)。您可以在此讨论中找到有关 gRPC 和负载均衡器的更多信息 - gist.github.com/bojand/6a604f7e369d7c7d8c39eb77878a42c2
  • 我看过讨论,但我对网络知之甚少,我不确定结论。讨论也有 1-2 年的历史,所以不确定这是否仍然是最新的
  • 结论是,要么使用 Service Mesh(AWS App Mesh、ISTIO、..),要么在 Layer-3 使用 ELB/ALB,并在其后面放置自己的 HTTP2 兼容代理(Envoy、nghttpx、Linkerd , Traefik, ...)
  • 为什么我要同时使用 ELB 和 Traefik?
【解决方案2】:

自 2020 年 10 月 29 日起,Application Load Balancer 现在支持 HTTP/2 和 gRPC 负载平衡。来自the announcement:

要在 ALB 上使用该功能,请选择 HTTPS 作为侦听器协议,选择 gRPC 作为目标组的协议版本,并将实例或 IP 注册为已配置目标组的目标。 ALB 提供了丰富的基于内容的路由功能,可让您检查 gRPC 调用并根据请求的服务和方法将它们路由到适当的目标组。在目标组内,ALB 将使用 gRPC 特定的运行状况检查来确定目标的可用性并提供 gRPC 特定的访问日志来监控您的流量。

在所有 AWS 区域中,现有和新的 Application Load Balancer 都可以免费使用 gRPC 和端到端 HTTP/2 支持。要了解更多信息,请参阅blog post、demo 和 ALB documentation。

【讨论】:

    猜你喜欢
    • 2021-12-07
    • 2017-09-30
    • 1970-01-01
    • 2021-01-10
    • 2017-01-20
    • 2014-12-18
    • 2017-07-29
    • 1970-01-01
    • 2018-04-14
    相关资源
    最近更新 更多