docker 啟動rabbitmq


docker 啟動rabbitmq

rabbitmq官方推薦的啟動方式是通過docker進行啟動。因為不用安裝Erlang語音等環境

rabbitmq官網:https://www.rabbitmq.com/download.html

啟動命令

單節點啟動

docker run -it --rm -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

這是官方的例子

多節點啟動

普通集群

#節點一,主節點,創建-v映射目錄
docker run -d --hostname rabbit_host1 --name rabbitmq1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_NODENAME=rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password  -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' --privileged=true -v /usr/local/rabbitmq/1/lib:/var/lib/rabbitmq -v /usr/local/rabbitmq/1/log:/var/log/rabbitmq rabbitmq:management
​
#節點二,創建-v映射目錄
docker run -d --hostname rabbit_host2 --name rabbitmq2  -p 15673:15672 -p 5673:5672 --link rabbitmq1:rabbit_host1 -e RABBITMQ_NODENAME=rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' --privileged=true -v /usr/local/rabbitmq/2/lib:/var/lib/rabbitmq -v /usr/local/rabbitmq/2/log:/var/log/rabbitmq rabbitmq:management
​
#節點三,創建-v映射目錄
docker run -d --hostname rabbit_host3 --name rabbitmq3 -p 15674:15672 -p 5674:5672 --link rabbitmq1:rabbit_host1 --link rabbitmq2:rabbit_host2 -e RABBITMQ_NODENAME=rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' --privileged=true -v /usr/local/rabbitmq/3/lib:/var/lib/rabbitmq -v /usr/local/rabbitmq/3/log:/var/log/rabbitmq rabbitmq:management

參數說明:

--hostname 自定義Docker容器的 hostname
​
--link 容器之間連接,link不可或缺,使得三個容器能互相通信
​
--privileged=true 使用該參數,container內的root擁有真正的root權限,否則容器出現permission denied
​
-v 宿主機和容器路徑映射
​
參數 RABBITMQ_NODENAME,缺省 Unix*: rabbit@$HOSTNAME
參數 RABBITMQ_DEFAULT_USER=admin
參數 RABBITMQ_DEFAULT_PASS=xdclass.net168
​
Erlang Cookie 值必須相同,也就是一個集群內 RABBITMQ_ERLANG_COOKIE 參數的值必須相同, 相當於不同節點之間通訊的密鑰,erlang.cookie是erlang的分布式token文件,集群內各個節點的erlang.cookie需要相同,才可以互相通信

上面是啟動了三個節點,就是三個rabbitmq,但仍沒有形成集群。

配置普通集群

節點一配置集群
docker exec -it rabbitmq1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit


節點二加入集群,--ram是以內存方式加入,忽略該參數默認為磁盤節點。
docker exec -it rabbitmq2 bash
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@rabbit_host1
rabbitmqctl start_app
exit


節點三加入集群,--ram是以內存方式加入,忽略該參數默認為磁盤節點。

docker exec -it rabbitmq3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit_host1
rabbitmqctl start_app
exit

#查看集群節點狀態,配置啟動了3個節點,1個磁盤節點和2個內存節點

rabbitmqctl cluster_status

上述步驟完成后就配置好普通集群了。

集群分為兩類:普通集群和鏡像集群。

相同點:都擁有各個節點的元數據信息。

不同點:鏡像集群會復制各個節點的交換機、隊列和信息。而普通集群僅僅擁有交換機和隊列,信息不會進行復制,即擁有信息的節點一旦宕機,集群內部就無法消費該信息。

配置鏡像集群

去到rabbitmq控制台,一般是:ip地址:15672

image-20210522091555580

Admin->Policies

image-20210522091718524

參數說明:

ha-mode:同步節點模式
- all:全部
- exactly:設置同步節點數
- nodes:設置特定同步節點,用配置ha-params說明

ha-sync-mode:同步模式
- manual:手動
- automatic:自動

一般如同所示設置即可

完成后,就完成rabbitmq多節點的部署了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM