接上一篇:(企业级) 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相关推荐

  1. RabbitMQ 普通集群配置_04

    接上一篇:(企业级) 搭建集群 RabbitMQ SHELL脚本实战_03 文章目录 RabbiMQ简介 RabbiMQ模式 RabbiMQ特点 环境部署总览 一.基础配置及RabbitMQ 安装 1 ...

  2. RabbitMQ 镜像集群队列_集群高可用篇_03

    文章目录 一.普通集群搭建 1. 停止 全部 MQ服务节点 2. 文件(.erlang.cookie)同步 3. 组成集群操作 3. slave 加入集群操作 4. 查看集群状态 5. 访问管控台界面 ...

  3. 从零开始构建一个高可靠的RabbitMQ镜像集群

    从零开始构建一个高可靠的RabbitMQ镜像集群 1.集群环境节点规划如表所示: 1 集群构建 1.停止MQ服务,首先停止3个节点的服务的命令如下: service rabbitmq-server s ...

  4. RabbitMQ镜像集群与ShovelFederation跨集群数据同步

    部署环境与版本 安装包下载地址: Erlang语言依赖下载链接:http://erlang.org/download/otp_src_21.1.tar.gz RabbitMQ 3.7.8版本下载链接: ...

  5. RabbitMQ 镜像集群之同步策略_专栏讲解

    文章目录 一. 基础知识汲取 1.1. 镜像集群简述 1.2. 策略参数说明 1.3. 策略案例 二.HA mode 同步方式 2.1. 参数说明 2.2. 案例 2.3. 命令终端形式 2.4. M ...

  6. haproxy+rabbitmq镜像集群

    HAProxy简介 (1)HAProxy 是一款提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. HAProxy特 ...

  7. rabbitmq镜像集群搭建

    1.安装运行环境 a.curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo ...

  8. 使用 C# sdk 连接 高可用的 rabbitmq 镜像集群

    我们知道rabbitmq是一个专业的MQ产品,而且它也是一个严格遵守AMQP协议的玩意,但是要想高端大气上档次,一定需要拿出高可用的东西出来,这不本篇就跟大家说一下cluster的概念,rabbitm ...

  9. ①RabbitMQ 消息中间件/消息队列、单节点、集群、镜像集群

    文章目录 RabbitMQ 消息中间件/消息队列 1.消息中间件 1.简介 2.作用 消息中间件的两种模式 P2P模式 Rabbitmq Pub/Sub模式(发布/订阅:Topic,可以重复消费) K ...

最新文章

  1. C语言windows编程编写窗口
  2. 使用PHP创建一个REST API(Create a REST API with PHP)
  3. 设置View单个圆角
  4. 使用Docker搭建hadoop集群
  5. mysql日志存储类型_msyql 日志分类、存储、慢查询日志
  6. 如何修改bt tracker服务器,bt tracker服务器
  7. C语言链表与malloc函数
  8. 微信安装正确操作方法
  9. 软件工程 | 第三章 需求分析
  10. vue-echarts教程
  11. Mysql间隔时间查询数据
  12. ni visa pci_VISA/MASTER信用卡在线缴费友邦、保诚步骤!
  13. 安装红蜘蛛软件6.2教师机管理端后,无法显示学生机的解决方法
  14. Tecnomatix plant simulation 进阶--生产系统仿真:Plant Simulation应用教程
  15. 计算机勾兑双绝是谁发明,勾兑大师范玉平之“舌尖上的五粮液”
  16. attribute与parameter区别
  17. java面向对象(封装、重载、构造、继承)
  18. 初探Java设计模式5:一文了解Spring涉及到的9种设计模式
  19. python异步的发展历程_深入了解Python的异步IO:概念和历史
  20. (cons '(〇 . 前言) 《为自己写本-Guile-书》)

热门文章

  1. 庄小威、陈志坚等9位科学家分享2100万美元奖金:2019年科学突破奖公布
  2. 拉力测试软件界面,电脑拉力机/电脑控制拉力试验机软件操作界面与功能
  3. Mybatis中Mapper动态代理方式
  4. mongodb学习笔记之增删改查作指令
  5. 技术人生“白天求生存,晚上谋发展”
  6. Hive 外部表关联分区数据
  7. 结构光双目视觉测距原理
  8. 如何构建一个流量无损的在线应用架构 | 专题中篇
  9. 斩获大奖|阿里云PolarDB-X引领云原生分布式数据库新时代
  10. 跑得好好的Java进程,怎么突然就瘫痪了?