RabbitMQ集群搭建

RabbitMQ集群搭建

准备工作

开始本课程之前,先按文章

环境搭建篇–04、虚拟机的克隆与配置

克隆三个虚拟机,修改主机名依次为:RabbitMQ01、RabbitMQ02、RabbitMQ03;修改ip地址依次为192.168.10.201、192.168.10.202、192.168.10.203。今天我们要是用的虚拟机环境就搭建完成了。

RabbitMQ的集群大致分为两类:副本集群镜像集群

副本集群

副本集群架构

在这里插入图片描述

理解:该种架构中,消费者可以从所有节点访问消息队列,但是消息队列仅存储在master节点,slave节点仅仅同步Exchange,如果消费者监听的是slave节点,那么slave节点会跟master节点通信,取得相应的队列消息传递给消费者消费。如果master宕机,无法进行主从切换,该种架构解决的主要问题即:当集群中某一时刻master节点宕机,可以对消息队列进行备份,所以该架构又称之为主备架构

该架构如果master宕机slave不会转正,因此rabbitMQ服务无法再对外提供服务,所以该架构不满足高可用的特性

集群搭建

集群规划
node1:192.168.10.201   master    主节点
node2:192.168.10.202   salve01   副本集节点01
node2:192.168.10.203   salve02   副本集节点02
配置ip映射
配置master主机

以master主机为例,使用vim命令打开hosts,添加以下配置

192.168.10.201 RabbitMQ01
192.168.10.202 RabbitMQ02
192.168.10.203 RabbitMQ03

在这里插入图片描述

远程同步slave

执行命令scp /etc/hosts root@RabbitMQ02:/etcscp /etc/hosts root@RabbitMQ03:/etc

在这里插入图片描述

期间有两处要注意,其一是否确定继续远程连接,选择yes;其二要输入远程机器的密码;

同步成功后,我们查看slave01的hosts文件

在这里插入图片描述

可以看到文件已经同步成功。按照上述操作,同步slave02机器即可

安装RabbitMQ
上传rpm

在这里插入图片描述

同步rpm到slave

在这里插入图片描述

安装rpm

按照erlang、socat、rabbitmq的顺序在三台机器上依次执行rpm -ivh **.rpm命令安装上面三个rpm

在这里插入图片描述

拷贝配置文件

分别在三台机器上执行命令cp /usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

修改配置文件

分别在三台机器上执行命令vim /etc/rabbitmq/rabbitmq.config,修改行如下

在这里插入图片描述

启动RabbitMQ的插件管理功能

在三台机器上执行以下命令rabbitmq-plugins enable rabbitmq_management,执行结果如下图则说明插件管理服务启动成功

在这里插入图片描述

启动并查看状态

三台机器上一次执行命令systemctl start rabbitmq-serversystemctl status rabbitmq-server

在这里插入图片描述

浏览器访问管理界面

依次输入地址http://192.168.10.201:15672http://192.168.10.202:15672http://192.168.10.203:15672,使用guest/guest用户名密码登录

在这里插入图片描述

同步.erlang.cookie
关闭RabbitMQ服务

同步**.erlang.cookie**之前记得首先关闭RabbitMQ服务,三台机器依次执行systemctl stop rabbitmq-server,然后使用命令systemctl status rabbitmq-server查看状态

在这里插入图片描述

同步.erlang.cookie

我们这里以master的cookie为主,执行命令scp /var/lib/rabbitmq/.erlang.cookie root@RabbitMQ02:/var/lib/rabbitmq/scp /var/lib/rabbitmq/.erlang.cookie root@RabbitMQ03:/var/lib/rabbitmq/同步master的.erlang.cookie到salve中

在这里插入图片描述

启动master

集群的启动方式跟单机有所区别,官方建议我们使用命令rabbitmq-server -detached,这种方式是后台启动方式,并没有启动界面管理功能,这时候我们访问界面是访问不到的。依次在三台机器上执行该命令启动RabbitMQ服务

将slave加入到集群

走到这里终于拨开云雾见青天了,这里开始正式搭建集群,首先要确保两个从机是关闭的(不包括master),如果不确定可以执行关闭命令rabbitmqctl stop_app。最后在slave执行命令rabbitmqctl join_cluster rabbit@RabbitMQ01

在这里插入图片描述

启动slave

slave加入到master之后就可以执行命令rabbitmqctl start_app启动两台slave服务器

在这里插入图片描述

这里注意的是通过命令rabbitmqctl start_app的方式启动服务并不是以后台的方式启动的,最后控制台也打印出了cmpleted with 3 plugins这说明管理界面也被加载了,这会更改整个集群的状态。我们之前之前我们的master是以后台方式启动的,并不能访问管理界面,现在我们再去看下master的管理界面已经可以打开了,而且显示出了集群目前的状态

在这里插入图片描述

现在我们可以在任意节点执行命令rabbitmqctl cluster_status来查看当前集群的状态

在这里插入图片描述

  • nodes:节点显示当前集群所有的节点
  • running_nodes:显示当前集群中正在运行的节点
  • cluster_name:就是当前的master节点

镜像集群

镜像集群队列机制就是将队列在三个节点之间设置主从关系,消息会在三个节点之间进行自动同步,且如果其中一个节点不可用,并不会导致消息丢失或服务不可用的情况,提升MQ集群的整体高可用性

镜像集群是通过上面我们配置的副本集群的基础上配置而来

镜像集群架构

在这里插入图片描述

配置集群架构

策略说明

上面说了镜像集群是通过配置来实现的,配置主要是策略的配置,线面对策略进行一下简要的说明

rabbitmqctl set_policy [-p <vhost>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern> <definition>
  • [-p vhost]: 可选参数,针对指定vhost下的queue进行设置

  • [–priority ]:可选参数,policy的优先级,一般不写

  • [–apply-to ]:可选参数,指定策略的应用对象,是应用于交换机还是应用于队列,一般不写

  • :policy的名称

  • :queue的匹配模式(正则表达式)

  • :镜像定义,包括三个部分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:进行队列中消息的同步方式,有效值为automatic和manual

查看当前策略

在集群中的任一节点执行命令rabbitmqctl list_policies,查看当前集群的策略

在这里插入图片描述

可以看到当前集群中只有默认的一个虚拟主机且没有配置任何策略

添加策略

添加策略之前我们先新建一个hello队列

在这里插入图片描述

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

在任一节点执行上述命令后,再次查看管理界面

在这里插入图片描述

可对外提供服务的节点可以理解为最多几个主机宕机或是整个服务瘫痪

上图node+2意思是我们上面搭建的副本集群通过上面的策略配置已经变成了镜像集群,如果master节点宕机,那么slave就会自动切换成master,这样就实现了集群的高可用

删除策略

删除策略使用命令rabbitmqctl clear_policy <name> 比如我们删除上面的策略ha-all的命令就是rabbitmqctl clear_policy ha-all

在这里插入图片描述

这里需要注意是,如果策略被全部删除,那么镜像集群又会回退到副本集群,这时候该集群也就失去了高可用的特性,如下图

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潮汐先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值