C#隊列學習筆記:RabbitMQ搭建集群


    一、環境准備

    假設有兩台服務器:

    注意事項:

    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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM