RabbitMQ集群笔记

来源:互联网 发布:证券从业资格证知乎 编辑:程序博客网 时间:2024/06/07 09:37
1.服务器选择
HostName     IP
node1   192.168.20.171
node2   192.168.20.172
node3   192.168.20.173

2.在三台服务器上分别修改配置
(1) 修改/etc/hosts
192.168.20.171 node1
192.168.20.172 node2
192.168.20.173 node3
(2) 修改/etc/sysconfig/network
HOSTNAME=node1   #node1服务器
HOSTNAME=node2   #node2服务器
HOSTNAME=node3   #node3服务器
(3) 设置hostname
hostname node1    #node1服务器
hostname node2    #node2服务器
hostname node3    #node3服务器

3.修改erlang.cookie,使三台服务器保持一致
3.1通过远程复制文件(scp)或者直接复制内容均是可以的
3.2erlang.cookie介绍
erlang.cookie是erlang实现分布式的必要文件,erlang分布式的每个节点上要保持相同的.erlang.cookie文件,同时保证文件的权限是400。
官方在介绍集群的文档中提到过.erlang.cookie一般会存在这两个地址:第一个是$home/.erlang.cookie;第二个地方就是/var/lib/rabbitmq/.erlang.cookie。
如果我们使用解压缩方式安装部署的rabbitmq,那么这个文件会在${home}目录下,也就是$home/.erlang.cookie。
如果我们使用rpm等安装包方式进行安装的,那么这个文件会在/var/lib/rabbitmq目录下。

4.每个节点上都安装好erlang和rabbitMQ,注意别启动rabbitMQ即第5步之后不执行(参考RabbitMQ快速入门.txt)
设置好erlang.cookie之后,后台启动rabbitmq-server
/usr/local/rabbitmq-3.6.6/sbin/rabbitmq-server start & 启动rabbitmq
查看各节点状态:/usr/local/rabbitmq-3.6.6/sbin/rabbitmqctl cluster_status

5、把node2、node3分别加入到集群node1中(rabbitmqctl stop_app ---仅关闭应用,节点不被关闭)
(1) node2
./rabbitmqctl stop_app
./rabbitmqctl join_cluster rabbit@node1
./rabbitmqctl start_app
(2) node3
./rabbitmqctl stop_app
./rabbitmqctl join_cluster rabbit@node1
./rabbitmqctl start_app
此时 node2 与 node3 也会自动建立连接;如果要使用内存节点,则可以使用
node2#./rabbitmqctl join_cluster --ram rabbit@node1 加入集群。

6、查看集群情况
./rabbitmqctl cluster_status
Cluster status of node rabbit@node3 ...
[{nodes,[{disc,[rabbit@node1,rabbit@node2,rabbit@node3]}]},
 {running_nodes,[rabbit@node1,rabbit@node2,rabbit@node3]},
 {cluster_name,<<"rabbit@node1">>},
 {partitions,[]},
 {alarms,[{rabbit@node1,[]},{rabbit@node2,[]},{rabbit@node3,[]}]}]

7.设置镜像队列策略
在任意一个节点上执行:#./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态保持一直。
完成这 7 个步骤后,RabbitMQ 高可用集群就已经搭建好了,最后一个步骤就是搭建均衡器。
 
8.安装并配置 HAProxy(未测试)
在192.168.20.174上安装 HAProxy,然后修改 /etc/haproxy/haproxy.cfg:
listen rabbitmq_cluster 0.0.0.0:5672
mode tcp
balance roundrobin
server   node1 192.168.1.1:5672 check inter 2000 rise 2 fall 3  
server   node2 192.168.1.2:5672 check inter 2000 rise 2 fall 3
server   node2 192.168.1.3:5672 check inter 2000 rise 2 fall 3

8.退出集群
例:在node3(退出节点)上执行
#./rabbitmqctl stop_app
#./rabbitmqctl reset
#./rabbitmqctl start_app
在主节点node1上执行
rabbitmqctl forget_cluster_node rabbit@node3

9.改变节点形式
./rabbitmqctl stop_app
./rabbitmqctl change_cluster_node_type disc/ram(二选一)
./rabbitmqctl start_app

10.集群重启
rabbitMQ集群重启时,最后一个挂掉的节点应该第一个重启,否则起不起来。

11.参考文章
http://www.cnblogs.com/taoge007/p/6208552.html
http://88250.b3log.org/rabbitmq-clustering-ha
http://www.cnblogs.com/grimm/p/5771038.html
1 0
原创粉丝点击