我在这里设置了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/hosts
和192.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
我可能还应该提到 192.168.1.130 只是一台测试机器,真正的嵌入式数据库(现在正在使用中)也运行在 192.168.1.187 。虽然我认为这不会有任何区别。
答案 0 :(得分:0)
您是否可以为每个neo4j实例添加可在'data / graph.db / messages.log'找到的日志文件?
我已经看到如果机器在加入群集时错误地宣布其主机名/ IP地址时会发生错误,但乍一看您的配置对我来说是好的,所以看看实际发生的情况会很有趣。
标记