文章目录

  • 一、 基础知识汲取
    • 1.1. 镜像集群简述
    • 1.2. 策略参数说明
    • 1.3. 策略案例
  • 二、HA mode 同步方式
    • 2.1. 参数说明
    • 2.2. 案例
    • 2.3. 命令终端形式
    • 2.4. MQ管控台设置
    • 2.5. 队列同步
    • 2.5. 优缺点
  • 三、Ha async mode 同步方式(推荐使用)
    • 3.1. 参数说明
    • 3.2. 案例
    • 3.3. 命令终端形式
    • 3.4. MQ管控台设置
  • 四、ha-mode:nodes镜像到到集群中指定节点
    • 4.1. 参数说明
    • 4.2. 案例
    • 4.3. 命令终端形式
    • 4.4. MQ管控台设置
  • 五、策略区配正则
    • 5.1. 以LFY_开头的队列应用此策略
    • 5.2. 以_LOG结尾的队列应用此策略
    • 5.3. 第3种,以QUEUE_开头的队列应用此策略。但是指定同步的节点,是第2种 的演化形式

一、 基础知识汲取
1.1. 镜像集群简述

镜像集群模式是在RabbitMQ Cluster默认集群的基础上添加策略搭建完成的

RabbitMQ默认集群模式,并不包管队列的高可用性,尽管队列信息,交换机、绑定这些可以复制到集群里的任何一个节点,然则队列内容不会复制,固然该模式解决一项目组节点压力,但队列节点宕机直接导致该队列无法应用,只能守候重启,所以要想在队列节点宕机或故障也能正常应用,就要复制队列内容到集群里的每个节点,须要创建镜像队列。
跟普通集群模式不一样的是,在镜像集群模式下,你创建的 queue,无论元数据还是 queue 里的消息都会存在于多个实例上,就是说,每个 RabbitMQ 节点都有这个 queue 的一个完整镜像,包含 queue 的全部数据的意思。然后每次你写消息到 queue 的时候,都会自动把消息同步到多个实例的 queue 上。

1.2. 策略参数说明
rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]-p Vhost: 可选参数,针对指定vhost下的queue进行设置Name: policy的名称Pattern: queue的匹配模式(正则表达式)Definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-modeha-mode:指明镜像队列的模式,有效值为 all/exactly/nodesall:表示在集群中所有的节点上进行镜像exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定ha-params:ha-mode模式需要用到的参数ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manualpriority:可选参数,policy的优先级请注意一个事实,镜像配置的pattern 采用的是正则表达式匹配,也就是说会匹配一组。
1.3. 策略案例

常见的3中设置:

#格式:rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]
#第1种
rabbitmqctl set_policy policy3l "^" '{"ha-mode":"all"}'
#第2种
rabbitmqctl set_policy policy2 "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
#第3种
rabbitmqctl set_policy -p "/" policy3 "^QUEUE" '{"ha-mode":"nodes","ha-params":["rabbit@mq-002","rabbit@mq-003"],"ha-sync-mode":"automatic"}'
二、HA mode 同步方式
2.1. 参数说明

One of all (mirror to all nodes in the cluster), exactly (mirror to a set number of nodes) or nodes (mirror to an explicit list of nodes). If you choose one of the latter two, you must also set ha-params.
HA mode的值共有三个

.all:镜像同步到集群队列的所有节点
.exactly:按个数同步到集群中的一个或多个节点
. nodes:具体的节点名称
如果选择后面两个选项的的值,还需要设置ha-params参数。

2.2. 案例
所有队列设置为镜像队列,即队列会被复制到集群各个节点,
各个集群节点交换机、队列、队列内容都保持一致。
2.3. 命令终端形式
rabbitmqctl set_policy policy3l "^" '{"ha-mode":"all"}'
2.4. MQ管控台设置

2.5. 队列同步

集群节点宕机或停电重启后,queue-1队列需要手动同步

rabbitmqctl sync_queue queue-1
2.5. 优缺点

自动同步交换机队列,但是集群某节点宕机或者停电,都需要手动同步,有点麻烦,万一忘了怎么办呢?对吧

三、Ha async mode 同步方式(推荐使用)
3.1. 参数说明

这个需要详细说明的,默认的情况下。当节点断线后那么这个节点就已经是落后的版本,当我们再去启动节点的时候数据我们需要去手动的同步,这自然是不好的,做到自动化是最完美的,所以设置成automatic是最佳选择

