Как указать мою связь с neo4j как роль лидера в K8s

Я развернул 3-ядерный (по умолчанию) Neo4j в K8s с помощью этой схемы управления. Я новичок в neo4j.

Я использую neo4jrb в проекте Ruby on Rails.

Когда я пытался подключить сервис neo4j для записи данных. Я часто (не всегда) встречал эту ошибку

Neo4j::Core::CypherSession::CypherError:   Cypher error:
  Neo.ClientError.Cluster.NotALeader: No write operations are allowed directly on this database. Writes must pass through the leader. The role of this server is: FOLLOWER

Я прочитал эту статью " Запрос кластеров Neo4j". Затем я понял, что есть один лидер и два ядра последователей, созданных с помощью диаграммы управления. В шифровальной оболочке, когда я бегу

CALL dbms.cluster.overview() YIELD id, role RETURN id, role

я получил

+-----------------------------------------------------+
| id                                     | role       |
+-----------------------------------------------------+
| "acce2b2c-53ae-498c-a49b-84f42897445e" | "FOLLOWER" |
| "03cabb09-de1a-40cc-b8b0-bb02981cf551" | "FOLLOWER" |
| "1aa96add-f5cd-43a1-9fc6-2a5360668bb7" | "LEADER"   |
+-----------------------------------------------------+

Поэтому я должен подключиться к LEADERкогда я пытаюсь записать данные. И я знаю, что кластер не может бытьleaderпостоянно. Если нынешнийleader не работает, то follower станет новым leader.

Я когда-то думал bolt+routingв причинный кластер может быть простым способом решить мою проблему. Когда я вернулся к клиенту ruby, я обнаружил, что он не поддерживаетbolt+routing на данный момент.

Что мне теперь делать? Я не могу настроить LoadBalancer. У меня есть доступ к написанию конфига для Ingress.

1 ответ

Не уверен, что neo4jrb поддерживает болт + маршрутизацию.

Вы можете попробовать использовать драйвер java из truffleruby graalvm, см.:

https://github.com/michael-simons/neo4j-graalvm-polyglot-examples

Другие вопросы по тегам