gpt4 book ai didi

java - 使用 gRPC 连接到基于 HostSNI 的 Traefik 中的服务

转载 作者:行者123 更新时间:2023-12-02 08:45:24 34 4
gpt4 key购买 nike

我想在 Traefik 中有 1 个入口点,然后有两个基于 HostSNI 进行路由的不同路由器。我真的不知道如何基于 HostSNI 访问这些不同的服务

我的入口点是:5160

两个不同的路由器连接到两个不同的服务。
一个具有规则 HostSNI('service-1.local'),另一个具有规则 HostSNI('service-2.local')

如何使用 Java 中的 gRPC 连接到这些服务?

到目前为止我的客户:

public class GrpcClient {
public GrpcClient(String host, int port) {
this(ManagedChannelBuilder.forAddress(host, port).usePlaintext());
}

public GrpcClient(ManagedChannelBuilder<?> channelBuilder) {
channel = channelBuilder.build();
blockingStub = ServiceGPRC.newBlockingStub(channel);
asyncStub = ServiceGRPC.newStub(channel);
}
public void shutdown() throws InterruptedException {
channel.shutdown().awaitTermination(5, TimeUnit.SECONDS);
}
}

最佳答案

SNI 是 TLS 扩展,因此需要使用 TLS。另请参阅https://docs.traefik.io/routing/routers/#rule_1 .

在 GrpcClient 中,您不能使用纯文本,而必须使用 TLS channel 。请参阅示例 https://github.com/grpc/grpc-java/tree/master/examples/example-tls 。 SNI 是根据您可以使用 ManagedChannelBuilder#overrideAuthority 覆盖的权限设置的。

关于java - 使用 gRPC 连接到基于 HostSNI 的 Traefik 中的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61117674/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com