rabbitmq集群部署-镜像模式
一、环境
RabbitMQ与Erlang的兼容关系详见:https://www.rabbitmq.com/which-erlang.html
rabbitmq集群最好是奇数节点,所以一般需要3台设备以上。
操作系统:CentOS 7
Erlang:erlang-23.3.4.1-1.el7.x86_64.rpm
RabbitMQ:rabbitmq-server-3.8.14-1.el7.noarch
三台主机:
192.168.116.133 rabbitmq-133
192.168.116.134 rabbitmq-134
192.168.116.135 rabbitmq-135
安装Erlang (erlang-23.3.4.1-1.el7.x86_64.rpm)
下载地址: https://github.com/rabbitmq/erlang-rpm/releases/
或者网盘下载:
链接:https://pan.baidu.com/s/1d0hymqFpZKrK29XS9jWSrA
提取码:p8xt

下载rabbitmq的rpm包,找到对应的版本,选择Assets,centos 7系统选择e17的rpm包
下载地址:rabbitmq
或者在我的网盘下载:
链接:https://pan.baidu.com/s/11nDH3rYUjwq01zNNpygIpg
提取码:8he1


二.安装部署
2.1 全部设备都初始化(三台设备上都要操作)
cd /etc/yum.repos.d/ yum install -y wget wget http://mirrors.aliyun.com/repo/Centos-7.repo wget http://mirrors.aliyun.com/repo/epel-7.repo mv CentOS-Base.repo CentOS-Base.repo.bak yum clean all yum makecache systemctl stop firewalld systemctl disable firewalld sed -i 's/SELINUX=enforcing$/SELINUX=disabled/g' /etc/selinux/config setenforce 0
2.2 全部设备下载、上传rabbitMQ和erlang的rpm包
2.3 设置hosts,然后再安装rpm包
1)首先,第一台设备设置hosts,然后安装rpm包
vi /etc/hosts 192.168.116.133 rabbitmq-133 192.168.116.134 rabbitmq-134 192.168.116.135 rabbitmq-135 hostnamectl set-hostname rabbitmq-133 yum install -y erlang-23.3.4.1-1.el7.x86_64.rpm yum install -y rabbitmq-server-3.8.14-1.el7.noarch.rpm erl 进入erlang的命令行,查看版本为23 q(). 退出命令行 rabbitmqctl version 查看版本号

2)在rabbitmq-134设置hosts、安装rpm包
vi /etc/hosts 192.168.116.133 rabbitmq-133 192.168.116.134 rabbitmq-134 192.168.116.135 rabbitmq-135 hostnamectl set-hostname rabbitmq-134 yum install -y erlang-23.3.4.1-1.el7.x86_64.rpm yum install -y rabbitmq-server-3.8.14-1.el7.noarch.rpm erl 进入erlang的命令行,查看版本为23 q(). 退出命令行 rabbitmqctl version 查看版本号
3)在rabbitmq-135设置hosts、安装rpm包
vi /etc/hosts 192.168.116.133 rabbitmq-133 192.168.116.134 rabbitmq-134 192.168.116.135 rabbitmq-135 hostnamectl set-hostname rabbitmq-135 yum install -y erlang-23.3.4.1-1.el7.x86_64.rpm yum install -y rabbitmq-server-3.8.14-1.el7.noarch.rpm erl 进入erlang的命令行,查看版本为23 q(). 退出命令行 rabbitmqctl version 查看版本号
1.4 设置集群为镜像模式,集群节点互为对方节点的主节点
1)在rabbitmq-133操作
systemctl enable rabbitmq-server systemctl start rabbitmq-server 安装网页插件,使得集群可以通过网页访问 rabbitmq-plugins enable rabbitmq_management 将主节点的cookie复制到其他2个节点 scp /var/lib/rabbitmq/.erlang.cookie root@192.168.116.134:/var/lib/rabbitmq/.erlang.cookie scp /var/lib/rabbitmq/.erlang.cookie root@192.168.116.135:/var/lib/rabbitmq/.erlang.cookie rabbitmqctl cluster_status 查看集群状态 注意集群名字:加入集群要用到这个 Cluster name: rabbit@rabbitmq-133

