0

我在这里得到了一个 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

现在,我./neo4j start192.168.1.187192.168.1.222做一个,一切正常。集群起来了。

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

但是,如果我在192.168.1.187的网络管理员上做任何事情,它会给我一个超时错误。

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的网络管理员仍然非常好,嵌入式数据库也是如此。我仍然可以对其中一个进行更改并看到它反映在另一个中,但我无法从192.168.1.187做任何事情。

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

更新:

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

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

192.168.1.187        neodb1
192.168.1.222        neodb2

to 192.168.1.187/etc/hostsand 192.168.1.222/etc/hostsand 将所有属性更改为指向neodb1neodb2而不是192.168.1.187192.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上运行。虽然我认为这不会有什么不同。

4

1 回答 1

0

您能否为每个 neo4j 实例附加在“data/graph.db/messages.log”中可以找到的日志文件?

我已经看到如果机器在加入集群时错误地宣布了它的主机名/IP 地址,但你的配置乍一看对我来说还不错,所以看看实际发生了什么会很有趣。

标记

于 2013-07-20T06:39:59.967 回答