1

我已经用 Ha 在 3 台不同的机器上集群了 Neo4j Enterprise Edition (v1.8.2) 的 3 个实例,它们现在运行良好(通过 Ha 前端 url 访问时)。
我想知道如何配置我的 Spring 配置 (applicationContext.xml) 以使用Ha 前端 url,它针对后端中的 3 个 neo4j 服务器实例。
我通过了这个链接。其中描述了以下几行:

<bean id="haDatabase" class="org.neo4j.kernel.HighlyAvailableGraphDatabase" destroy-method="shutdown">
<constructor-arg index="0" value="target/config-test"/>
<constructor-arg index="1">
<map>
<entry key="ha.server_id" value="1"/>
<entry key="ha.server" value="192.168.1.10:6001"/>
<entry key="ha.coordinators" value="192.168.1.10:2181,192.168.1.9:2182,192.168.1.8:2183"/>
</map>
</constructor-arg>
</bean>
<neo4j:config graphDatabaseService="haDatabase"/>

我完全没有得到,我应该如何以及为什么在这里重新配置server_id协调器,我已经为所有 neo4j 服务器配置完成了。

更新#1

应用上述配置后,并保持所有三个实例都使用 Ha 代理运行。我在 Eclipse 中得到以下日志,并在调试我的应用程序时挂在那里......

14:29:13.220 [pool-2-thread-1] DEBUG neo4j - Read HA server:192.168.1.10:6001 (for machineID 1) from zoo keeper
14:29:13.227 [pool-2-thread-1] DEBUG neo4j - Read HA server:192.168.1.8:6003 (for machineID 3) from zoo keeper 14:29:13.232 [pool-2-thread-1] DEBUG neo4j - Read HA server:192.168.1.9:6002 (for machineID 2) from zoo keeper 14:29:13.239 [pool-2-thread-1] DEBUG neo4j - Writing at flush-requested: -6 14:29:13.268 [pool-2-thread-1] DEBUG neo4j - getMaster 3 based on [MachineInfo[ID:1, sequence:29, last tx:97, server:(192.168.1.10, 6001), master for last tx:3], MachineInfo[ID:2, sequence:30, last tx:97, server:(192.168.1.9, 6002), master for last tx:3], MachineInfo[ID:3, sequence:31, last tx:97, server:(192.168.1.8, 6003), master for last tx:3]] 14:29:13.333 [pool-13-thread-1] DEBUG neo4j - org.neo4j.kernel.ha.zookeeper.ZooClient$WatcherImpl@169a0c5, Fri Aug 09 14:29:13 IST 2013 Got event: WatchedEvent state:SyncConnected type:None path:null (path=null)

更新 #2
提出的另一个查询是,我没有在我的 spring 配置中的任何地方使用直接的 Haproxy 前端 url。那么 Haproxy 在我的 spring 应用程序中扮演什么角色?我和我的一位朋友讨论了这个问题,根据他的建议,应该有一些方法来使用 Ha 代理 url。

更新 #3 我也尝试过上述案例,但我觉得它的性能不符合标准(http://192.168.1.46:81是我的 haproxy 前端 url 定位到 3 个 neo4j 服务器实例)。
<bean id="graphDatabaseService" class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
<constructor-arg index="0" value="http://192.168.1.46:81/db/data" />
</bean>

任何线索,我被困在哪里?请帮忙

4

1 回答 1

3

问题已解决,只需在我的 applicationContext.xml 弹簧配置中实施以下更改:
<bean id="graphDatabaseService" class="org.neo4j.kernel.HighlyAvailableGraphDatabase" destroy-method="shutdown">
<constructor-arg index="0" value="/opt/build/mydb/graph.db"/>
<constructor-arg index="1">
<map>
<entry key="ha.server_id" value="1"/>
<entry key="ha.server" value="192.168.1.10:6001"/>
<entry key="ha.coordinators" value="192.168.1.10:2181,192.168.1.9:2182,192.168.1.8:2183"/>
</map>
</constructor-arg>
</bean>
<neo4j:config graphDatabaseService="graphDatabaseService"/>

根据我的理解,我们至少需要提及 graph.db 的主要位置,然后是 ha 配置以及协调器详细信息。
在此感谢迈克尔(链接 1链接 2)。感谢感谢:)

于 2013-08-14T06:22:55.337 回答