Erlang 群集连接问题

Erlang 群集连接问题,erlang,couchdb,cluster-computing,nodes,bigcouch,Erlang,Couchdb,Cluster Computing,Nodes,Bigcouch,我已经成功地在两台不同的机器上安装了BigCoach。它们在本地运行得都很好。当我使用以下命令之一或两者将它们加入集群时:curl-xputmachine1:5986/nodes/bigcouch@machine2-d{}curl-X PUT machine2:5986/节点/bigcouch@machine1-d{} 我总是收到积极的结果。数据库节点包含两个文档bigcouch@machine2, bigcouch@machine1. 但事实上,这总是错误的。我在bigcooch的命令行中看到

我已经成功地在两台不同的机器上安装了BigCoach。它们在本地运行得都很好。当我使用以下命令之一或两者将它们加入集群时:curl-xputmachine1:5986/nodes/bigcouch@machine2-d{}curl-X PUT machine2:5986/节点/bigcouch@machine1-d{}

我总是收到积极的结果。数据库节点包含两个文档bigcouch@machine2, bigcouch@machine1. 但事实上,这总是错误的。我在bigcooch的命令行中看到了这个错误消息

=*错误报告===2011年12月9日::20:01:40===节点的进程中出现错误bigcouch@machine1.fr'带退出值:{rexi_DOWN,noconnect},[{mem3_rep,rexi_call,2},{mem3_rep,replicate_batch,1},{mem3_rep,go,3},{mem3_rep,go,2}]}1 2011-12-09T19:01:40.559992Z机器1细枝-----mem3_同步节点->'bigcouch@machine2“{rexi_DOWN,noconnect}”[{mem3_rep,rexi_call,2},{mem3_rep,replicate_batch,1},{mem3_rep,go,3},{mem3_rep,go,go,2}]}1 2011-12-09T19:01:40.560106Z机器1细枝------mem3_sync dbs->'bigcouch@machine2“{rexi_DOWN,noconnect},[{mem3_rep,rexi_call,2},{mem3_rep,replicate_batch,1},{mem3_rep,go,3},{mem3_rep,go,2}”1 2011-12-09T19:01:40.560205Z机器1细枝--------mem3\u同步\u用户->'bigcouch@machine2“{rexi_DOWN,noconnect},[{mem3_rep,rexi_call,2},{mem3_rep,replicate_batch,1},{mem3_rep,go,3},{mem3_rep,go,2}]}[错误][仿真器][----------]节点上的进程出错bigcouch@machine2'的退出值:{rexi_DOWN,noconnect},[{mem3_rep,rexi_call,2},{mem3_rep,replicate_batch,1},{mem3_rep,go,3},{mem3_rep,go,2}]}1 2011-12-09T19:01:45.560979Z机器1细枝模拟器消息-节点上的进程出错bigcouch@machine1'的退出值:{rexi_DOWN,noconnect},[{mem3_rep,rexi_call,2},{mem3_rep,replicate_batch,1},{mem3_rep,go,3},{mem3_rep,go,2}*

可能是防火墙?如果是,请告诉我允许节点相互连接的范围端口。如果不是,请向我解释,以及如何解决连接问题


在文档中,他们要求节点可以相互ping,并且节点设置了相同的magic cookie。我的机器可以相互ping,但什么是magic cookie?

当节点首次连接时,您偶尔会看到此错误,因为有各种进程接收更新消息并监视其他节点以及内部repli这些信息是无害的,但是如果你持续看到“noconnect”,那么一定是出了问题

在每个实例上都有一个文件/etc/vm.args,在其中您将看到两个感兴趣的值,-name和-setcookie。第一个名称对应于连接节点时必须使用的文档id,第二个是魔法cookie,在所有erlang节点上必须相同,以便它们相互通信。如果未设置此cookie,则默认为到~/.erlang cookie中的值

当您执行“makedev”时,它将构建一个3节点集群,您可以检查该集群,以查看这些位应该如何设置


另外,您只需要在一侧运行连接。例如,node2到node1,因为内部复制器将在集群中同步节点dbs

此外,如果您有防火墙,您应该阅读以下内容:。您需要打开EPMD端口4369以及一系列端口(例如9100-9105),最后,说服erlang vm只使用该范围。链接页面包括一种方法,但我认为您还可以将“-kernel inet\u dist\u listen\u min 9001”添加到vm.args文件中。