0
点赞
收藏
分享

微信扫一扫

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


文章目录

  • ​​一、 基础知识汲取​​
  • ​​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种 的演化形式​​


RabbitMQ 镜像集群之同步策略_专栏讲解_数据

一、 基础知识汲取
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-mode

ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes

all:表示在集群中所有的节点上进行镜像

exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定

nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定

ha-params:ha-mode模式需要用到的参数

ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual

priority:可选参数,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管控台设置

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

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管控台设置

RabbitMQ 镜像集群之同步策略_专栏讲解_参数说明_03

RabbitMQ 镜像集群之同步策略_专栏讲解_参数说明_04


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管控台设置

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

五、策略区配正则

RabbitMQ 镜像集群之同步策略_专栏讲解_参数说明_06

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

RabbitMQ 镜像集群之同步策略_专栏讲解_参数说明_07

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

RabbitMQ 镜像集群之同步策略_专栏讲解_数据_08

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

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


举报

相关推荐

0 条评论