集群進入某個節點查看指令:rabbitmqctl cluster_status
單機版:
docker run -d --name rabbit \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \ -p 15672:15672 \ -p 5672:5672 \ -p 25672:25672 \ -p 61613:61613 \ -p 1883:1883 \ rabbitmq:management
集群安裝 --hostname rabbit1指定主機名 本機安裝 一機多例也可以不指定
鏡像集群可以把RABBITMQ_ERLANG_COOKIE='rabbitcookie' \都寫成一樣的,這樣就可以保證每個節點一致,從而達成集群 docker run -d \
--hostname rabbit1 \
--name myrabbit1 \
-p 15672:15672 -p 5672:5672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \ -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' \
rabbitmq:management docker run -d \
--hostname rabbit2 \
--name myrabbit2 \
-p 5673:5672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \ --link myrabbit1:rabbit1 \
-e RABBITMQ_ERLANG_COOKIE='rabbitcookie' \
rabbitmq:management docker run -d \
--hostname rabbit3 \
--name myrabbit3 \
-p 5674:5672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \ --link myrabbit1:rabbit1 \
--link myrabbit2:rabbit2 \
-e RABBITMQ_ERLANG_COOKIE='rabbitcookie' \
rabbitmq:management –link:將多個容器鏈接到一起 erlang Cookie值必須相同,也就是RABBITMQ_ERLANG_COOKIE參數的值必須相同
容器端口5672 被5673 5674 映射
4.綁定節點
rabbitmqctl reset 清空當前節點數據防止綁定失敗
rabbitmqctl join_cluster --ram rabbit@rabbit1 都關聯rabbit1進行綁定
設置節點1:
docker exec -it myrabbit1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit
設置節點2:參數--ram
表示設置為內存節點
docker exec -it myrabbit2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit
設置節點3:參數--ram
表示設置為內存節點
docker exec -it myrabbit3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit
查看你集群狀態:進入某個實例節點 輸入這個指令即可查看集群信息 rabbitmqctl cluster_status

再加一個集群點:
docker run -d \
--hostname rabbit4 \
--name myrabbit4 \
-p 5675:5672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \ --link myrabbit1:rabbit1 \
--link myrabbit2:rabbit2 \
--link myrabbit3:rabbit3 \
-e RABBITMQ_ERLANG_COOKIE='rabbitcookie' \
rabbitmq:management
docker exec -it myrabbit4 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbit1
rabbitmqctl start_app
exit
剔除4節點,進入rabbit4的鏡像 執行如下操作
rabbitmqctl stop_app
rabbitmqctl reset
搭建rabitmq附加參數
--log-opt max-size=10m 日志文件單個最大10M
--log-opt max-file=3 日志文件最多保留3個
-v /data/rabbitmq01:/var/lib/rabbitmq:z \
如下樣例:引用:https://blog.csdn.net/qq_40378034/article/details/89788708 這偏文章的見解
docker run -d --hostname rabbitmq1 \
--add-host="rabbitmq1":192.168.3.92 \ 所在機器的IP
--add-host="rabbitmq2":192.168.3.93 \ 所在機器的IP
--name rabbit1\
--restart=always\
-p "4369:4369" \
-p "5672:5672" \
-p "15672:15672" \
-p "25672:25672" \
-v /data/rabbitmq01:/var/lib/rabbitmq:z \
-e RABBITMQ_DEFAULT_USER=jffwuser \
-e RABBITMQ_DEFAULT_PASS=jffw123 \
-e RABBITMQ_ERLANG_COOKIE='jffwcookie' \
erikopa/rabbitmq-management-x-delayed-message
給節點添加用戶其權限:
rabbitmqctl -n rabbit1 add_user wb admin rabbitmqctl -n rabbit1 set_user_tags wb administrator rabbitmqctl -n rabbit1 set_permissions -p / wb ".*" “.*” ".*"
查看用戶列表:
rabbitmqctl list_users
引用:https://blog.csdn.net/qq_40378034/article/details/89788708 這偏文章的見解
RabbitMQ中的每一個節點,不管是單一節點系統或者集群中的一部分,要么是內存節點,要么是磁盤節點。
內存節點將所有的隊列、交換機、綁定關系、用戶、權限和vhost的元數據定義都存儲在內存中,而磁盤節點則將這些信息存儲到磁盤中。
單節點的集群中必然只有磁盤類型的節點,否則當重啟RabbitMQ之后,所有關於系統的配置信息都會丟失。不過在集群中,可以選擇配置部分節點為內存節點,這樣可以獲得更高的性能
RabbitMQ只要求在集群中至少有一個磁盤節點,所有其他節點可以是內存節點。當節點加入或者離開集群時,它們必須將變更通知到至少一個磁盤節點。
如果只有一個磁盤節點,而且剛好是它崩潰了,那么集群可以繼續發送或者接收消息,但是不能執行創建隊列、交換機、綁定關系、用戶,以及更改權限、添加或者刪除集群節點的操作了。
也就是說,如果集群中唯一的磁盤節點崩潰,集群仍然可以保持運行,但是直到將該節點恢復到集群前,無法更改任何東西。所以在建立集群的時候應該保證有兩個或者多個磁盤節點的存在
在內存節點重啟后,它們會連接到預先配置的磁盤節點,下載當前集群元數據的副本。當在集群中添加內存節點時,確保告知其所有的磁盤節點。
只要內存節點可以找到至少一個磁盤節點,那么它就能在重啟后重新加入集群中為了確保集群信息的可靠性,建議全部使用磁盤節點
多機器部署多應用:rabbitcookie 里面的值要保持一致