具有无头服务的 kubernetes 上 gRPC(nodejs)的循环
Round Robin for gRPC (nodejs) on kubernetes with headless service
我有一个 3 nodejs grpc 服务器 pods 和一个用于 grpc 服务的无头 kubernetes 服务(returns 所有 3 个带 dns 的 pod ips 在 pod 内用 getent 主机测试)。然而,所有 grpc 客户端请求总是在单个服务器上结束。
根据 (最后一段)2017 年第一季度,每次调用循环应该是可能的。我正在使用 grpc 1.1.2
我尝试将 {"loadBalancingPolicy": "round-robin"}
作为 new Client(address, credentials, options)
的选项,并使用 dns:///service:port
作为地址。如果我理解 documentation/code 正确,这应该传递给 c-core 并使用新实现的循环通道创建。 (https://github.com/grpc/grpc/blob/master/doc/service_config.md)
循环负载均衡器现在应该是这样工作的吗?它已经与 grpc 1.1.2 一起发布了吗?
在深入研究 Grpc-c 核心代码和 nodejs 适配器后,我发现它可以通过使用选项键 "grpc.lb_policy_name"
来工作。因此,用
构建 gRPC 客户端
new Client(address, credentials, {"grpc.lb_policy_name": "round_robin"})
有效。
请注意,在我最初的问题中,我还使用了 round-robin
而不是正确的 round_robin
我仍然不完全确定如何使用 nodejs 从服务端设置 serviceConfig
而不是使用客户端(通道)选项覆盖。
我有一个 3 nodejs grpc 服务器 pods 和一个用于 grpc 服务的无头 kubernetes 服务(returns 所有 3 个带 dns 的 pod ips 在 pod 内用 getent 主机测试)。然而,所有 grpc 客户端请求总是在单个服务器上结束。
根据
我尝试将 {"loadBalancingPolicy": "round-robin"}
作为 new Client(address, credentials, options)
的选项,并使用 dns:///service:port
作为地址。如果我理解 documentation/code 正确,这应该传递给 c-core 并使用新实现的循环通道创建。 (https://github.com/grpc/grpc/blob/master/doc/service_config.md)
循环负载均衡器现在应该是这样工作的吗?它已经与 grpc 1.1.2 一起发布了吗?
在深入研究 Grpc-c 核心代码和 nodejs 适配器后,我发现它可以通过使用选项键 "grpc.lb_policy_name"
来工作。因此,用
new Client(address, credentials, {"grpc.lb_policy_name": "round_robin"})
有效。
请注意,在我最初的问题中,我还使用了 round-robin
而不是正确的 round_robin
我仍然不完全确定如何使用 nodejs 从服务端设置 serviceConfig
而不是使用客户端(通道)选项覆盖。