RabbitMQ 镜像集群配置_05
接上一篇:(企业级) RabbitMQ 普通集群配置_04
文章目录
- 一、RabbitMQ 策略实战
- 1. 创建RabbitMQ 策略
- 2. ly-01节点查看创建RabbitMQ 策略
- 3. 登录ly-02管控台查看创建RabbitMQ 策略
- 4. 登录ly-03管控台查看创建RabbitMQ 策略
- 二、添加队列测试
- 2.1. 添加队列
- 2.2. Queues菜单-查看添加队列
- 2.3.创建消息
- 2.4. 查看创建的消息
- 2.5. 登录ly-02节点查看创建的消息
- 2.6. 登录ly-03节点查看创建的消息
- 三、破坏性测试 ①
- 3.1. 将ly-01节点的服务关闭
- 3.2. 浏览器验证ly-01节点是否停止
- 3.3. 登录ly-02节点管控台查看消息
- 3.4. 登录ly-03节点管控台查看消息
- 四、破坏性测试 ②
- 4.1. 再将ly-02节点的服务关闭
- 4.2. 浏览器验证ly-02节点是否停止
- 4.3. 登录ly-03管控台
- 4.4. 将ly-01和ly-02的服务再启动起来
- 4.5. 分别登陆3个节点查看消息
- 4.5. 消息同步
- 4.6. 分别登录3个节点查看消息状态
- 五、RabbitMQ 集群脚本
- 5.1. 创建host.info
- 5.2. 编写批量执行命令脚本
- 5.3. 编写批量执行脚本头文件
- 5.4. bash 运行脚本
- 5.5. 赋予脚本可执行权限
- 5.6. 运行脚本
上一篇已经完成RabbitMQ默认集群模式,但并不保证队列的高可用性,尽管交换机、绑定这些可以复制到集群里的任何一个节点,但是队列内容不会复制。虽然该模式解决一项目组节点压力,但队列节点宕机直接导致该队列无法应用,只能等待重启,所以要想在队列节点宕机或故障也能正常应用,就要复制队列内容到集群里的每个节点,必须要创建镜像队列。
镜像队列是基于普通的集群模式
的,然后再添加一些策略,所以你还是得先配置普通集群,然后才能设置镜像队列
,我们就以上面的集群接着做。
一、RabbitMQ 策略实战
设置的镜像队列可以通过开启的网页的管理端,也可以通过命令,建议通过web管控台进行设置,简单高效,效果清晰直观!
1. 创建RabbitMQ 策略
在ly-01节点的控制台上创建策略
(1)点击【admin菜单】–>右侧的【Policies选项】–>左侧最下下边的【Add/update a policy】
(2)按照图中的内容根据自己的需求填写
(3)点击Add policy添加策略
2. ly-01节点查看创建RabbitMQ 策略
3. 登录ly-02管控台查看创建RabbitMQ 策略
如图所示:
4. 登录ly-03管控台查看创建RabbitMQ 策略
如图所示:
二、添加队列测试
在ly-01节点的控制台操作如下:
2.1. 添加队列
(1)点击【Queues菜单】–>左侧下边的【Add a new queue】
(2)输入Name和Arguments参数
的值,别的值默认即可
(3)点击Add queue
2.2. Queues菜单-查看添加队列
将鼠标指向+2可以显示出另外两台消息节点
2.3.创建消息
(1)点击ab队列
按钮
(2)拖动滚动条,点击publish message
(3)填写相关内容
(4)点击Publish message
按钮
2.4. 查看创建的消息
点击Queues按钮,发现ab队列的Ready和Total中多了一条消息记录
2.5. 登录ly-02节点查看创建的消息
2.6. 登录ly-03节点查看创建的消息
三、破坏性测试 ①
3.1. 将ly-01节点的服务关闭
再通过ly-02和ly-03查看消息记录是否还存在。
rabbitmqctl stop_app //停掉ly-01的rabbit应用
- ly-01节点操作记录
[root@ly-01 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@ly-01 ...
[root@ly-01 ~]#
3.2. 浏览器验证ly-01节点是否停止
3.3. 登录ly-02节点管控台查看消息
3.4. 登录ly-03节点管控台查看消息
从中可以看到ab队列已经从之前的+2显示成+1了,而且消息记录是存在的。
四、破坏性测试 ②
4.1. 再将ly-02节点的服务关闭
通过ly-03查看消息记录是否还存在。
rabbitmqctl stop_app //停掉ly02的rabbit应用
ly-02节点操作中记录
[root@ly-02 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@ly-02 ...
[root@ly-02 ~]#
4.2. 浏览器验证ly-02节点是否停止
4.3. 登录ly-03管控台
从中可以看到ab队列和消息记录还是存在的,只是变成了一个节点了。
4.4. 将ly-01和ly-02的服务再启动起来
rabbitmqctl start_app //启动ly-01、ly-02的rabbit应用
ly-01节点操作中记录
[root@ly-01 ~]# rabbitmqctl start_app
Starting node rabbit@ly-01 ...completed with 3 plugins.
[root@ly-01 ~]
ly-02节点操作中记录
[root@ly-02 ~]# rabbitmqctl start_app
Starting node rabbit@ly-02 ...completed with 3 plugins.
[root@ly-02 ~]#
4.5. 分别登陆3个节点查看消息
从中可以看到ab队列后面+2变成了红色,鼠标指上去显示镜像无法同步ly-01和ly-02节点(Unsynchronous mirrors:rabbit@ly-01,rabbit@ly-02)。如果这时候停掉ly-03节点的服务,那么队列里面的消息将会丢失。
4.5. 消息同步
采取的解决办法是选择在ly-02节点上执行同步命令。
ly-02节点操作中记录
rabbitmqctl sync_queue ab //同步ab队列
[root@ly-02 ~]# rabbitmqctl sync_queue ab
Synchronising queue 'ab' in vhost '/' ...
[root@ly-02 ~]#
4.6. 分别登录3个节点查看消息状态
同步完成后,+2又变成了蓝色。
这样,我们就测试了rabbitmq集群的破坏性测试,说明集群配置成功。
五、RabbitMQ 集群脚本
5.1. 创建host.info
#创建hosts文件
vim host.info
#添加以下内容
#格式: ip地址 用户 端口 密码
192.168.43.242 root 22 root
192.168.43.134 root 22 root
192.168.43.228 root 22 root
5.2. 编写批量执行命令脚本
#创建批量执行命令脚本文件
rabbit_cluster.sh
#添加以下内容
#!/bin/bash
COMMAND=$*
HOST_INFO=host.info
for IP in $(awk '/^[^#]/{print $1}' $HOST_INFO); doUSER=$(awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO)PORT=$(awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO)PASS=$(awk -v ip=$IP 'ip==$1{print $4}' $HOST_INFO)expect -c "spawn ssh -p $PORT $USER@$IPexpect {\"(yes/no)\" {send \"yes\r\"; exp_continue}\"password:\" {send \"$PASS\r\"; exp_continue}\"$USER@*\" {send \"$COMMAND\r exit\r\"; exp_continue}}"echo "---------Execute Successful! ----------"
done
5.3. 编写批量执行脚本头文件
#创建批量执行脚本头文件
batch_rabbit_cluster.sh
#添加以下内容
#/!bin/bash
/app/shell_scripts/rabbit_cluster.sh systemctl $1 rabbitmq-server.service
/app/shell_scripts/rabbit_cluster.sh systemctl status rabbitmq-server.service
5.4. bash 运行脚本
#启动RabbitMQ 服务
#格式:bash batch_rabbit_cluster.sh start/stop
bash batch_rabbit_cluster.sh start
#关闭RabbitMQ 服务
bash batch_rabbit_cluster.sh stop
注:没有没有bash权限,请采用下面方式,如果有权限,请跳过!
5.5. 赋予脚本可执行权限
chmod u+x rabbit_cluster.sh
chmod u+x batch_rabbit_cluster.sh
5.6. 运行脚本
#启动RabbitMQ 服务
#格式:./batch_rabbit_cluster.sh start/stop
./batch_rabbit_cluster.sh start
#关闭RabbitMQ 服务
./batch_rabbit_cluster.sh stop
RabbitMQ 镜像集群配置_05相关推荐
- RabbitMQ 普通集群配置_04
接上一篇:(企业级) 搭建集群 RabbitMQ SHELL脚本实战_03 文章目录 RabbiMQ简介 RabbiMQ模式 RabbiMQ特点 环境部署总览 一.基础配置及RabbitMQ 安装 1 ...
- RabbitMQ 镜像集群队列_集群高可用篇_03
文章目录 一.普通集群搭建 1. 停止 全部 MQ服务节点 2. 文件(.erlang.cookie)同步 3. 组成集群操作 3. slave 加入集群操作 4. 查看集群状态 5. 访问管控台界面 ...
- 从零开始构建一个高可靠的RabbitMQ镜像集群
从零开始构建一个高可靠的RabbitMQ镜像集群 1.集群环境节点规划如表所示: 1 集群构建 1.停止MQ服务,首先停止3个节点的服务的命令如下: service rabbitmq-server s ...
- RabbitMQ镜像集群与ShovelFederation跨集群数据同步
部署环境与版本 安装包下载地址: Erlang语言依赖下载链接:http://erlang.org/download/otp_src_21.1.tar.gz RabbitMQ 3.7.8版本下载链接: ...
- RabbitMQ 镜像集群之同步策略_专栏讲解
文章目录 一. 基础知识汲取 1.1. 镜像集群简述 1.2. 策略参数说明 1.3. 策略案例 二.HA mode 同步方式 2.1. 参数说明 2.2. 案例 2.3. 命令终端形式 2.4. M ...
- haproxy+rabbitmq镜像集群
HAProxy简介 (1)HAProxy 是一款提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. HAProxy特 ...
- rabbitmq镜像集群搭建
1.安装运行环境 a.curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo ...
- 使用 C# sdk 连接 高可用的 rabbitmq 镜像集群
我们知道rabbitmq是一个专业的MQ产品,而且它也是一个严格遵守AMQP协议的玩意,但是要想高端大气上档次,一定需要拿出高可用的东西出来,这不本篇就跟大家说一下cluster的概念,rabbitm ...
- ①RabbitMQ 消息中间件/消息队列、单节点、集群、镜像集群
文章目录 RabbitMQ 消息中间件/消息队列 1.消息中间件 1.简介 2.作用 消息中间件的两种模式 P2P模式 Rabbitmq Pub/Sub模式(发布/订阅:Topic,可以重复消费) K ...
最新文章
- C语言windows编程编写窗口
- 使用PHP创建一个REST API(Create a REST API with PHP)
- 设置View单个圆角
- 使用Docker搭建hadoop集群
- mysql日志存储类型_msyql 日志分类、存储、慢查询日志
- 如何修改bt tracker服务器,bt tracker服务器
- C语言链表与malloc函数
- 微信安装正确操作方法
- 软件工程 | 第三章 需求分析
- vue-echarts教程
- Mysql间隔时间查询数据
- ni visa pci_VISA/MASTER信用卡在线缴费友邦、保诚步骤!
- 安装红蜘蛛软件6.2教师机管理端后,无法显示学生机的解决方法
- Tecnomatix plant simulation 进阶--生产系统仿真:Plant Simulation应用教程
- 计算机勾兑双绝是谁发明,勾兑大师范玉平之“舌尖上的五粮液”
- attribute与parameter区别
- java面向对象(封装、重载、构造、继承)
- 初探Java设计模式5:一文了解Spring涉及到的9种设计模式
- python异步的发展历程_深入了解Python的异步IO:概念和历史
- (cons '(〇 . 前言) 《为自己写本-Guile-书》)