2

你好,

我们正在尝试在我们的 Rails 开发环境中设置 Neo4j HA 集群,就像这里解释的那样:https ://github.com/andreasronge/neo4j/wiki/Neo4j%3A%3ARails-Config

我们在集群中有两个实例。服务器 1 是应用程序,服务器 2 是 Rails 控制台。他们俩开始都很好,但最终他们中的一个会摔倒。通常,它是以下之一:

1) java.io.FileNotFound: /server_1_path/path/to/some/RailsModel_exact/_2.fxm 文件。不知何故,索引期望存在一个不存在的文件。有时,该文件在任一服务器目录中都不存在,唯一有帮助的是通过将一组索引文件复制到另一组来使两组索引文件相同。

2) 孤立的 index.lock 文件。这里的错误会说某个索引被锁定,删除特定.lock文件可以解决问题。烦人。(也许类似的问题

3)在一个实例中添加数据,从不显示在另一个实例中。在这种情况下,我在 Rails 控制台中创建了一个节点,它永远不会出现在应用程序中,反之亦然。在这种情况下,似乎两个实例都作为主实例启动并且永远不会同步。通常必须删除其中一个数据库并重新启动才能让它们再次工作。

我不确定新的 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}"

感谢您提供任何/所有帮助/建议。

4

0 回答 0