原文鏈接:http://www.cnblogs.com/hegx/p/6097147.html
一、在集羣機器上安裝erlang環境、安裝rabbitmq;
二、 假設,192.168.10.111的節點名稱爲 rabbit@H1-PC,192.168.10.112的節點名稱爲 rabbit@H2-PC
1.分別在兩臺機器的rabbitmq數據、日誌文件所在路徑下(本文爲C:\Users\Administrator\AppData\Roaming\RabbitMQ),創建集羣配置文件rabbitmq.config。
rabbitmq.config是一個標準的erlang配置文件。它必須符合erlang配置文件的標準。
它既有默認的目錄,也可以在rabbitmq-env.conf文件中配置。
內容爲(包括最後的.):
[{rabbit,[{cluster_nodes, ['rabbit@app118', 'rabbit@app119']}]}].
2.分別配置兩臺機器的host(C:\Windows\System32\drivers\etc目錄下)。
111:
192.168.10.111 H1-PC
192.168.10.112 H2-PC
112:
192.168.10.112 H2-PC
192.168.10.111 H1-PC
3.分別在兩臺機器的rabbitmq數據、日誌文件所在路徑下(本文爲C:\Users\Administrator\AppData\Roaming\RabbitMQ),創建rabbitmq環境變量的配置文件rabbitmq-env.conf。
192.168.10.111的rabbitmq-env.conf內容爲:
NODENAME=rabbit@H1-PC
NODE_IP_ADDRESS=192.168.10.111
NODE_PORT=5672
RABBITMQ_MNESIA_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\db
RABBITMQ_LOG_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\log
192.168.10.112的rabbitmq-env.conf內容爲:
NODENAME=rabbit@H2-PC
NODE_IP_ADDRESS=192.168.10.112
NODE_PORT=5672
RABBITMQ_MNESIA_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\db
RABBITMQ_LOG_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\log
4.將192.168.10.111的C:\Users\Administrator文件夾下的.erlang.cookie文件替換掉
192.168.10.112 C:\Users\Administrator和C:\Windows下的該文件(該文件是集羣節點進行通信的驗證密鑰,所有節點必須一致。反過來亦可)。
5.重啓兩臺機器的rabbitmq。
(1)192.168.10.112,在控制檯D:\RabbitMQ Server\rabbitmq_server-2.8.1\sbin 路徑下分別執行以下語句:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
(2) 192.168.10.111,在控制檯D:\RabbitMQServer\rabbitmq_server-2.8.1\sbin路徑下分別執行以下語句:
rabbitmqctl stop_app
rabbitmqctl reset
rabbtimqctl join_cluster rabbit@H2-PC
rabbitmqctl start_app
上述命令先停掉rabbitmq應用,reset集羣狀態,然後調用cluster命令,將H1-PC連接到H2-PC,使兩者成爲一個集羣,最後重啓rabbitmq應用。在這個cluster命令下,H1-PC是內存節點,H2-PC是磁盤節點(RabbitMQ啓動後,默認是磁盤節點)。
如果要使H1-PC在集羣裏也是磁盤節點,那麼更改上述第3句如下:
rabbitmqctl cluster rabbit@H2-PC rabbit@H1-PC
只要在節點列表裏包含了自己,它就成爲一個磁盤節點。在RabbitMQ集羣裏,必須至少有一個磁盤節點存在。
6.在H1-PC和H2-PC上,運行rabbitmqctl cluster_status命令查看集羣狀態.
Cluster status of node 'rabbit@H1-PC'...
[{nodes,[{disc,['rabbit@H2-PC']},{ram,['rabbit@H1-PC']}]},
{running_nodes,['rabbit@H2-PC','rabbit@H1-PC']}]
...done.