Клиент Gremlin, подключающийся к серверу Gremlin / JanusGraph через балансировщики нагрузки на основе URL

Из-за политик безопасности у меня есть кластер серверов JanusGraph (работающих во внутренней сети Kubernetes), к которым могут получить доступ внешние клиенты Gremlin через следующий сетевой маршрут:

клиенты -> глобальный балансировщик нагрузки (на основе URL) -> сторонний брандмауэр -> внутренний балансировщик нагрузки -> графические серверы

Конечная точка, предоставляемая глобальным балансировщиком нагрузки, выглядит примерно так, например, https://myhost.com/mypath1/mypath2/

Этот подход отлично работает для запросов на основе HTTP(S), поскольку я могу получить ответ от сервера gremlin при запуске curl к указанной выше конечной точке глобального балансировщика нагрузки.

Однако у меня есть 2 других шаблона использования клиента gremlin:

  1. с помощью gremlin.sh консоль
  2. с помощью gremlin-python клиент (или, в более общем смысле, клиенты WebSocket)

Отсюда мои вопросы:

  1. в remote.yaml файл, используемый gremlin.sh клиент, как мне указать конечную точку глобального балансировщика нагрузки в hosts а также port параметры?

    • Я пробовал несколько комбинаций (например, hosts = ['myhost.com'] / ['myhost.com/mypath1/mypath2'], port = 8182/443), но все они не работают
  2. В gremlin-pythonклиент, я использую соединение на основе WebSocket. Как указать строку подключения веб-сокета с указанной выше конечной точкой?

    • Я пробовал различные строки подключения (например, ws(s)://myhost.com/mypath1/mypath2/gremlin) но они тоже не работают

1 ответ

Как в файле remote.yaml, используемом клиентом gremlin.sh, указать глобальную конечную точку балансировщика нагрузки в параметрах хостов и портов?

За hostsвы должны просто указать имя хоста (без пути), а для порта оно должно быть 443, если это порт, который вы указали в балансировщике нагрузки. Конечно, вам также необходимо включить SSL - в качестве примера обратите внимание на настройки, указанные в пакетеremote-secure.yaml файл и просмотрите дополнительные параметры конфигурации в https://tinkerpop.apache.org/docs/current/reference/#_configuration.

Что касается вашего пользовательского пути mypath1/mypath2/gremlin, который в настоящее время не настраивается. Он ожидает, что этот путь будет/gremlin. В ответ я создал TINKERPOP-2379.

В клиенте gremlin-python я использую соединение на основе WebSocket. Как указать строку подключения веб-сокета с указанной выше конечной точкой?

Я ожидал, что это сработает для Python: wss://myhost.com:443/mypath1/mypath2/gremlin