日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

RabbitMQ单机多实例配置

發(fā)布時(shí)間:2024/4/11 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ单机多实例配置 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

歡迎支持筆者新作:《深入理解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ò):

[root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl status Status of node 'rabbit@hiddenzhu-8drdc' ... [{pid,13014},{running_applications,[{rabbit,"RabbitMQ","3.4.0"},{mnesia,"MNESIA CXC 138 12","4.14.1"},{os_mon,"CPO CXC 138 46","2.4.1"},{xmerl,"XML parser","1.3.12"},{sasl,"SASL CXC 138 11","3.0.1"},{stdlib,"ERTS CXC 138 10","3.1"},{kernel,"ERTS CXC 138 10","5.1"}]},{os,{unix,linux}},{erlang_version,"Erlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:4:4] [async-threads:30] [hipe] [kernel-poll:true]\n"},{memory,[{total,37276536},{connection_readers,0},{connection_writers,0},{connection_channels,0},{connection_other,2832},{queue_procs,2832},{queue_slave_procs,0},{plugins,0},{other_proc,13331064},{mnesia,66248},{mgmt_db,0},{msg_index,41184},{other_ets,778528},{binary,23152},{code,14637029},{atom,654241},{other_system,7739426}]},{alarms,[]},{listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]},{vm_memory_high_watermark,0.4},{vm_memory_limit,3301929779},{disk_free_limit,50000000},{disk_free,37108654080},{file_descriptors,[{total_limit,924},{total_used,3},{sockets_limit,829},{sockets_used,1}]},{processes,[{limit,1048576},{used,126}]},{run_queue,0},{uptime,2143}]

為了簡(jiǎn)單化,這里也要保證rabbitmq的plugin沒有開啟(因?yàn)殚_啟之后要占用一些端口,多實(shí)例配置起來會(huì)更加復(fù)雜,這里簡(jiǎn)單問題簡(jiǎn)化說明)。

情景
假設(shè)有三個(gè)rabbitmq節(jié)點(diǎn),分別為rabbit1, rabbit2和rabbit3
主要開啟命令如下:

RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit1 rabbitmq-server -detached RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached RABBITMQ_NODE_PORT=5674 RABBITMQ_NODENAME=rabbit3 rabbitmq-server -detached

結(jié)束命令如下:

rabbitmqctl -n rabbit1 stop rabbitmqctl -n rabbit2 stop rabbitmqctl -n rabbit3 stop

rabbit1

[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ì)遇到:

Error: could not recognise command

的錯(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ò):

Error: {ok,already_member}

查看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
有可能遇到這樣的情況:

[root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl status -n rabbit2 Status of node 'rabbit2@hiddenzhu-8drdc' ... Error: {badarith,[{rabbit_vm,bytes,1,[]},{rabbit_vm,'-mnesia_memory/0-lc$^0/1-0-',1,[]},{rabbit_vm,mnesia_memory,0,[]},{rabbit_vm,memory,0,[]},{rabbit,status,0,[]},{rpc,'-handle_call_call/6-fun-0-',5,[{file,"rpc.erl"},{line,187}]}]}

有一種解決版本是將“/var/lib/rabbitmq/mnesia/”目錄下的所有內(nèi)容刪掉(rm -rf *),然后重新啟動(dòng)再配置。

And…
很多時(shí)候也會(huì)遇到這樣的情況:

[root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit2 status Status of node 'rabbit2@hiddenzhu-8drdc' ... Error: unable to connect to node 'rabbit2@hiddenzhu-8drdc': nodedown diagnostics: - nodes and their ports on hiddenzhu-8drdc: [{rabbit1,44494},{rabbitmqctl2271,60458}] - current node: 'rabbitmqctl2271@hiddenzhu-8drdc' - current node home dir: /root - current node cookie hash: VCwbL3S9/ydrGgVsrLjVkA==

這說明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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。