RabbitMQ单机多实例配置
歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。
歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/mq/rabbitmq-multiple-instances-in-one-machine/
由于某些因素的限制,有時(shí)候你不得不在一臺(tái)機(jī)器上去搭建一個(gè)rabbitmq集群,當(dāng)然這種集群只適合自己玩玩,驗(yàn)證下結(jié)論,這個(gè)有點(diǎn)類似zookeeper的單機(jī)版。真實(shí)生成環(huán)境還是要配成多機(jī)集群的。有關(guān)怎么配置多機(jī)集群的可以參考其他的資料,這里主要論述如何在單機(jī)中配置多個(gè)rabbitmq實(shí)例。
主要參考官方文檔:https://www.rabbitmq.com/clustering.html
前提
配置的前提是你的rabbitmq可以運(yùn)行起來,比如"ps aux|grep rabbitmq"你能看到相關(guān)進(jìn)程,又比如運(yùn)行“rabbitmqctl status”你可以看到類似如下信息,而不報(bào)錯(cuò):
為了簡(jiǎn)單化,這里也要保證rabbitmq的plugin沒有開啟(因?yàn)殚_啟之后要占用一些端口,多實(shí)例配置起來會(huì)更加復(fù)雜,這里簡(jiǎn)單問題簡(jiǎn)化說明)。
情景
假設(shè)有三個(gè)rabbitmq節(jié)點(diǎn),分別為rabbit1, rabbit2和rabbit3
主要開啟命令如下:
結(jié)束命令如下:
rabbitmqctl -n rabbit1 stop rabbitmqctl -n rabbit2 stop rabbitmqctl -n rabbit3 stoprabbit1
[root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit1 stop_app Stopping node 'rabbit1@hiddenzhu-8drdc' ... ...done. [root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit1 reset Resetting node 'rabbit1@hiddenzhu-8drdc' ... ...done. [root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit1 cluster Clustering node 'rabbit1@hiddenzhu-8drdc' with [] ... ...done. [root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit1 start_app Starting node 'rabbit1@hiddenzhu-8drdc' ... ...done.TIPS
有些版本(比如3.4.0)在第一個(gè)節(jié)點(diǎn)(主節(jié)點(diǎn))運(yùn)行“rabbitmqctl -n rabbit1 cluster” 時(shí)會(huì)遇到:
的錯(cuò)誤,可以不運(yùn)行“rabbitmqctl -n rabbit1 cluster”這句。然后在從節(jié)點(diǎn)運(yùn)行:
rabbitmqctl -n rabbit2 join_cluster rabbit1@`hostname -s`這一句。
主要原因是:有些版本不識(shí)別cluster這個(gè)命令
rabbit2
[root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit2 stop_app Stopping node 'rabbit2@hiddenzhu-8drdc' ... ...done. [root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit2 reset Resetting node 'rabbit2@hiddenzhu-8drdc' ... ...done. [root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit2 cluster rabbit1@`hostname -s` Clustering node 'rabbit2@hiddenzhu-8drdc' with ['rabbit1@hiddenzhu-8drdc'] ... ...done. [root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit2 start_app Starting node 'rabbit2@hiddenzhu-8drdc' ... ...done.TIPS
如果略去“rabbitmqctl -n rabbit2 reset”這一句,可能會(huì)報(bào)錯(cuò):
查看cluster信息
[root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit1 cluster_status Cluster status of node 'rabbit1@hiddenzhu-8drdc' ... [{nodes,[{disc,['rabbit1@hiddenzhu-8drdc']},{ram,['rabbit2@hiddenzhu-8drdc']}]},{running_nodes,['rabbit2@hiddenzhu-8drdc','rabbit1@hiddenzhu-8drdc']}] ...done. [root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit2 cluster_status Cluster status of node 'rabbit2@hiddenzhu-8drdc' ... [{nodes,[{disc,['rabbit1@hiddenzhu-8drdc']},{ram,['rabbit2@hiddenzhu-8drdc']}]},{running_nodes,['rabbit1@hiddenzhu-8drdc','rabbit2@hiddenzhu-8drdc']}] ...done.加入節(jié)點(diǎn)rabbit3
[root@hiddenzhu-8drdc rabbitmq]# RABBITMQ_NODE_PORT=5674 RABBITMQ_NODENAME=rabbit3 rabbitmq-server -detached Activating RabbitMQ plugins ... 0 plugins activated:[root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit3 stop_app Stopping node 'rabbit3@hiddenzhu-8drdc' ... ...done. [root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit3 reset Resetting node 'rabbit3@hiddenzhu-8drdc' ... ...done. [root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit3 cluster rabbit1@`hostname -s` Clustering node 'rabbit3@hiddenzhu-8drdc' with ['rabbit1@hiddenzhu-8drdc'] ... ...done. [root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit3 start_app Starting node 'rabbit3@hiddenzhu-8drdc' ... ...done.最終查看集群狀態(tài)
[root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit3 cluster_status Cluster status of node 'rabbit3@hiddenzhu-8drdc' ... [{nodes,[{disc,['rabbit1@hiddenzhu-8drdc']},{ram,['rabbit3@hiddenzhu-8drdc','rabbit2@hiddenzhu-8drdc']}]},{running_nodes,['rabbit1@hiddenzhu-8drdc','rabbit2@hiddenzhu-8drdc','rabbit3@hiddenzhu-8drdc']}] ...done.TIPS
有可能遇到這樣的情況:
有一種解決版本是將“/var/lib/rabbitmq/mnesia/”目錄下的所有內(nèi)容刪掉(rm -rf *),然后重新啟動(dòng)再配置。
And…
很多時(shí)候也會(huì)遇到這樣的情況:
這說明rabbitmq節(jié)點(diǎn)并未啟動(dòng)起來,需要進(jìn)一步查看排除異常。
End…
歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/mq/rabbitmq-multiple-instances-in-one-machine/
歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。
總結(jié)
以上是生活随笔為你收集整理的RabbitMQ单机多实例配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sbt安装与配置
- 下一篇: RabbitMQ脑裂