【发布时间】:2015-06-25 22:03:02
【问题描述】:
我有一个嵌入式 Neo4j v2.2.3 三个相同的服务器设置,我试图将单个数据库转换为 HA 设置。我已经尝试使用每种数据库组合开始 HA 过程:全部为空,全部为空,并且全部使用相同的数据库,但无济于事。 AFAIK 出于某种原因,Neo4j 实例无法相互连接。我已经验证了IP地址是正确的,并且5001端口应该是开放的。我也开了6001。
这是我的messages.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
我尝试了很多不同的属性组合,还添加了来自 neo4-server.properties 的 suggested 值,但没有任何帮助。我应该在哪里将 neo4j-server.properties 置于嵌入式模式,还是不需要它们(这是我最初的猜测)?
可能出了什么问题?甚至可以使用嵌入式 Neo4j 设置 HA 集群吗?
编辑。我确保每台服务器都在同一个子网中,并且服务器可以无障碍地相互连接。
【问题讨论】: