Java -选择主机超时-仅从功能正常的Neo4j HA群集的一个成员中选择

Java -选择主机超时-仅从功能正常的Neo4j HA群集的一个成员中选择,java,neo4j,high-availability,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 h

我在这里得到了一个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,一切正常。集群启动了

从那里开始,当我启动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.222AT222,但映射到192.168.1.22AT187。我没有在任何地方使用主机名,但不知何故它与主机名一起使用,这导致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
,并将所有属性更改为指向neodb1neodb2,而不是192.168.1.187192.168.1.222

但是,恐怕这并没有解决最初的问题

“messages.log”很大,所以我把它们放在了pastebin上(还有hastebin,因为pastebin在粘贴第三个时抱怨负载太重),但它们在这里:

-187

-222

-嵌入式


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

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

我已经看到,如果一台机器在加入集群时错误地宣布其主机名/IP地址,则会发生此错误,但我第一眼看到您的配置是正常的,因此很有兴趣了解实际情况


马克

我恐怕这个周末无法访问这些电脑,但本周一我将用日志更新我的答案。抱歉,花了这么长时间。用一些新东西和日志更新了答案。(哦,还有,哈哈,“这个星期一我会更新我的问题**”,没有回答。该死的大脑有错误。)嘿,我看不到你提供的任何messages.log中提到的原始错误消息,除非我完全错过了。你能在这个url上找到网站管理员吗:当然可以更改主机名并粘贴到该页面的内容中?MarkHey,我肯定我尝试了一个随机密码查询,只是为了确保日志中会出现异常。您确定messages.log中会出现此类问题吗?D:还有,有问题的是187的那个。当我转到webadmin上的页面时,它返回了这个消息。我应该为其他独立实例也这样做吗?嘿,对不起,我没有收到任何关于这个的通知,现在你的两个hastebin链接已经过期。你可以在推特@markhneedham上给我打电话,或者在gmail上给m.h.needham发电子邮件,并附上所有日志,我会进一步查看。抱歉耽搁了,马克