一、缘由
为了保证rabbitMQ服务的可用性,我们一般会将mq服务配置成集群形式,从而保证在某个节点宕机后,服务依旧可用。在本篇文章中主要介绍集群的搭建以及搭建过程中的问题以及解决。搭建普通集群、搭建镜像集群、卸载rabbitmq服务
这里实现多机的集群节点
二、操作
1、前期准备
1、配置host
笔者这里准备了两台机器,在这两台机器上的/etc/sysconfig/iptables中配置两台主机的dns服务,注意下面的配置在两台主机上都要进行配置。后面的aaa、bbb 最好是自己本机的hostname (解释 配置这两个的原因是便于两台机器互相解析通信 。)
192.168.47.132 aaa
192.168.47.135 bbb
2、统一cookie
将两个机器上的erlang.cookie 进行统一(集群之间的通讯使用该cookie)
(RabbitMQ底层是通过Erlang架构来实现的,所以rabbitmqctl会启动Erlang节点,并基于Erlang节点来使用Erlang系统连接RabbitMQ节点,在连接过程中需要正确的Erlang Cookie和节点名称,Erlang节点通过交换Erlang Cookie以获得认证)来实现的。(注意.erlang.cookie 需要保持其中的所属组和权限信息)
#远程复制
scp root@xxx.xxx.xxx.xxx:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/.erlang.cookie
#然后再进行更改
#更新完cookie后 重新再启动该节点会出错(可能是因为破坏了.erlang.cookie文件的权限以及所属组信息)
#如下恢复其原来的.erlang.cookie文件
chown rabbitmq:rabbitmq .erlang.cookie
chmod 400 .erlang.cookie
注意点
两个机器rabbitmq节点名称一致情况下的集群 无法搭建 需要修改主机名 自行解决
我的是centos 所以需要需改 /etc/hostname 即可
为什么会一样呢。因为rabbitmq的默认节点名称为rabbit@hostname
关闭防火墙
service iptables stop
2、普通集群
两个rabbitmq服务在两台机器上已经搭建成功,有关rabbitmq搭建教程请参考我的另一篇博文