【问题标题】:BigCouch cluster connection issueBigCouch 集群连接问题
【发布时间】:2012-01-17 14:22:28
【问题描述】:

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

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

=*错误报告==== 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 machine1 twig -------- - mem3_sync 节点 -> '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.560106Z machine1 twig -------- - 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 machine1 twig -------- - mem3_sync _users -> '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' 上,退出 val ue: {{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 machine1 twig emulator msg - 节点 '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通,但是什么是magic cookie?

【问题讨论】:

    标签: erlang couchdb cluster-computing nodes bigcouch


    【解决方案1】:

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

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

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

    此外,您只需要在一侧运行连接,例如。 node2 到 node1 作为内部复制器将跨集群同步节点数据库

    【讨论】:

    • 另外,如果你有防火墙,你应该阅读这个:erlang.org/faq/how_do_i.html#id55164。您需要打开 EPMD 端口 4369 以及一系列端口(例如 9100-9105),最后,说服 erlang vm 仅使用该范围。链接页面包含一种方式,但我认为您也可以将“-kernel inet_dist_listen_min 9001”添加到 vm.args 文件中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    相关资源
    最近更新 更多