RabbitMq本身支持集群,但其本身并不支持负载均衡。
Erlang的集群中各节点是经由过程一个magic cookie来实现的,cookie存放位置为:
C:\Users\用户名\.erlang.cookie
C:\Windows\System32\config\systemprofile\.erlang.cookie
一、修改Host文件
测试使用两台windows server 2008 R2虚拟机,ip分别为192.168.174.128,192.168.174.129
首先找到两台的节点名称,登陆后右上角有展示。
两台机器的host都增加
二、修改rabbitmq.config文件,增加集群节点。(不是安装目录)
安装目录下的Readme.txt有指明config存放位置,默认没有config文件,将rabbitmq.config.example复制一份重命名成rabbitmq.config
C:\Users\用户名\AppData\Roaming\RabbitMQ\rabbitmq.config
config文件内容类似于Json的格式,找到cluster_nodes节点,去掉前边两个百分号,(百分号是注释)修改内容为(去掉后边的逗号):
{cluster_nodes,[‘rabbit@WIN-3CT43O6NT2I‘,‘rabbit@WIN-JHVN0BHLM7L‘]}
注:捎带写一下修改Rabbit默认端口号。(公司机房固定某几个端口可访问,所以要改默认端口号)
找到tcp_listeners去掉前边百分号改为{tcp_listeners, [8080]};(参照Json格式的写法,如果只修改端口号则去掉后边的逗号“,”;如果修改端口号后边还有其他节点修改则要加上结尾的逗号,最后一个节点不加逗号)
下图是删除config注释后的文件内容:
注:网上有的文章说要添加rabbitmq-env.conf文件,我用的这个版本不用添加这个文件(测试过了),其余版本不清楚。
三、增加集群节点
cd 到安装目录的sbin文件下执行命令,添加集群节点(开始菜单Rabbit有cmd命令行工具)
rabbitmqctl stop_app //停止
rabbitmqctl reset// 此命令不执行也行,此命令是清除所有节点,类似于恢复出厂设置,清除报错可以强制清除 rabbitmqctl force_reset;强制清除会将Rabbit恢复成初始状态,Cluster名称也会变,需要重新配置集群;
rabbitmqctl join_clusterrabbit@USER-20160306SN //添加集群节点;其中一台服务器执行就可以,大概意思是将两个Rabbit创建成集群
rabbitmqctl start_app //启动
至此RabbitMQ的集群就设置好了,登陆任意一个web管理端可以看到这个集群
注:如果要一个子节点退出集群要在子节点上执行
rabbitmqctl stop_app //停止
rabbitmqctl reset
rabbitmqctl start_app //启动
在主节点上执行
rabbitmqctl forget_cluster_node rabbit@USER-20160306SN
注:RABBITMQ集群重启
集群重启时,最后一个挂掉的节点应该第一个重启,如果因特殊原因(比如同时断电),而不知道哪个节点最后一个挂掉。可用以下方法重启:
先在一个节点上执行
rabbitmqctl force_boot
service rabbitmq-server start
在其他节点上执行
service rabbitmq-server start
查看cluster状态是否正常(要在所有节点上查询)。
rabbitmqctl cluster_status
原文:https://www.cnblogs.com/zeran/p/10773709.html