如何将我与neo4j的连接指定为K8s中的领导者角色



我通过这个舵图在K8s中部署了一个3核(默认情况下(Neo4j。我是neo4j的新手。

我在RubyonRails项目中使用neo4jrb。

当我尝试连接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编写配置。

我不确定neo4jrb是否支持螺栓+布线。

您可以尝试使用graalvm的trufflerruby中的java驱动程序,请参阅:

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

最新更新