0

単一のマスター インスタンスと組み込みの HA インスタンスを備えた非常にシンプルな Neo4j HA セットアップがあり、これをバッチ データ ロードに使用したいと考えています。マスター インスタンスの構成は次のとおりです (Windows サービスとして "通常" 起動するもの)。

node_auto_indexing=true
node_keys_indexable=key,entity,annotation
relationship_auto_indexing=true
relationship_keys_indexable=key, weight, label
keep_logical_logs=true
online_backup_enabled=true

ha.server_id=1
ha.initial_hosts=:5001
ha.server=0.0.0.0:6001
ha.cluster_server=:5001
ha.pull_interval=10
ha.tx_push_factor=0
ha.tx_push_strategy=fixed

cypher_parser_version=2.0
remote_shell_enabled=true
remote_shell_port=1377

org.neo4j.server.database.mode=HA

組み込みのものをオンデマンドで開始および停止できるようにしたい。Javaアプリケーションにロードする構成は次のとおりです。

node_auto_indexing=true
node_keys_indexable=key,annotation
relationship_auto_indexing=true
relationship_keys_indexable=key, weight, label
keep_logical_logs=true

org.neo4j.server.database.mode=HA
ha.server_id=2
ha.slave_only=true

ha.initial_hosts=:5001
ha.server=:6002
ha.cluster_server=:5002

ha.pull_interval=10
cypher_parser_version=2.0

アイデアは、最初の (Windows サービス) インスタンスを単一/スタンドアロン ノードとして起動し、必要に応じてバッチ ローダーを起動できるようにすることです。

問題

Windows サービスを正常に起動し、通常どおりクエリを実行できます。アプリケーションを起動すると、問題なく接続され、スレーブ ノードの役割を果たします。問題なくデータをロードでき、マスター ノードは同期しているようで、正常に動作しています。現在、Java アプリケーションが何らかの理由でクラッシュするか終了してシャットダウンした場合、マスター インスタンスは動作を停止し、Cypher クエリに対して次のトレースを返します。

TransactionFailureException
Timeout waiting for cluster to elect master
StackTrace:
org.neo4j.kernel.ha.HighlyAvailableGraphDatabase.beginTx(HighlyAvailableGraphDatabase.java:207)
org.neo4j.kernel.TransactionBuilderImpl.begin(TransactionBuilderImpl.java:39)
org.neo4j.kernel.InternalAbstractGraphDatabase.beginTx(InternalAbstractGraphDatabase.java:882)
org.neo4j.cypher.ExecutionEngine.prepare(ExecutionEngine.scala:102)
org.neo4j.cypher.ExecutionEngine.execute(ExecutionEngine.scala:70)
org.neo4j.cypher.ExecutionEngine.execute(ExecutionEngine.scala:85)
org.neo4j.cypher.javacompat.ExecutionEngine.execute(ExecutionEngine.java:80)
org.neo4j.server.rest.web.CypherService.cypher(CypherService.java:95)
java.lang.reflect.Method.invoke(Unknown Source)
org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)

構成で何か間違ったことをしましたか?

ところで: 2 番目のインスタンスを再起動すると、マスター インスタンスは「通常」に戻ります。

4

1 に答える 1

3

これは予期される動作です。クラスターに関する限り、クラスターには 2 つのインスタンスがあり、1 つがダウンするとクォーラムがないため、安全上の理由から使用できなくなります。セットアップでは、これを回避する方法は、マスター インスタンスで別のアービターを開始して、3 つのインスタンスのうち 2 つが常に利用可能になるようにすることです。したがって、クラスターは稼働していると見なされます。

于 2013-05-28T03:25:44.850 に答える