2011-12-10 151 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文件中。 –