2014-10-07 82 views
0

我使用的弹簧数据Neo4j的框架,我Neo4j的数据库,我已经配置的Neo4j服务器就像以下:春数据Neo4j的多个服务器

<bean id="graphDatabaseService" 
     class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase"> 
     <constructor-arg value="http://localhost:7474/db/data" /> 
    </bean> 

    <neo4j:config graphDatabaseService="graphDatabaseService" /> 

    <neo4j:repositories base-package="sample" /> 

我的问题是如何配置多个Neo4j的服务器在SDN,如Neo4j的数据库支持HA,我们可以有多个从服务器和一个主服务器。

+0

您是否打算将您的Spring应用程序用作Neo4J集群中的服务器? – JohnMark13 2014-10-07 11:59:49

+0

不,我正在谈论我的neo4j数据库的水平缩放,我可以有多个数据库服务器,如何在SDN中配置它们? – 2014-10-07 12:13:00

+1

如果SDN不是群集的一部分,那么它不知道群集,您需要为它提供一个单独的(负载平衡器)端点来定位。我会在回答中更清楚地说明这一点。 – JohnMark13 2014-10-07 12:30:27

回答

2

当使用SpringRestGraphDatabase类时,SDN不允许您配置HA服务器列表以提出请求。这意味着如果你想管理一个服务器集群,那么你需要将它们放在一个入口点后面。通常情况下,你要做的就是设置你的集群,然后在它前面粘贴一个负载平衡器,并让负载平衡器处理读取请求到它想象中的任何主/从节点(这可能只是循环),并将请求写入主节点。有一些文档可以配置HAProxy来实现这个here

一旦运行了集群并且负载均衡器路由请求,您需要修改SDN配置以将负载均衡器作为目标,这意味着将您的负载均衡器的地址替换为http://localhost:7474/db/data

原来的答复 - SDN嵌入式HA服务器

假设你的SDN应用程序将是在集群服务器中的一个,那么你需要创建一个使用一个稍微不同的模式的HighlyAvailableGraphDatabase:

<util:map id="config"> 
    <entry key="ha.server_id" value="1"/> 
    <entry key="ha.initial_hosts" value="yourotherserver1:5001,yourotherserver2:5001"/> 
</util:map> 

<bean id="graphDbFactory" 
     class="org.neo4j.graphdb.factory.HighlyAvailableGraphDatabaseFactory"/> 

<bean id="graphDbBuilder" factory-bean="graphDbFactory" 
     factory-method="newHighlyAvailableDatabaseBuilder"> 
    <constructor-arg value="/path/to/local/filesystem/store"/> 
</bean> 

<bean id="graphDbBuilderFinal" factory-bean="graphDbBuilder" factory-method="setConfig"> 
    <constructor-arg ref="config"/> 
</bean> 

<bean id="graphDatabaseService" factory-bean="graphDbBuilderFinal" 
     factory-method="newGraphDatabase" destroy-method="shutdown" /> 

<neo4j:config graphDatabaseService="graphDatabaseService" 
       base-package="your.graph.package"/> 

这假定您有运行超过1有ha.server_id值等。一旦你的集群运行,那么你可以在新的情况下,降(用于水平缩放)新HA节点,只要是ha.server_id值另两台服务器不同。

关于水平缩放的一个重要提示是,您仍然希望仅通过主设备(您可以写入从设备,但速度较慢)写入数据,这需要在负载均衡器上面朝您的应用程序或者在运行SDN一些定制的代码来延迟从服务器上的写操作。请参阅此question了解SDN的注意事项并了解主/从设置。

设置您的独立HA节点记录在此tutorial中。 关于Neo Site的可用参数(配置图)有很多文档。

+0

如何使用HA代理将所有写请求指向主服务器? – Nayish 2015-07-15 20:22:32