2)在rabbitmq-134操作
注意:先从133复制过来的/var/lib/rabbitmq/.erlang.cookie, 然后再启动rabbitmq-server,不然复制过来/var/lib/rabbitmq/.erlang.cookie后重启rabbitmq-server会报错。
安装网页插件,使得集群可以通过网页访问 rabbitmq-plugins enable rabbitmq_management 让cookie信息重新加载 systemctl restart rabbitmq-server systemctl enable rabbitmq-server 加入集群 rabbitmqctl stop_app 停止服务 rabbitmqctl reset 重置数据,会把数据都删除 rabbitmqctl join_cluster rabbit@rabbitmq-133 加入集群 rabbitmqctl start_app 启动服务 rabbitmqctl set_policy ha-all "#" '{"ha-mode":"all"}' 设置集群为镜像模式 rabbitmqctl cluster_status 确认集群状态

3)在rabbitmq-135操作
注意:先从133复制过来的/var/lib/rabbitmq/.erlang.cookie, 然后再启动rabbitmq-server,不然复制过来/var/lib/rabbitmq/.erlang.cookie后重启rabbitmq-server会报错。
安装网页插件,使得集群可以通过网页访问 rabbitmq-plugins enable rabbitmq_management 让cookie信息重新加载 systemctl restart rabbitmq-server systemctl enable rabbitmq-server 加入集群 rabbitmqctl stop_app 停止服务 rabbitmqctl reset 重置数据,会把数据都删除 rabbitmqctl join_cluster rabbit@rabbitmq-133 加入集群 rabbitmqctl start_app 启动服务 rabbitmqctl set_policy ha-all "#" '{"ha-mode":"all"}' 设置集群为镜像模式 rabbitmqctl cluster_status 确认集群状态

1.5 确认集群是否同步
在rabbitmq-133创建一个账户
rabbitmqctl add_user aa 123456 添加账户aa,密码为123456 rabbitmqctl set_user_tags aa administrator 将账户打上最高权限标签 rabbitmqctl set_permissions aa ".*" ".*" ".*" 设置为最高权限 rabbitmqctl list_users

在rabbitmq-134,rabbitmq-135确认账户生成,证明数据同步成功,集群搭建完成
rabbitmqctl list_users


登录网页查看集群状态
http://192.168.116.133:15672/


注意:
设置镜像集群模式其实就是增加一条policy策略而已。也就是说把镜像策略默认应用到交换机、队列上。
如果镜像模式只想对队列生效,可以使用下面的语句:
rabbitmqctl set_policy -p / --apply-to queues my_queue_mirror "^" '{"ha - mode":"all","ha - sync - mode":"automatic"}'
解析:-p / 表示对/这个虚拟主机生效,如果有其他vhost,可以手动指定,默认不指定的话就是对/主机生效;
--apply-to 表示应用到 队列还是交换机,默认不指定就是应用到所有上,可以手动指定应用到queues;
"^" 表示匹配所有队列,也就是说应用到所有queues上,可以使用“^a”,应用到以a开始队列。
默认RabbitMQ的安装目录路径是/var/lib/rabbitmq、默认log路径是/var/log/rabbitmq/
可以自定义RabbitMQ配置
[root@sh-op-mq01 ~]# cd /etc/rabbitmq/
[root@sh-op-mq01 rabbitmq]# vim rabbitmq-env.conf
LOG_BASE=/data/log/rabbitmq //定义RabbitMQ的日志路径 ,然后重启服务
[root@sh-op-mq01 rabbitmq]# mkdir /data/log/rabbitmq
[root@sh-op-mq01 rabbitmq]# chown -R rabbitmq.rabbitmq /data/log/rabbitmq
rabbit-server当前状态:
[root@sh-op-mq01 rabbitmq]# rabbitmqctl status

浙公网安备 33010602011771号