一、環境準備
假設有兩臺服務器:

注意事項:
1)所有服務器的Erlang及RabbitMQ版本必須一樣,
2)服務器名大小寫敏感,


二、開始搭建
2.1、設定hosts檔案
路徑如下:C:\Windows\System32\drivers\etc

在hosts檔案中添加主機及備機的IP地址及計算機名,需要注意的是:主機及備機都要設,

2.2、開啟集群埠
假如您的主機及備機都沒有開啟防火墻,2.2可以略過;若開啟了防火墻,需要在開啟了防火墻的服務器上的入站規則中添加以下3個埠:
1)15672是管理界面使用的埠;
2)25672是集群之間使用的埠;
3)4369是Erlang行程epmd用來做node連接的埠,
下面以建15672埠為例,其它的原理是一樣的:
2.2.1、控制面板\所有控制面板項\Windows 防火墻->高級設定->入站規則,

2.2.2、右鍵新建規則->選擇埠->下一步,

2.2.3、在特定本地埠中輸入埠號15672->下一步,

2.2.4、下一步,

2.2.5、下一步,

2.2.6、輸入名稱,如15672->完成,

3、設定Cookie
由于RabbitMQ的集群是依附于Erlang的集群來作業的,所以必須先構建起Erlang的集群鏡像,Erlang的集群中各節點是經由程序一個magic cookie來實作的,這個cookie存放在C:\Users\管理員用戶\.erlang.cookie中(如本機使用的是Administartor用戶,存放的路徑在于C:\Users\Administartor\.erlang.cookie中),另外在Windows系統中,在C:\Windows目錄下也有一個.erlang.cookie(不同版本存放的路徑略有不同,3.8.3版本存放的路徑在于C:\Windows\System32\config\systemprofile下),兩個是一樣的,各個節點的這兩個檔案必須要保持一致,
3.1、復制主機cx168下的.erlang.cookie檔案,將備機cx165中的兩個.erlang.cookie檔案替換掉,
3.2、主機及備機的RabbitMQ服務都分別重啟一下,

4、加入集群
在備機的RabbitMQ Command Prompt (sbin dir)中,執行以下命令:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@cx168 --ram
rabbitmqctl start_app
注:上面是將備機cx165添加到主機cx168集群中,備機是以ram節點的方式加入,假如想改成disc節點,可以使用以下命令修改:
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type --disc
rabbitmqctl start_app
5、查看集群資訊
現在登錄一下備機cx165的管理界面(如下圖),可以看到:
1)右上角的集群已經由cx165變成了cx168;
2)節點Nodes出現了主機cx168及備機cx165;
3)主機cx168上的資訊已全部同步到備機cx165,如用戶資訊等,

也可以使用命令查看集群資訊:
rabbitmqctl cluster_status
6、集群注意事項
1)集群中至少要有一個disc型別的節點,這樣關于集群的配置才是有效的;
2)僅當集群中disc型別的節點處于運行狀態時,對集群相關配置的修改才是有效的(disc代表磁盤節點,ram代表記憶體節點);
3)集群在運行時,如果disc節點突然宕掉,此時其它的ram節點仍然能夠繼續提供服務,但若此時所有的ram節點也都宕掉,則在disc節點未啟動的情況下,ram節點無法啟動,因為所有的配置都保存在disc節點下面,啟動時,需要從該型別節點讀取對應的配置,
4)RabbitMQ集群中,節點之間的exchange是在各個節點都有一份的,但是訊息佇列queue只存在對應的接收節點上面,其它節點不存盤,如果該接收節點宕掉,那么接收到的訊息佇列可能會丟失,
7、 集群其它命令
7.1、退出集群
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/54726.html
標籤:C#
上一篇:六、C#入門—字符與字串
