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種 的演化形式
一、 基礎知識汲取
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-12.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 镜像集群之同步策略_专栏讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flowable 表名sql mysq
- 下一篇: SQL中where 1 = 1的用处