-Timeout从功能性Neo4j HA集群的一个成员中选择master

时间:2013-07-16 20:45:42

标签: java neo4j high-availability

我在这里设置了neo4j HA,在两台不同的机器上有两个实例,另一台机器上有一台嵌入式运行。

Neo4j版本是2.0.0-M03。

这是我的neo4j.properties:

第一个例子: 192.168.1.187

keep_logical_logs=50M size
online_backup_enabled=true
ha.server_id=1
ha.server=192.168.1.187:6001
online_backup_server=192.168.1.187:6051
ha.cluster_server=192.168.1.187:5001
ha.initial_hosts=192.168.1.187:5001,192.168.1.222:5002
ha.pull_interval=2s

第二个例子: 192.168.1.222

keep_logical_logs=50M size
online_backup_enabled=true
ha.server_id=2
ha.server=192.168.1.222:6002
online_backup_server=192.168.1.222:6052
ha.cluster_server=192.168.1.222:5002
ha.initial_hosts=192.168.1.187:5001,192.168.1.222:5002
ha.pull_interval=2s

在嵌入式( 192.168.1.130 )中我使用这些属性

org.neo4j.server.database.mode=HA
ha.server_id=3
ha.initial_hosts=192.168.1.187:5001,192.168.1.222:5002
ha.server=192.168.1.130:6003
ha.cluster_server=192.168.1.130:5003
ha.pull_interval=2s

现在,我在 192.168.1.187 192.168.1.222 进行./neo4j start,一切正常。群集已启动。

从那里,当我启动我的java项目时,嵌入式neo4j进入集群。当我停下来时,它就会消失。没问题。如果我从嵌入式数据库更改任何内容,则更改将反映在每个成员上。如果我打开 192.168.1.222 的webadmin并从那里进行更改,它也会反映在我的嵌入式数据库中。

但是,如果我在 192.168.1.187 的webadmin上做了什么,它会给我一个超时错误。

TransactionFailureException

Timeout waiting for cluster to elect master

StackTrace:
org.neo4j.kernel.ha.HighlyAvailableGraphDatabase.beginTx(HighlyAvailableGraphDatabase.java:207)
org.neo4j.kernel.TransactionBuilderImpl.begin(TransactionBuilderImpl.java:39)
org.neo4j.kernel.InternalAbstractGraphDatabase.beginTx(InternalAbstractGraphDatabase.java:882)
org.neo4j.cypher.ExecutionEngine.prepare(ExecutionEngine.scala:102)
org.neo4j.cypher.ExecutionEngine.execute(ExecutionEngine.scala:70)
org.neo4j.cypher.ExecutionEngine.execute(ExecutionEngine.scala:85)
org.neo4j.cypher.javacompat.ExecutionEngine.execute(ExecutionEngine.java:80)
org.neo4j.server.rest.web.CypherService.cypher(CypherService.java:95)
java.lang.reflect.Method.invoke(Method.java:601)
org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)

192.168.1.222 的webadmin仍然完美无缺,嵌入式数据库也是如此。我仍然可以对一个进行更改并将其反映在另一个中,但我无法执行任何操作 192.168.1.187

这应该发生吗?我错过了什么吗? ):

更新

我发现地址有些问题。 “postgresdb”将映射到 192.168.1.222 AT 222 ,但 192.168.1.22 187 。我没有在任何地方使用主机名,但不知何故,它与主机名一起使用,导致 187 尝试连接到 192.168.1.22 时出现问题。

为了纠正这个问题,我添加了

192.168.1.187        neodb1
192.168.1.222        neodb2

192.168.1.187/etc/hosts192.168.1.222/etc/hosts并将所有属性更改为指向 neodb1 neodb2 而不是 192.168.1.187 192.168.1.222

但是,我不敢解决最初的问题。

“messages.log”很大,所以我把它们放在pastebin上(和hastebin一起,因为当我粘贴第三个时,pastebin抱怨重负荷),但是它们是:

  

http://pastebin.com/ti4iYZ1V - 187

     

http://pastebin.com/H9JcUybG - 222

     

http://hastebin.com/mefeveqebi.sm - 嵌入式

我可能还应该提到 192.168.1.130 只是一台测试机器,真正的嵌入式数据库(现在正在使用中)也运行在 192.168.1.187 。虽然我认为这不会有任何区别。

1 个答案:

答案 0 :(得分:0)

您是否可以为每个neo4j实例添加可在'data / graph.db / messages.log'找到的日志文件?

我已经看到如果机器在加入群集时错误地宣布其主机名/ IP地址时会发生错误,但乍一看您的配置对我来说是好的,所以看看实际发生的情况会很有趣。

标记