使用Docker部署RabbitMQ集羣html
本文重點介紹的Docker的使用,以及如何部署RabbitMQ集羣,最基礎的Docker安裝,本文不作過多的描述,讀者能夠自行度娘。docker
Windows10上Docker的安裝bash
由於本人用的是Windows系統,全部推薦一個不錯的安裝文章,詳見:blog.csdn.net/xiaoping091…服務器
注意:設置阿里雲Docker Hub加速,配置Registry mirrors地址「j0andt2p.mirror.aliyuncs.com/」。cookie
阿里雲的鏡像市場:dev.aliyun.com/search.htmlapp
1.鏡像地址ssh
RabbitMQ Docker官方認證鏡像地址:dev.aliyun.com/detail.html…阿里雲
2.安裝命令.net
安裝以前,切記把Docker Hub設置爲阿里雲的加速,方便安裝。日誌
docker pull rabbitmq:3.6.15-management
注意使用後綴爲"-management"的鏡像版本,是包含網頁控制檯的。
3.查看安裝
使用命令:docker images查看下載的鏡像,以下圖所示:
容器中止:docker stop 容器名稱 啓動容器:docker start 容器名稱 刪除容器:docker rm 容器名稱 刪除鏡像:docker rmi 鏡像名稱 查看運行的全部容器:docker ps 查看全部容器:docker ps -a 容器複製文件到物理機:docker cp 容器名稱:容器目錄 物理機目錄 物理機複製文件到容器:docker cp 物理機目錄 容器名稱:容器目錄
簡單的進入Docker容器的方法分爲3種:
attach有一個缺點,當鏈接終止的時候,或者使用exit以後,容器就會退出後臺運行,因此不適合生產環境使用。既然很差用,咱們在這裏就不過多的介紹它了。
按照以前咱們使用liunx的習慣,使用ssh鏈接服務器彷佛是一個很誘人的答案,但這樣作並不優雅,也不是最佳的實踐方式,詳情點擊查看:blog.csdn.net/bolg_hero/a…
exec無疑是咱們現階段最好的實踐方案,一塊兒來看它是怎麼使用的。
進入docker命令:
docker exec -it /bin/bash
其中/bin/bash 也多是/bin/sh.
使用docker exec --help查看更多命令,和命令說明。
退出docker:
exit
docker run -d --hostname localhost --name myrabbit -p 15672:15672 -p 5672:5672 rabbitmq:3.6.15-management
參數說明:
啓動完成以後,使用:docker ps 查看程序運行狀況。
使用:http://宿主ip:15672 訪問,用戶名密碼使用默認:guest/guest.
這樣咱們就可使用,http://宿主ip:15672 和 http://宿主ip:15673 進行訪問了,默認帳號密碼依舊是guest/guest.
步驟一:安裝RabbitMQ;
步驟二:加入RabbitMQ節點到集羣;
docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management
docker run -d --hostname rabbit2 --name myrabbit2 -p 5673:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management
docker run -d --hostname rabbit3 --name myrabbit3 -p 5674:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management
具體的參數含義,參見上文「啓動RabbitMQ」部分。
注意點:
設置節點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@rabbit1 rabbitmqctl start_app exit
參數「--ram」表示設置爲內存節點,忽略次參數默認爲磁盤節點。
設置節點3,加入到集羣:
docker exec -it myrabbit3 bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster --ram rabbit@rabbit1 rabbitmqctl start_app exit
設置好以後,使用http://物理機ip:15672 進行訪問了,默認帳號密碼是guest/guest,效果以下圖:
啓動了3個節點,1個磁盤節點和2個內存節點。
有些特殊的狀況,好比已經運行了一段時間的幾個單個物理機,咱們在以前沒有設置過相同的Erlang Cookie值,如今咱們要把單個的物理機部署成集羣,實現咱們須要同步Erlang的Cookie值。
1.爲何要配置相同的erlang cookie?
由於RabbitMQ是用Erlang實現的,Erlang Cookie至關於不一樣節點之間相互通信的祕鑰,Erlang節點經過交換Erlang Cookie得到認證。
2.Erlang Cookie的位置
要想知道Erlang Cookie位置,首先要取得RabbitMQ啓動日誌裏面的home dir路徑,做爲根路徑。使用:「docker logs 容器名稱」查看,以下圖:
因此Erlang Cookie的所有路徑就是「/var/lib/rabbitmq/.erlang.cookie」。
注意:每一個人的erlang cookie位置可能不一樣,必定要查看本身的home dir路徑。
3.複製Erlang Cookie到其餘RabbitMQ節點
獲取到第一個RabbitMQ的Erlang Cookie以後,只須要把這個文件複製到其餘RabbitMQ節點便可。
物理機和容器之間複製命令以下:
設置Erlang Cookie文件權限:「chmod 600 /var/lib/rabbitmq/.erlang.cookie」。
長按二維碼,關注做者更多動態