use*_*707 10 kubernetes google-kubernetes-engine grpc grpc-java
我已经阅读了https://github.com/grpc/grpc/blob/master/doc/load-balancing.md上的负载平衡页面,但仍然对后端GRPC之间正确的负载均衡方法感到困惑实例.我们正在部署多个gRPC"微服务"实例,并希望我们的其他gRPC客户端能够在它们之间进行路由.我们将这些作为pods部署在kubernetes(实际上是Google Container Engine)中.
任何人都可以解释在gRPC服务器之间加载平衡gRPC客户端请求的"推荐"方法吗?似乎客户需要了解端点 - 是否不可能利用Container Engine中的内置LoadBalancer来提供帮助?
Dav*_*tas 11
我不能谈论kubernetes,但是关于gRPC负载平衡,基本上有两种方法:
grpc::ChannelArguments::SetLoadBalancingPolicyName"round_robin"作为参数(将来也可以通过" 服务配置 " 进行选择,但是如何在DNS记录中对该配置进行编码的设计尚未最终确定).如果您有任何疑问,请告诉我.
对于 grpc 服务器之间的负载平衡,kubernates 默认负载平衡无济于事,因为它是 L4 负载平衡器。您将需要 L7 负载平衡器。
为什么是L7?
grpc 使用 http2,其中连接是持久的,请求将通过同一连接发送。L4 负载平衡器将使用 tcp 连接进行负载平衡,但您需要在请求级别进行负载平衡,因此我们需要 L7 负载平衡器。尤其是在 grpc 服务器之间进行通信时。
有几个选项,您可以Linkered/Envoy为此使用它们,它们与 kubernates 配合良好,并且还提供良好的服务网格。
要将您的服务暴露给外部工作,您可以使用 nghttpx 和 nghttpx Ingress 控制器。
您也可以使用客户端负载平衡,但我认为这没有什么好处。
您可能想查看nghttpx和nghttpx Ingress 控制器项目。这些项目使得对 HTTP/2 流执行 L7 负载平衡成为可能。
另请参阅https://cloud.google.com/endpoints/docs/architecture-overview,了解有关 Google Cloud Platform 中捆绑的端点管理的一些信息。
| 归档时间: |
|
| 查看次数: |
8127 次 |
| 最近记录: |