125.RabbitMQ(三):集群架构,mq镜像集群搭建

目录

一、普通集群(副本集群)

1.普通集群的特点(普通集群就是弟弟)

2.搭建普通集群

(1)搭建

(2)登陆mq

(3)普通集群的缺点

二、镜像集群

1.架构图

2.配置集群架构

三、打赏请求

扫描二维码关注公众号,回复: 13460306 查看本文章

RabbitMQ的集群:普通集群(副本集群),镜像集群

一、普通集群(副本集群)

1.普通集群的特点(普通集群就是弟弟)

  • 从节点不能同步主节点中的队列数据
  • 消费者可以订阅从节点,从节点通过向主节点查询数据然后向消费者提供服务

2.搭建普通集群

(1)搭建

#启动docker
systemctl start docker

#拉取镜像
docker pull rabbitmq:3.7-management

--------------------------------------
#注:如果拉取失败
#如果拉取失败
vi /etc/resolv.conf


#在里面添加如下
nameserver 8.8.8.8
nameserver 114.114.114.114
--------------------------------------

#创建文件夹
mkdir -p /home/soft/rabbitmqcluster
cd /home/soft/rabbitmqcluster/

#创建文件夹
mkdir rabbitmq01 rabbitmq02 rabbitmq03

#启动rabbitmq01
docker run -d --hostname rabbitmq01 --name rabbitmqCluster01 -v /home/soft/rabbitmqcluster/rabbitmq01:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' rabbitmq:3.7-management

#启动rabbitmq02
docker run -d --hostname rabbitmq02 --name rabbitmqCluster02 -v /home/soft/rabbitmqcluster/rabbitmq02:/var/lib/rabbitmq -p 15673:15672 -p 5673:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie'  --link rabbitmqCluster01:rabbitmq01 rabbitmq:3.7-management

#启动rabbitmq03
docker run -d --hostname rabbitmq03 --name rabbitmqCluster03 -v /home/soft/rabbitmqcluster/rabbitmq03:/var/lib/rabbitmq -p 15674:15672 -p 5674:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie'  --link rabbitmqCluster01:rabbitmq01 --link rabbitmqCluster02:rabbitmq02  rabbitmq:3.7-management

#重启rabbitmq01
docker exec -it rabbitmqCluster01 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit


#重启rabbitmq02
docker exec -it rabbitmqCluster02 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app
exit

#重启rabbitmq03
docker exec -it rabbitmqCluster03 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app
exit

(2)登陆mq

http://192.168.210.131:15672/#/

http://192.168.210.131:15673/#/

http://192.168.210.131:15674/#/

账户名密码:guest

(3)普通集群的缺点

当我们主节点宕机之后,从节点没法工作。而且从节点没法复制主节点的队列数据。出故障后没法故障转移。

比如我先运行一个hello模式的队列:

然后我让主节点宕机:

宕机后直接点挂了,从节点是不可用状态:

二、镜像集群

因为普通集群缺点太大,真正没法用,我们一般使用镜像集群。

1.架构图

2.配置集群架构

#策略说明
rabbitmqctl set_policy [-p <vhost>] [--priority <priority >] [--apply-to <apply-to>] <name> <pattern> <definition>

注:
-p Vhost:    可选参数,针对指定vhost下的queue进行设置
Name:        policy的名称
Pattern:      queue的匹配模式(正则表达式)
Definition:  镜像定义,包含三个部分ha-mode,ha-params,ha-sync-mode
              ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes
                    all:表示在及群众所有的节点上进行镜像
                    exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
                    nodes:表示在指定个数的节点上进行镜像,节点名称由ha-params指定
              ha-params:ha-mode模式需要用到的参数
              ha-sync-mode:进行队列中消息同步方式,有效值为auutomatic和manual
              priority:可选参数,policy优先级

#查看当前策略
rabbitmqctl list_policies

#添加策略
#策略正则表达式为"^"表示所有匹配所有队列名称
#^hello:匹配hello开头队列
rabbitmqctl set_policy ha-all '^hello' '{"ha-mode":"all","ha-sync-mode":"automatic"}'

#删除策略
rabbitmqctl clear_policy ha-all

三、打赏请求

如果本篇博客对您有所帮助,打赏一点呗,谢谢了呢~

猜你喜欢

转载自blog.csdn.net/qq_40594696/article/details/118548439
今日推荐