如何连接到 so_reuseport 下的特定 grpc 服务器进程

how to connect to specific grpc server process under so_reuseport

我有多个 GRPC 服务器,都使用 GRPC linux so_reuseport 选项绑定到 相同端口

这很好用,但对于健康检查,我想在所有服务器上进行迭代,一台一台地识别不健康的服务器。

因为它们都有相同的ip和端口,所以我无法控制它会连接到谁。

有什么解决方法吗?

目前这是不可能的,即使端口共享服务器之间的分配是由内核控制的。负载平衡是内核级的。 gRPC 无法控制哪个请求登陆哪个服务器。

解决这个问题的一种常见方法是打开健康检查的侧端口。或者您可以更改为使用其他负载平衡(参见 doc)技术。

PS。在gRPC health checking中,您可以为每个服务指定不同名称的健康状态。