RabbitMQ 单机多实例配置
总阅读量:1250次
摘要: 原创出处 blog.csdn.net/u013256816/article/details/53264715 「朱小厮」欢迎转载,保留摘要,谢谢!
由于某些因素的限制,有时候你不得不在一台机器上去搭建一个rabbitmq集群,当然这种集群只适合自己玩玩,验证下结论,这个有点类似zookeeper的单机版。真实生成环境还是要配成多机集群的。有关怎么配置多机集群的可以参考其他的资料,这里主要论述如何在单机中配置多个rabbitmq实例。
主要参考官方文档:https://www.rabbitmq.com/clustering.html
前提
配置的前提是你的rabbitmq可以运行起来,比如"ps aux|grep rabbitmq"你能看到相关进程,又比如运行“rabbitmqctl status”你可以看到类似如下信息,而不报错:
[root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl status |
为了简单化,这里也要保证rabbitmq的plugin没有开启(因为开启之后要占用一些端口,多实例配置起来会更加复杂,这里简单问题简化说明)。
情景
假设有三个rabbitmq节点,分别为rabbit1, rabbit2和rabbit3 主要开启命令如下:
RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit1 rabbitmq-server -detached |
结束命令如下:
rabbitmqctl -n rabbit1 stop |
rabbit1
[root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit1 stop_app |
TIPS
有些版本(比如3.4.0)在第一个节点(主节点)运行“rabbitmqctl -n rabbit1 cluster” 时会遇到:
Error: could not recognise command |
的错误,可以不运行“rabbitmqctl -n rabbit1 cluster”这句。然后在从节点运行:
rabbitmqctl -n rabbit2 join_cluster rabbit1@`hostname -s` |
这一句。 主要原因是:有些版本不识别cluster这个命令
rabbit2
[root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit2 stop_app |
TIPS
如果略去“rabbitmqctl -n rabbit2 reset”这一句,可能会报错:
Error: {ok,already_member} |
查看cluster信息
[root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit1 cluster_status |
加入节点rabbit3
[root@hiddenzhu-8drdc rabbitmq]# RABBITMQ_NODE_PORT=5674 RABBITMQ_NODENAME=rabbit3 rabbitmq-server -detached |
最终查看集群状态
[root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit3 cluster_status |
TIPS 有可能遇到这样的情况:
[root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl status -n rabbit2 |
有一种解决版本是将“/var/lib/rabbitmq/mnesia/”目录下的所有内容删掉(rm -rf *),然后重新启动再配置。
And… 很多时候也会遇到这样的情况:
[root@hiddenzhu-8drdc rabbitmq]# rabbitmqctl -n rabbit2 status |
这说明rabbitmq节点并未启动起来,需要进一步查看排除异常。
End…