我正在研究RabbitMQ分佈式POC,我被困在聚類節點的基礎知識中。
我正在嘗試關注聚類上的兔子tutorial,所以這是我的參考。
安裝erlang(R14B04)和rabbit(2.8.2-1)後,我已將.erlang.cookie
文件內容從一個節點複製到另外兩個節點。
我不確定如何讓erlang注意到這個改變,我不得不重啓機器本身(非常暴力,但我根本不知道erlang)。
在addtion我在iptables的4369和通信5個額外的端口打開, /usr/lib64/erlang/bin/sys.config
下放置以下配置:分佈式RabbitMQ節點彼此不能識別
{kernel,[{inet_dist_listen_min, XX00},{inet_dist_listen_max,XX05}]}]
然後又重新啓動(啞,我知道),以驗證二郎需要到這些因素,但仍當我運行:
rabbitmqctl cluster [email protected]
我得到:
Clustering node [email protected] with [[email protected]] ...
Error: {no_running_cluster_nodes,[[email protected]],
[[email protected]]}
有機會的話我和擺弄erlang.cookie或端口沒有成功,但我不知道如何檢查它們。我嘗試在cmd中輸入erl
,然後在erl_epmd:names()
或其他命令中獲得更多信息,但我很可能在erlang的土地上下車。
將真正感謝所有幫助
更新:
我手動檢測兩臺Erlang節點試圖查驗並獲得pang
回來。
我做了以下內容:
連接到兩個節點,停止RabbitMQ的(如果需要的話,但可以肯定的是不知道),開始二郎神像這樣(erl -sname dilbert
和erl -sname dilbert2
)當二郎命令行開始我每跑node().
他們分別得到[email protected]
和[email protected]
。然後我嘗試運行net_adm:ping('dilbert').
和net_adm:ping('[email protected]').
單引號,沒有它們從兩個節點(當然更改名稱),並得到所有8個案例pang
。
當我在其中一臺機器上運行nodes().
時,我收回了一個空數組。
我也試過讓所有的流量在防火牆(script),然後嘗試運行上述命令(別擔心他們現在回來),並仍然收回pang
。
UPDATE2:
出於某種原因,我有餅乾不匹配,我需要解決(您的建議感謝@ kjw0188 [我在二郎命令行運行erlang:get_cookie().
])。
這沒有幫助,我需要完全停止iptables(不知道爲什麼,但我馬上就會知道)並加載erlang節點-name [email protected]
,因爲我的rackspace服務器沒有dns-name。這最終使我得到了一個乒乓球,看到對方看到對方(nodes().
ping後返回一個非空數組)。
我現在面臨的問題是如何指導RabbitMQ在啓動erlang時使用-name而不是-sname。
您是否看到過是否可以在每臺計算機上啓動erl節點,並查看它們是否可以互相ping通? – kjw0188
@ kjw0188還沒試過(erlang noob)。你知道我如何檢查當前節點沒有運行嗎?我認爲RabbitMQ在加載時啓動一個節點,所以我會停止它,但我想在驗證您的建議之前驗證沒有節點正在運行。謝謝 – Ittai
你應該不需要拿下兔子,但如果你想,你可以嘗試停止服務'sudo /etc/init.d/rabbitmq-server stop' – kjw0188