在windows環境中單機搭建rabbitmq叢集
建議單機版叢集僅作為學習使用,生產環境最好使用多伺服器叢集來避免單點故障帶來的服務不可用,必竟單機版的集是偽叢集。
1:準備基礎檔案、環境變數
設定環境變數:
變數名:RABBITMQ_BASE
變數值:C:\Program Files\RabbitMQ Server(例:這個是安裝目錄的前半部分,我的安裝目錄是:C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.5)
準備多節點需要檔案
windows環境下對應的bat檔案在安裝目錄下的sbin資料夾下
次用2個節點來建單機叢集所以對就的檔案命名我們在對應的檔名加node1,node2來區分,這樣便於後面的管理更清晰。
分別複製2份下面對應的檔案
rabbitmq-server.bat:分別重新命名為rabbitmqctl-node1.bat,rabbitmqctl-node2.bat
rabbitmqctl.bat:分別重新命名為rabbitmqctl-node1.bat,rabbitmqctl-node2.bat
rabbitmq-env.bat:分別重新命名為rabbitmq-env-node1.bat,rabbitmq-env-node2.bat
rabbitmq-plugins.bat:分別重新命名為rabbitmq-plugins-node1.bat,rabbitmq-plugins-node2.bat
準備配置檔案(配置檔案在安裝目錄的etc資料夾下):
複製rabbitmq.config.example2份,並分別重新命名為:rabbitmq-node1.config,rabbitmq-node2.config
2:基礎檔案準備完畢進行對應檔案的修改:
修改rabbitmq-node1.config
在{rabbitmq_management下找到
%% {listener, [{port, 12345}, %% {ip, "127.0.0.1"}, %% {ssl, true}, %% {ssl_opts, [{cacertfile, "/path/to/cacert.pem"}, %% {certfile, "/path/to/cert.pem"}, %% {keyfile, "/path/to/key.pem"}]}]},
改成:{listener, [{port, 15673},{ip, "127.0.0.1"},{ssl, false}]}
修改rabbitmq-node2.config
在{rabbitmq_management下找到
%% {listener, [{port, 12345}, %% {ip, "127.0.0.1"}, %% {ssl, true}, %% {ssl_opts, [{cacertfile, "/path/to/cacert.pem"}, %% {certfile, "/path/to/cert.pem"}, %% {keyfile, "/path/to/key.pem"}]}]},
改成:{listener, [{port, 15675},{ip, "127.0.0.1"},{ssl, false}]}
修改rabbitmq-env-node1.bat
在開頭大概16行左右新增
set RABBITMQ_CONFIG_FILE=!RABBITMQ_HOME!\etc\rabbitmq-node1
set RABBITMQ_BASE=!RABBITMQ_BASE!\rabbitmq-cluster
set [email protected]
set RABBITMQ_NODE_PORT=5673
set RABBITMQ_DIST_PORT=16671
修改rabbitmq-server-node1.bat
call "%TDP0%/rabbitmq-env.bat" %~n0 修改為 call "%TDP0%/rabbitmq-env-node1.bat" %~n0
修改rabbitmqctl-node1.bat
call "%TDP0%/rabbitmq-env.bat" %~n0 修改為 call "%TDP0%/rabbitmq-env-node1.bat" %~n0
修改rabbitmq-plugins-node1.bat
call "%TDP0%/rabbitmq-env.bat" %~n0 修改為 call "%TDP0%/rabbitmq-env-node1.bat" %~n0
修改rabbitmq-env-node2.bat
在開頭大概16行左右新增
set RABBITMQ_CONFIG_FILE=!RABBITMQ_HOME!\etc\rabbitmq-node2
set RABBITMQ_BASE=!RABBITMQ_BASE!\rabbitmq-cluster
set [email protected]
set RABBITMQ_NODE_PORT=5675
set RABBITMQ_DIST_PORT=16673
修改rabbitmq-server-node2.bat
call "%TDP0%/rabbitmq-env.bat" %~n0 修改為 call "%TDP0%/rabbitmq-env-node2.bat" %~n0
修改rabbitmqctl-node2.bat
call "%TDP0%/rabbitmq-env.bat" %~n0 修改為 call "%TDP0%/rabbitmq-env-node2.bat" %~n0
修改rabbitmq-plugins-node2.bat
call "%TDP0%/rabbitmq-env.bat" %~n0 修改為 call "%TDP0%/rabbitmq-env-node2.bat" %~n0
3:啟動server:
rabbitmq-server-node1.bat
rabbitmq-server-node1.bat
新增節點2到節點1組叢集
rabbitmqctl-node2.bat stop_app
rabbitmqctl-node2.bat reset
rabbitmqctl-node2.bat join_cluster [email protected]
rabbitmqctl-node2.bat start_app
cluster_status 檢視叢集狀態
在命令列中執行rabbitmqctl-node2.bat cluster_status
訪問http://127.0.0.1:15674/#/,http://127.0.0.1:15675/#/檢視