搭建RabbitMQ集群(Docker)


前一篇搭建RabbitMQ集群(通用)只是把筆記直接移動過來了,因為我的機器硬盤已經滿了,實在是開不了那么虛擬機。

還好,我的Linux中安裝了Docker,這篇文章就簡單介紹一下Docker中搭建RabbitMQ集群吧。當然,理念還是通用的,包括命令啥的。只是操作方式有所不同而已。

我將在今后的Docker系列文章中介紹Docker的倉庫、鏡像、容器等,這里不做過多的介紹。

我的Docker已經安裝3.7.8-management鏡像  *帶management后綴的鏡像版本,支持網頁控制台。

1)、創建多個RabbitMQ容器

  ①

docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.7.8-management

  ②

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

  ③

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

  *

  --link  連接多個容器

  -d  后台進程運行

  --hostname  RabbitMQ主機名稱

  --name  容器名稱

  -p port:port  本地端口:容器端口

  -e  參數設置

2)、將RabbitMQ節點加入到集群中

  ①

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

  ②

  

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

  ③

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

*  --ram  表示設置為內存節點,忽略該參數則默認為磁盤節點。

使用http://ip:15672 進行訪問了,賬號密碼默認為guest&guest

 補充:  

  如何將已經運行的多台RabbitMQ部署為集群?

    1.同步它們之間的erlang cookie

    RabbitMQ是通過Erlang實現的,Erlang Cookie相當於不同節點之間相互通訊的秘鑰,Erlang節點通過交換Erlang Cookie獲得認證。

      ①通過RabbitMQ容器啟動日志里面的home dir路徑作為根路徑獲取Erlang Cookie所在位置。使用:“docker logs 容器名稱/ID”查看

      

          所以Erlang Cookie的全部路徑就是“/var/lib/rabbitmq/.erlang.cookie”。      

      ②復制Erlang Cookie到其他RabbitMQ節點    

      獲取到第一個RabbitMQ的Erlang Cookie之后,只需要把這個文件復制到其他RabbitMQ節點即可。

      物理機和容器之間復制命令如下:

      •     容器復制文件到物理機:docker cp 容器名稱:容器目錄 物理機目錄
      •     物理機復制文件到容器:docker cp 物理機目錄 容器名稱:容器目錄

      設置Erlang Cookie文件權限:“chmod 600 /var/lib/rabbitmq/.erlang.cookie”。

      ③將節點加入集群


免責聲明!

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



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