RabbitMQ集群搭建&镜像集群

RabbitMQ集群概述
RabbitMQ模式大概分为以下三种:

(1)单一模式。
(2)普通模式(默认的集群模式)。
(3)镜像模式(把需要的队列做成镜像队列,存在于多个节点,属于RabbiMQ的HA方案,在对业务可靠性要求较高的场合中比较适用),要实现镜像模式,需要先搭建一个普通集群模式,在这个模式的基础上再配置镜像模式以实现高可用

RabbitMQ特点:

RabbitMQ的集群节点包括内存节点、磁盘节点。RabbitMQ支持消息的持久化也就是数据写在磁盘上,最合适的方案就是既有内存节点,又有磁盘节点。

实验环境
在这里插入图片描述
安装准备

采用源码安装

#修改主机名,安装依赖环境(都改)

[root@ramq1 ~]# vim /etc/hosts

在这里插入图片描述

[root@ramq1 ~]# cd /etc/yum.repos.d/		---------修改yum源为本地
[root@ramq1 yum.repos.d]# rm -rf *
[root@ramq1 yum.repos.d]# vim local.repo

在这里插入图片描述

[root@ramq1 yum.repos.d]# mount /dev/cdrom /mnt
[root@ramq1 ~]# yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel 

#安装erlang环境

[root@ramq1 ~]# wget http://erlang.org/download/otp_src_21.3.tar.gz
[root@ramq1~]#wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.14/rabbitmq-server-generic-unix-3.7.14.tar.xz

在这里插入图片描述

[root@ramq1 ~]# tar -zxvf otp_src_21.3.tar.gz 
[root@ramq1 ~]# cd otp_src_21.3/
[root@ramq3 otp_src_21.3]# ./configure --prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe
[root@ramq2 otp_src_21.3]# echo $?
0
[root@ramq2 otp_src_21.3]# make && make install

#安装rabbitmq环境

[root@ramq1 ~]# xz -d rabbitmq-server-generic-unix-3.7.14.tar.xz

在这里插入图片描述

[root@ramq1 ~]# tar -xvf rabbitmq-server-generic-unix-3.7.14.tar 
[root@ramq1 ~]# mv rabbitmq_server-3.7.14/ /usr/local/rabbitmq

#设置环境变量

[root@ramq1 ~]# vim /etc/profile

在这里插入图片描述
[root@ramq1 ~]# source /etc/profile
#配置rabbitmq

rm -rf /var/lib/rabbitmq/mnesia/
这个目录,为rabbitmq数据库,有时异常情况出现时,可删除该目录,重新对rabbitmq进行设置即可

[root@ramq1 ~]# rabbitmq-server -detached		-------以后台运行方式启动一定要先启动
[root@ramq1 ~]# rabbitmqctl add_user admin jia1314			--------添加admin用户密码为jia1314
[root@ramq1 ~]# rabbitmqctl set_user_tags admin administrator	--------为admin用户设置为管理员
[root@ramq1 ~]# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"		-----将admin设置为允许远程登录用户
[root@ramq1 ~]# rabbitmq-plugins enable rabbitmq_management		-------启动web管理插件
[root@ramq3 ~]# netstat -lnpt|grep beam			--------查看启动进程

在这里插入图片描述

#localhost:15672,帐号默认为guest,密码guest,此帐号默认只能在本机访问。不建议打开远程访问。你可以创建一个帐户,并设置可以远程访问的角色进行访问
#访问http://192.168.3.1:15672

普通集群搭建

[root@ramq1 ~]# cat .erlang.cookie		------查看自己的cookie
[root@ramq1 ~]# scp .erlang.cookie [email protected]:/root			----传到另外两台
[root@ramq1 ~]# scp .erlang.cookie [email protected]:/root			----通过cookie连接
#节点1开启app,节点2/3关闭app
[root@ramq2 ~]# rabbitmqctl stop_app							
[root@ramq3 ~]# rabbitmqctl stop_app
[root@ramq2 ~]# rabbitmqctl join_cluster --ram rabbit@ramq1			----加入集群
[root@ramq3 ~]# rabbitmqctl join_cluster --ram rabbit@ramq1

默认rabbitmq启动后是磁盘节点,在这个cluster命令下,mq02和mq03是内存节点,mq01是磁盘节点。
如果要使mq02、mq03都是磁盘节点,去掉–ram参数即可 如果想要更改节点类型,可以使用命令rabbitmqctl
change_cluster_node_type disc(ram),前提是必须停掉rabbit应用

[root@ramq1 ~]# rabbitmqctl cluster_status		-----在node1上查看集群状态

在这里插入图片描述

[root@ramq2 ~]# rabbitmqctl start_app			------开启app节点
[root@ramq3 ~]# rabbitmqctl start_app			
#访问http://192.168.3.1:15672

在这里插入图片描述
在这里插入图片描述
#创建队列
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
镜像集群搭建

上面已经完成RabbitMQ默认集群模式,但并不保证队列的高可用性,尽管交换机、绑定这些可以复制到集群里的任何一个节点,但是队列内容不会复制。虽然该模式解决一项目组节点压力,但队列节点宕机直接导致该队列无法应用,只能等待重启,所以要想在队列节点宕机或故障也能正常应用,就要复制队列内容到集群里的每个节点,必须要创建镜像队列。
镜像队列是基于普通的集群模式的,然后再添加一些策略,所以你还是得先配置普通集群,然后才能设置镜像队列,我们就以上面的集群接着做。

#创建RabbitMQ策略
在这里插入图片描述
在这里插入图片描述

Name:策略名称
Pattern:匹配的规则,这里表示匹配a开头的队列,如果是匹配所有的队列,那就是^.
Definition:使用ha-mode模式中的all,也就是同步所有匹配的队列。问号链接帮助文档

在这里插入图片描述

登录到节点2/3可以看到有相同的策略

在这里插入图片描述
在这里插入图片描述
#创建队列
在这里插入图片描述

Name:队列名称
Durability:队列是否持久化
Node:消息队列的节点
Auto delete:自动删除
Arguments:使用的策略类型

#创建消息
在这里插入图片描述

点ad进去

在这里插入图片描述
在这里插入图片描述

2-Persistent:表示持久化
Headers:随便填写即可
Properties:点击问号,选择一个消息ID号
Payload:消息内容

在这里插入图片描述

创建成功

在这里插入图片描述

可以看到多了一条消息

#测试

关掉ramq1,查看ramq2消息状态
[root@ramq1 ~]# rabbitmqctl stop_app

在这里插入图片描述

可以看到由原来的+2—>+1,ready也多了一条
再将ramq2关掉,查看ramq3消息状态

在这里插入图片描述

可以看到+1都没有了,如果再把ramq3关掉的话消息就真的丢了
将ramq1和ramq2重新启动

在这里插入图片描述

变为红色无法同步
此时需要手动进行同步

[root@ramq1 ~]# rabbitmqctl sync_queue ab
[root@ramq2 ~]# rabbitmqctl sync_queue ab

在这里插入图片描述
成功

发布了62 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41674452/article/details/90262851