文章目錄
- 前言
- 一、RabbitMQ集群的搭建
- 1.拉取鏡像
- 二、RabbitMQ的配置
- 1.啟動RabbitMQ
- 2.搭建RabbitMQ集群
- 2.1 運行容器
- 2.2 配置節點到集群
- 2.3 配置成功
- 總結
- 1.Erlang Cookie的作用
- 2.Erlang Cookie的位置
前言
RabbitMQ這款訊息佇列中間件產品本身是基于Erlang撰寫,Erlang語言天生具備分布式特性(通過同步Erlang集群各節點的magic cookie來實作),
因此,RabbitMQ天然支持Clustering,這使得RabbitMQ本身不需要像ActiveMQ、Kafka那樣通過ZooKeeper分別來實作HA方案和保存集群的元資料,集群是保證可靠性的一種方式,同時可以通過水平擴展以達到增加訊息吞吐量能力的目的,下面先來看下RabbitMQ集群的整體方案:

一、RabbitMQ集群的搭建
1.拉取鏡像
docker pull rabbitmq:3-management
注意使用后綴為"-management"的鏡像版本,是包含網頁控制臺的,


二、RabbitMQ的配置
1.啟動RabbitMQ
docker run -d --hostname myrabbit --name myrabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-management
docker run -d --hostname myrabbit1 --name myrabbit1 -p 15673:15672 -p 5673:5672 rabbitmq:3-management
引數說明:
- -d 后臺行程運行
- hostname RabbitMQ主機名稱
- name 容器名稱
- -p port:port 本地埠:容器埠
- -p 15672:15672 http訪問埠
- -p 5672:5672 amqp訪問埠
啟動完成之后,使用:docker ps 查看程式運行情況,
使用:http://宿主ip:15672 訪問,用戶名密碼使用默認:guest/guest.

這樣我們就可以使用,http://宿主ip:15672 和 http://宿主ip:15673 進行訪問了,默認賬號密碼依舊是guest/guest

2.搭建RabbitMQ集群
2.1 運行容器
docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3-management
docker run -d --hostname rabbit2 --name myrabbit2 -p 5673:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3-management
docker run -d --hostname rabbit3 --name myrabbit3 -p 5674:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3-management
注意點:
- 多個容器之間使用“–link”連接,此屬性不能少,
- Erlang Cookie值必須相同,也就是RABBITMQ_ERLANG_COOKIE引數的值必須相同,

2.2 配置節點到集群
物理節點
docker exec -it myrabbit1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit
記憶體節點1
docker exec -it myrabbit2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit
記憶體節點2
docker exec -it myrabbit3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit
2.3 配置成功
配置成功會出現如圖三個節點

總結
1.Erlang Cookie的作用
因為RabbitMQ是用Erlang實作的,Erlang Cookie相當于不同節點之間相互通訊的秘鑰,Erlang節點通過交換Erlang Cookie獲得認證,只需要保證每個節點Erlang Cookie相同就好
2.Erlang Cookie的位置
Erlang Cookie的路徑就是“/var/lib/rabbitmq/.erlang.cookie”,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423508.html
標籤:其他
