У меня встроенная Neo4j v2.2.3 три идентичные настройки сервера, где я пытаюсь превратить одну базу данных в настройку HA. Я попытался начать процесс HA с каждой комбинацией баз данных: все пустые, все-но-один пустые и все используют одну и ту же базу данных, но безрезультатно. AFAIK по какой-то причине экземпляры Neo4j не могут соединяться друг с другом. Я проверил, что IP-адреса верны, и порт 5001 должен быть открытым. Я также открыл 6001 для.Neo4j v2.2.3 Embedded HA: невозможно создать кластер
Вот мои сообщения.log.
2015-06-25 20:37:16.461+0000 INFO [o.n.k.i.DiagnosticsManager]: --- INITIALIZED diagnostics START ---
2015-06-25 20:37:16.462+0000 INFO [o.n.k.i.DiagnosticsManager]: Neo4j Kernel properties:
2015-06-25 20:37:16.467+0000 INFO [o.n.k.i.DiagnosticsManager]: ha.server_id=1
2015-06-25 20:37:16.467+0000 INFO [o.n.k.i.DiagnosticsManager]: ha.server=:6001
2015-06-25 20:37:16.467+0000 INFO [o.n.k.i.DiagnosticsManager]: online_backup_server=0.0.0.0:6362
2015-06-25 20:37:16.467+0000 INFO [o.n.k.i.DiagnosticsManager]: ephemeral=false
2015-06-25 20:37:16.467+0000 INFO [o.n.k.i.DiagnosticsManager]: ha.initial_hosts=[IP1]:5001,[IP2]:5001,[IP3]:5001
2015-06-25 20:37:16.467+0000 INFO [o.n.k.i.DiagnosticsManager]: online_backup_enabled=true
2015-06-25 20:37:16.468+0000 INFO [o.n.k.i.DiagnosticsManager]: ha.cluster_server=:5001
2015-06-25 20:37:16.468+0000 INFO [o.n.k.i.DiagnosticsManager]: store_dir=/var/neo4j
2015-06-25 20:37:16.468+0000 INFO [o.n.k.i.DiagnosticsManager]: org.neo4j.server.webserver.address=0.0.0.0
2015-06-25 20:37:16.468+0000 INFO [o.n.k.i.DiagnosticsManager]: org.neo4j.server.database.mode=HA
2015-06-25 20:37:16.469+0000 INFO [o.n.k.i.DiagnosticsManager]: Diagnostics providers:
2015-06-25 20:37:16.469+0000 INFO [o.n.k.i.DiagnosticsManager]: org.neo4j.kernel.configuration.Config
2015-06-25 20:37:16.469+0000 INFO [o.n.k.i.DiagnosticsManager]: org.neo4j.kernel.info.DiagnosticsManager
2015-06-25 20:37:16.469+0000 INFO [o.n.k.i.DiagnosticsManager]: SYSTEM_MEMORY
2015-06-25 20:37:16.469+0000 INFO [o.n.k.i.DiagnosticsManager]: JAVA_MEMORY
2015-06-25 20:37:16.469+0000 INFO [o.n.k.i.DiagnosticsManager]: OPERATING_SYSTEM
2015-06-25 20:37:16.469+0000 INFO [o.n.k.i.DiagnosticsManager]: JAVA_VIRTUAL_MACHINE
2015-06-25 20:37:16.469+0000 INFO [o.n.k.i.DiagnosticsManager]: CLASSPATH
2015-06-25 20:37:16.469+0000 INFO [o.n.k.i.DiagnosticsManager]: LIBRARY_PATH
2015-06-25 20:37:16.469+0000 INFO [o.n.k.i.DiagnosticsManager]: SYSTEM_PROPERTIES
2015-06-25 20:37:16.469+0000 INFO [o.n.k.i.DiagnosticsManager]: LINUX_SCHEDULERS
2015-06-25 20:37:16.469+0000 INFO [o.n.k.i.DiagnosticsManager]: NETWORK
2015-06-25 20:37:16.469+0000 INFO [o.n.k.i.DiagnosticsManager]: NodeCache
2015-06-25 20:37:16.469+0000 INFO [o.n.k.i.DiagnosticsManager]: RelationshipCache
2015-06-25 20:37:16.469+0000 INFO [o.n.k.i.DiagnosticsManager]: HighAvailabilityDiagnostics
....
2015-06-25 21:55:36.502+0000 INFO [o.n.k.i.DiagnosticsManager]: High Availability diagnostics
Member state:PENDING
State machines:
AtomicBroadcastMessage:start
AcceptorMessage:start
ProposerMessage:start
LearnerMessage:start
HeartbeatMessage:start
ElectionMessage:start
SnapshotMessage:start
ClusterMessage:start
Current timeouts:
В конце концов, после двух минут я получаю исключение сделки:
Caused by: org.neo4j.graphdb.TransactionFailureException: Timeout waiting for database to become available and allow new transactions. Waited 2m. 2 reasons for blocking: Database is stopped, Cluster state is 'PENDING'.
я создаю graphDatabaseFactory = new HighlyAvailableGraphDatabaseFactory()
, который используется для создания
DatabaseServiceImpl(
graphDatabaseFactory
.newEmbeddedDatabaseBuilder(neo4jStoreDir)
.loadPropertiesFromFile(configFileLocation)
.newGraphDatabase())
Это то, что мой neo4j.properties выглядит следующим образом:
online_backup_enabled=true
online_backup_server=0.0.0.0:6362
org.neo4j.server.webserver.address=0.0.0.0
org.neo4j.server.database.mode=HA
ha.server_id=1
ha.cluster_server=0.0.0.0:5001
ha.server=0.0.0.0:6001
ha.initial_hosts=[IP1]:5001,[IP2]:5001,[IP3]:5001
Я пробовал много различных комбинации для свойств, а также добавлено suggested значения от neo4-server.properties, но ничего не помогает. Где я должен поместить neo4j-server.properties во встроенный режим, или они не нужны (это мое первоначальное предположение)?
Что может быть неправильным? Возможно ли даже установить кластер HA с использованием встроенного Neo4j?
EDIT. Я убедился, что каждый сервер находится в одной подсети, и серверы могут подключаться друг к другу без препятствий.
Спасибо! Wrt: «они откроют дополнительные порты», в настоящее время я открываю только порты 5001 и 6001, но могу открыть диапазон портов. Есть ли способ узнать, какие порты Neo4j пытается открыть? – ttiurani
Рекомендуемая настройка - включить любую связь между членами кластера.Быть слишком разборчивым может привести к затруднительным отладкам, если, например, будущая версия Neo4j меняет реализацию в отношении каналов связи. –
Я пытаюсь запустить это на Docker, где в настоящее время невозможно разоблачить каждый порт. Возможно, проблема заключается в настройках ha.server и ha.cluster_server. Я не совсем понимаю, что это такое, или я могу установить их на 0.0.0.0, или я должен использовать что-то еще. У меня есть кластер MongoDB, работающий на тех же машинах успешно, внутри контейнеров, поэтому не должно быть никаких проблем с IP. Кроме того, я не знаю, какие порты выставлять. Я пробовал 5000-7000, но это не сработало. – ttiurani