やあ、
ここで説明されているように、Rails 開発環境で Neo4j HA クラスターをセットアップしようとしています: https://github.com/andreasronge/neo4j/wiki/Neo4j%3A%3ARails-Config
クラスターには 2 つのインスタンスがあります。サーバー 1 はアプリ、サーバー 2 は Rails コンソールです。どちらも最初は問題ありませんが、最終的にはどちらかが倒れます。通常、次のいずれかです。
1) java.io.FileNotFound: /server_1_path/path/to/some/RailsModel_exact/_2.fxm ファイル。どういうわけか、インデックスは存在しないファイルが存在することを期待しています。場合によっては、ファイルがどちらのサーバー ディレクトリにも存在しないことがあります。これを解決するには、一方を他方にコピーして両方のインデックス ファイルのセットを同一にするしかありません。
2) 孤立した index.lock ファイル。ここでのエラーは、特定のインデックスがロックされていることを示しており、特定の.lock
ファイルを削除すると問題が修正されます。迷惑です。(おそらく同様の問題)
3) 1 つのインスタンスにデータを追加すると、他のインスタンスには表示されません。この場合、Rails コンソールでノードを作成しましたが、アプリには表示されません。逆もまた同様です。この場合、両方のインスタンスがマスターとして起動し、決して同期しないようです。通常、データベースの1つを削除して再起動し、再び機能させる必要があります。
新しい 1.9 HA の準備が整っていないのか、それともアプリやコンソールを終了する方法にあまりにも無頓着であり、Neo4j が正常にシャットダウンされないのかはわかりません。
これは非常にイライラする問題です。正しく機能させるためのヘルプ/ポインターをいただければ幸いです。
1.9 M03 バージョンの gem を使用しており、設定は次のとおりです。
server_id = ((defined? Rails::Console)) ? 2 : 1
config.neo4j['enable_ha'] = true
config.neo4j['enable_remote_shell'] = "port=133#{server_id}"
config.neo4j['ha.server_id'] = server_id
config.neo4j['ha.server'] = "localhost:600#{server_id}"
config.neo4j['ha.pull_interval'] = '1s'
config.neo4j['ha.discovery.enabled'] = false
config.neo4j['ha.initial_hosts'] = [1,2,3].map{|id| ":500#{id}"}.join(',')
config.neo4j['ha.cluster_server'] = ":5001-5099" #"#{server_id}"
config.neo4j.storage_path = File.expand_path("db/ha_neo_#{server_id}", Object::Rails.root)
config.neo4j['online_backup_server']= "localhost:636#{server_id}"
config.neo4j['ha.cluster_server'] = "localhost:500#{server_id}"
config.neo4j['webserver.port'] = "747#{server_id}"
config.neo4j['webserver.https.port'] = "748#{server_id}"
config.neo4j['enable_remote_shell'] = "port=933#{server_id}"
config.neo4j['use_adaptive_cache'] = false
puts "Config HA cluster, ha.server_id: #{config.neo4j['ha.server_id']}, db: #{config.neo4j.storage_path}"
あらゆる/すべてのヘルプ/アドバイスをありがとう.