RabbitMQ叢集搭建

2020-08-12 09:49:50

搭建RabbitMQ叢集

步驟一:安裝RabbitMQ;

步驟二:加入RabbitMQ節點到叢集;

步驟一:安裝RabbitMQ
#docker pull rabbitmq:management
docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:management

docker run -d --hostname rabbit2 --name myrabbit2 -p 5673:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:management

docker run -d --hostname rabbit3 --name myrabbit3 -p 5674:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:management

主要參數:

  • -p 15672:15672 management 介面管理存取埠
  • -p 5672:5672 amqp 存取埠
  • –link 容器之間連線Erlang Cookie 值必須相同,也就是一個叢集內 RABBITMQ_ERLANG_COOKIE 參數的值必須相同。因爲 RabbitMQ 是用Erlang實現的,Erlang Cookie 相當於不同節點之間通訊的金鑰,Erlang節點通過交換 Erlang Cookie 獲得認證。

3、加入節點到叢集

設定節點1:

#docker exec -it myrabbit1 bash
#rabbitmqctl stop_app
#rabbitmqctl reset
#rabbitmqctl start_app
#exit

設定節點2,加入到叢集:

#docker exec -it myrabbit2 bash
#rabbitmqctl stop_app
#rabbitmqctl reset
#rabbitmqctl join_cluster --ram rabbit@rabbitmq_host1
#rabbitmqctl start_app
#exit

設定節點3,加入到叢集:

#docker exec -it myrabbit3 bash
#rabbitmqctl stop_app
#rabbitmqctl reset
#rabbitmqctl join_cluster --ram rabbit@rabbitmq_host1
#rabbitmqctl start_app
#exit

主要參數:
–ram 表示設定爲記憶體節點,忽略次參數預設爲磁碟節點。該設定啓動了3個節點,1個磁碟節點和2個記憶體節點。

設定好之後,使用 http://ip:15672 進行存取,預設賬號密碼:guest/guest

在这里插入图片描述
以看到,已經有多個節點了。

RabbitMQ映象叢集部署

1、策略policy概念

使用RabbitMQ映象功能,需要基於RabbitMQ策略來實現,策略policy是用來控制和修改羣集範圍的某個vhost佇列行爲和Exchange行爲。策略policy就是要設定哪些Exchange或者queue的數據需要複製、同步,以及如何複製同步。

爲了使佇列成爲映象佇列,需要建立一個策略來匹配佇列,設定策略有兩個鍵「ha-mode和 ha-params(可選)」。ha-params根據ha-mode設定不同的值,下表說明這些key的選項。
在这里插入图片描述
2、新增策略

登錄rabbitmq管理頁面 ——> guest——> Policies ——> Add / update a policy
在这里插入图片描述
name:隨便取,策略名稱
Pattern:^ 匹配符,只有一個^代表匹配所有
Definition:ha-mode=all 爲匹配型別,分爲3種模式:all(表示所有的queue)

或者使用命令:
#rabbitmqctl set_policy ha-all 「^」 ‘{「ha-mode」:「all」}’

3、檢視效果

此策略會同步所在同一VHost中的交換器和佇列數據。設定好policy之後,使用 http://ip:15672 再次進行存取,可以看到佇列映象同步。
在这里插入图片描述