Клиент Gremlin, подключающийся к серверу Gremlin / JanusGraph через балансировщики нагрузки на основе URL
Из-за политик безопасности у меня есть кластер серверов JanusGraph (работающих во внутренней сети Kubernetes), к которым могут получить доступ внешние клиенты Gremlin через следующий сетевой маршрут:
клиенты -> глобальный балансировщик нагрузки (на основе URL) -> сторонний брандмауэр -> внутренний балансировщик нагрузки -> графические серверы
Конечная точка, предоставляемая глобальным балансировщиком нагрузки, выглядит примерно так, например, https://myhost.com/mypath1/mypath2/
Этот подход отлично работает для запросов на основе HTTP(S), поскольку я могу получить ответ от сервера gremlin при запуске curl
к указанной выше конечной точке глобального балансировщика нагрузки.
Однако у меня есть 2 других шаблона использования клиента gremlin:
- с помощью
gremlin.sh
консоль - с помощью
gremlin-python
клиент (или, в более общем смысле, клиенты WebSocket)
Отсюда мои вопросы:
в
remote.yaml
файл, используемыйgremlin.sh
клиент, как мне указать конечную точку глобального балансировщика нагрузки вhosts
а такжеport
параметры?- Я пробовал несколько комбинаций (например,
hosts
= ['myhost.com'] / ['myhost.com/mypath1/mypath2'],port
= 8182/443), но все они не работают
- Я пробовал несколько комбинаций (например,
В
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