新建策略ha-all,ha-mode: all 镜像到集群中所有的节点
Pattern: ^
Apply to :Exchanges and queues
ha-mode: all //应用于所有节点
ha-sync-mode:automatic
Priority 0

3.2. 案例
所有队列设置为镜像队列,即队列会被复制到集群各个节点,
各个集群节点交换机、队列、队列内容都保持一致。
3.3. 命令终端形式
rabbitmqctl set_policy policy2 "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
3.4. MQ管控台设置


ha-all应用效果
queue-1节点后的+2表示镜像到2个节点,因为ha-mode:all,共有集群共有三个节点,+2表示将队列镜像到另外两个节点

四、ha-mode:nodes镜像到到集群中指定节点
4.1. 参数说明

新建策略policy3,
Pattern: ^QUEUE_
Apply to :queues
Definition
ha-mode: nodes
ha-params: rabbit@mq-002
rabbit@mq-003
ha-sync-mode: automatic
Priority 0

4.2. 案例
所有队列设置为镜像队列,即队列会被复制到集群指定节点,
各个集群节点交换机、队列、队列内容都保持一致。
4.3. 命令终端形式
rabbitmqctl set_policy -p "/" policy3 "^QUEUE" '{"ha-mode":"nodes","ha-params":["rabbit@mq-002","rabbit@mq-003"],"ha-sync-mode":"automatic"}'
4.4. MQ管控台设置

五、策略区配正则

5.1. 以LFY_开头的队列应用此策略

5.2. 以_LOG结尾的队列应用此策略

5.3. 第3种,以QUEUE_开头的队列应用此策略。但是指定同步的节点,是第2种 的演化形式

RabbitMQ 镜像集群之同步策略_专栏讲解相关推荐

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

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

  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 镜像集群配置_05

    接上一篇:(企业级) RabbitMQ 普通集群配置_04 文章目录 一.RabbitMQ 策略实战 1. 创建RabbitMQ 策略 2. ly-01节点查看创建RabbitMQ 策略 3. 登录l ...

  5. haproxy+rabbitmq镜像集群

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

  6. rabbitmq镜像集群搭建

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

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

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

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

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

  9. RabbitMQ+haproxy+keeplived 高可用负载均衡高可用镜像集群队列_01

    文章目录 一.RabbitMQ 集群节点说明 二.服务器hosts文件统一修改 三.RabbitMQ 镜像集群队列搭建部署 一.RabbitMQ 集群节点说明 服务器IP hostname 节点说明 ...

最新文章

  1. chrome插件网站
  2. linux module原理,NodeJS的模块原理
  3. mysql聚合函数rollup和cube
  4. c语言语音控制游戏文献,C语言课程设计-基于C语言推箱子游戏设计-毕业论文文献.doc...
  5. 华为高管涉嫌受贿已被带走调查
  6. 多字节常量char m='\abcd'
  7. 米思齐Mixly图形化编程---RFID智能门禁
  8. 在线生成app icon图标
  9. 美国电话卡原生卡和虚商卡区别
  10. 解压缩软件:WinRAR V5.71
  11. 熊乃学 计算机,吴谋博士研究成果在权威期刊在线发表
  12. kali获取同局域网设备的图片信息
  13. java catch中throw_Java的catch块中throw e和throw new Exception(e)有什么区别?
  14. Error: L6218E: Undefined symbol LED_Init (referred from main.o).
  15. java 创建word文件_java基于feemarker 生成word文档(超级简单)
  16. c语言:“有一个已排好序的数组,要求输入一个数后,按原来的规律将它插入数组中” 的程序分析及详细代码
  17. 软件需求说明及对应的测试用例,测试用例与需求的对应关系 - Mr.南柯 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  18. C++11之正则表达式(regex_match、regex_search、regex_replace)
  19. 对Slim 框架进行总结 一
  20. C语言结构体——位段概念的讲解

热门文章

  1. 老铁,邀请你来免费学习人工智能!!!
  2. 爱因斯坦:量子物理与抽象数学(广义)
  3. lucene分布式索引
  4. java多线程笔记补充之线程的生命周期
  5. TCP为什么是四次挥手
  6. ROS(3)订阅者subscriber编程实现
  7. Spring Cloud Gateway一次请求调用源码解析
  8. DSW:面向AI研发的集成开发平台
  9. VIPKID上云 解决多云Web统一安全防护问题
  10. 5分钟带你看懂 GCanvas渲染引擎的演进