0

由于安全策略,我有一个 JanusGraph 服务器集群(在内部 Kubernetes 网络中运行),外部 Gremlin 客户端可以通过以下网络路由访问它们:

客户端 --> 全局负载均衡器(基于 URL) --> 第三方防火墙 --> 内部负载均衡器 --> 图形服务器

全局负载均衡器暴露的端点类似于https://myhost.com/mypath1/mypath2/

curl这种方法适用于基于 HTTP(S) 的请求,因为在向上述全局负载均衡器端点发出命令时,我能够从 gremlin 服务器接收响应。

但是,我还有 2 个其他 gremlin 客户端使用模式:

  1. 使用gremlin.sh控制台
  2. 使用gremlin-python客户端(或更一般地说,WebSocket 客户端)

因此我的问题是:

  1. 在客户端remote.yaml使用的文件中gremlin.sh,如何在hostsport参数中指定全局负载均衡器端点?

    • 我尝试了一些组合(例如hosts= ['myhost.com']/['myhost.com/mypath1/mypath2'], port= 8182/443),但它们都不起作用
  2. gremlin-python客户端,我使用的是基于 WebSocket 的连接。如何使用上述端点指定 websocket 连接字符串?

    • 我尝试了各种连接字符串(例如ws(s)://myhost.com/mypath1/mypath2/gremlin),但它们也不起作用
4

1 回答 1

1

在 gremlin.sh 客户端使用的 remote.yaml 文件中,如何在 hosts 和 port 参数中指定全局负载均衡器端点?

因为hosts您应该只提供主机名(无路径)和端口,它应该只是 443 假设这是您在负载均衡器上公开的端口。当然,您还需要启用 SSL -例如,remote-secure.yaml请注意打包文件中提供的设置,并查看https://tinkerpop.apache.org/docs/current/reference/#_configuration.

至于您的自定义路径mypath1/mypath2/gremlin,目前无法配置。它期望这条路径是/gremlin. 作为回应,我创建了TINKERPOP-2379

在 gremlin-python 客户端中,我使用的是基于 WebSocket 的连接。如何使用上述端点指定 websocket 连接字符串?

我希望这适用于 Python:wss://myhost.com:443/mypath1/mypath2/gremlin

于 2020-06-01T11:54:48.240 回答