2011-12-10 122 views
0

我已经在两台不同的机器上成功设置了BigCouch。他们都在当地运行得很好。当我使用以下命令之一或两者将它们加入群集中时:curl -X PUT machine1:5986/nodes/bigcouch @ machine2 -d {} curl -X PUT machine2:5986/nodes/bigcouch @ machine1 -d {}BigCouch集群连接问题

我总是收到积极的结果。数据库节点包含两个文件bigcouch @ machine2,bigcouch @ machine1。但事实上,它总是很诡异。我在BigCouch的命令行中看到此错误消息

= *错误报告==== 2011年12月9日:: 20:01:40 ===节点'bigcouch上的进程< 0.3117.0>中的错误返回值为{{rexi_DOWN,noconnect},[{mem3_rep,rexi_call,2},{mem3_rep,replicate_batch,1},{mem3_rep,go,3},{mem3_rep,go,2}]}}的'machine1.fr' < 148> 1 2011-12-09T19:01:40.559992Z machine1 twig < 0.159.0> -------- - mem3_sync nodes - >'bigcouch @ machine2'{{rexi_DOWN,noconnect},[{mem3_rep, replay_call,2},{mem3_rep,replicate_batch,1},{mem3_rep,go,3},{mem3_rep,go,2}]} < 148> 1 2011-12-09T19:01:40.560106Z machine1 twig < 0.159.0 > -------- - 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}]} < 148> 1 2011-12-09T19:01:40.560205Z machine1 twig < 0.159.0> -------- - mem3_sync _users - >'bigcouch @ machine2'{{rexi_DOWN,noconnect},[{mem3_rep, rewrite_call,2},{mem3_rep,replicate_batch,1},{mem3_rep,go,3},{mem3_rep,go,2}]} [error] [emulator] [--------]错误处理<在退出值为{{rexi_DOWN,noconnect},[{mem3_rep,rexi_call,2},{mem3_rep,replicate_batch,1},{mem3_rep,go,3},{mem3_rep, machine1 twig emulator msg - 进程< 0.3198.0>出错,节点'bigcouch @ machine1',退出值:{{rexi_DOWN,noconnect} ,[{mem3_rep,rexi_call,2},{mem3_rep,replicate_batch,1},{mem3_rep,go,3},{mem3_rep,go,2}]} *

也许这是防火墙?如果是,请告诉我范围端口让节点互相连接。如果没有,请向我解释,以及如何解决它以连接它们。

在文档中,他们要求节点可以相互ping通,节点设置相同的魔术cookie。我的机器可以互相ping通,但什么是魔术饼干?

回答

0

有时当节点第一次连接时,您会看到此错误,因为有各种进程接收更新消息并监视其他节点以及内部复制器。这些信息是无害的,但如果你持续地看到“noconnect”,那么就有错误。

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

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

此外,您只需要在一侧运行连接,例如.eg。节点2到节点1作为内部复制器将跨群集同步节点dbs

+0

此外,如果您有防火墙,则应阅读以下内容:http://www.erlang.org/faq/how_do_i.html#id55164。您需要打开EPMD端口4369以及一系列端口(例如9100-9105),并最终说服erlang vm仅使用该范围。链接的页面包含一种方法,但我认为您还可以将'-kernel inet_dist_listen_min 9001'添加到vm.args文件中。 –