2014-10-07 3 views
0

Я использую Spring Framework Neo4j данных для моей базы данных Neo4j, я настроен Neo4j сервер, как следующее:Spring данные 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

+0

нет, я говорю о горизонтальном масштабировании моей базы данных neo4j, где я могу иметь несколько серверов баз данных, как их настроить в SDN ?? –

+1

Если SDN не является частью кластера, то он не знает о кластере, и вам нужно дать ему отдельную конечную точку балансировки нагрузки для цели. Я сделаю эту часть более ясной в своем ответе. – JohnMark13

ответ

2

SDN не позволяет вам настроить список серверов HA для запросов, используя класс SpringRestGraphDatabase. Это означает, что если вы хотите управлять кластером серверов, вам необходимо вывести их за одну точку входа. Обычно то, что вы делаете, - это настроить свой кластер, а затем привязать к нему балансировщик нагрузки и позволить балансировщику нагрузки обрабатывать запросы на чтение маршрутов в зависимости от того, какой узел хозяин/ведомый он представляет (это может быть просто круговой режим) и писать запросы на главный узел. Существует несколько документов для настройки 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"/> 

Это предполагает, что у вас есть два других серверов, работающих Neo HA узлов, которые имеют ha.server_id значения, кроме 1. После того, как кластер работает, то вы можете оставить в новых случаях (для горизонтального масштабирования) до тех пор, как это значение ha.server_idотличается.

Важным примечанием о горизонтальном масштабировании является то, что вы все еще хотите нажимать на запись только с помощью ведущего устройства (вы можете писать на подчиненные устройства, но оно медленнее), что требует какой-либо умной конфигурации на балансировщике нагрузки, выходящей из вашего приложения или, когда запустив SDN на определенный код, чтобы отложить запись на ведомых устройствах. См. Это question для примечания к SDN и понимания настройки ведущего/ведомого.

Настройка автономных узлов HA задокументирована в этом tutorial. Существует много документации по доступным параметрам (для конфигурации карты) на Neo Site.

+0

Как вы можете использовать прокси HA для направления всех запросов на запись в мастер? – Nayish

Смежные вопросы