Как указать мое подключение к neo4j в качестве лидера в K8s - PullRequest
0 голосов
/ 26 апреля 2020

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

Я использую neo4jrb в Ruby проекте 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 . Затем я понял, что один график лидера и два последователя созданы с помощью графика руля. В cypher-shell, когда я запускаю

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.

...