Как указать мою связь с 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