RabbitMQ(三)叢集
阿新 • • 發佈:2020-11-16
一、rabbitmq節點
1、節點分類
1)磁碟節點:配置資訊和元資訊儲存在磁碟上
2)記憶體節點:配置資訊和元資訊儲存在記憶體中,RAM節點不提供更高的訊息速率
2、節點的選擇
1)在單機情況下,節點必須為磁碟節點
2)在叢集模式下,至少有一個節點是磁碟節點
如果唯一磁碟的磁碟節點崩潰了,不能進行如下操作:
- 不能建立佇列
- 不能建立交換器
- 不能建立繫結
- 不能新增使用者
- 不能更改許可權
- 不能新增和刪除叢集幾點
- 佇列元資料:佇列名稱和它的屬性;
- 交換器元資料:交換器名稱、型別和屬性;
- 繫結元資料:一張簡單的表格展示瞭如何將訊息路由到佇列;
- vhost元資料:為vhost內的佇列、交換器和繫結提供名稱空間和安全屬性;
- 使用者元資料
- 許可權元資料
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三、docker部署映象模式-params指定 nodes:表示在指定的節點上進行映象,節點名稱通過ha-params指定 ha-params:作為引數,為ha-mode的補充 ha-sync-mode:進行佇列中訊息的同步方式,有效值為automatic和manual priority:可選引數,policy的優先順序
例項: rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}' --apply-to all
cat>>/etc/hosts<<EOF10.31.4.45 test-prd-10-31-4-45 10.31.4.96 test-prd-10-31-4-96 EOF systemctl enable docker systemctl start docker docker run --name rabbitmq-3.7.16 \ -e RABBITMQ_DEFAULT_PASS="12345678" \ -e RABBITMQ_DEFAULT_USER="root" \ -v /data/rabbitmq:/var/lib/rabbitmq \ -e RABBITMQ_ERLANG_COOKIE="NLZZHgKCFB123XSVWXGD" \ --network=host -d harbor.tenserpay.xyz/op/rabbitmq:3.7.16-management 在節點10.31.4.45 docker exec abf6fe67724e rabbitmqctl stop_app docker exec abf6fe67724e rabbitmqctl join_cluster rabbit@test-prd-10-31-4-96 docker exec abf6fe67724e rabbitmqctl start_app 在其中一個節點執行同步策略 docker exec 51189b820642 rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}' --apply-to all