2012-11-03 44 views
1

我在使兔子進入集羣時遇到服務器問題。兔子不會在ec2上集羣

我啓動了ec2上的兩個節點。

在引導的第一個節點上,我這樣做。

rabbitmqctl stop_app 
rabbitmqctl reset 
rabbitmqctl start_app 

I boot another node. 
sudo service rabbitmq-server stop 
#Copy cookie from the first server booted 
sudo su - -c 'echo -n "cookie" > /var/lib/rabbitmq/.erlang.cookie' 
rabbitmqctl stop_app 
rabbitmqctl reset 
rabbitmqctl cluster [email protected] 

1)sever1運行 2)哪些端口需要打開?我有22,4369,5672

sudo rabbitmqctl cluster [email protected] 
Clustering node '[email protected]' with ['[email protected]'] ... 
Error: {no_running_cluster_nodes,['[email protected]'], 
           ['[email protected]']} 

什麼可能會從那裏丟失的文檔或什麼我錯過了什麼?

回答

6

我在EC2上有兩個Windows機器的類似問題。我最終得到了它的工作,但我不確定我是否以正確的方式做到了,所以可能會有更好的解決方案。

我發現的問題是,兩個節點在嘗試羣集時看不到對方。每次啓動一個Rabbit節點時,它都會動態分配一個端口號。

這顯然使得很難知道在安全組中打開哪個端口,所以爲了解決這個問題,我限制了Rabbit在分配端口時選擇的端口範圍。我將它限制在每個節點上的1個端口範圍內,所以我總是知道分配了哪個端口。

我發現最簡單的方法是編輯sbin \ rabbitmq-service.bat文件。

找到行-kernel inet_default_connect_options 「[{NODELAY,真}]」^

以下兩行添加到下面的文件:

-kernel inet_dist_listen_min #####^ -kernel inet_dist_listen_max #####^

將#####替換爲您選擇的端口號。

所以,你現在應該打開以下端口:

5672 - RabbitMQ的偵聽端口

4369 - 二郎端口映射守護

##### - 所選擇的端口Erlang的數通過

進行通信因爲Erlang不能識別FQDN,您可能需要修改所有服務器上的hosts文件,以確保它們都能夠將所有Erlang節點名稱解析爲IP地址,例如

123.123.123.111 NODE1

123.123.123.222 NODE2

一旦做到這一點,你應該然後能夠看到每個節點從其他。您可以通過調用命令行下面(你想看哪個節點替換兔@ NODE2)

rabbitmqctl狀態-n兔@ NODE2

希望這能給你一些幫助做到這一點,我不是專家,但發現這件事情對我有用!