以前幾篇文章簡要的介紹了一下rabbitmq的使用場景和特性,可是對rabbitmq的集羣和網絡分區這塊沒有說起到。本文主要介紹一下rabbitmq 集羣的搭建過程,包括相應的命令使用,關於rabbitmq的網絡分區,後面再總結。git
本篇文章要點:docker
docker 主要用來解決什麼問題?bash
docker 主要經過將程序和運行環境打包到一塊兒,解決部署的環境依賴問題,真正作到跨平臺的分發與使用。cookie
docker 經常使用概念介紹:
docker 容器: docker 容器從形態上看是運行在虛擬機上的一個進程,該進程加入了資源的隔離和限制。網絡
docker 鏡像:相比容器而言,docker鏡像是一個相對靜態的概念,能夠看作是容器對應的文件系統。app
容器和鏡像時能夠相互轉換的:運維
docker 鏡像倉庫:存儲docker 鏡像的地方,能夠與maven的倉庫作類比。maven
docker 的常見操做:
docker info : 查看docker 運行狀態以及版本相關信息的概念,是整個docker daemon 守護進程運行情況的縮影,包括容器個數,鏡像個數,daemon 版本,使用的存儲驅動等信息。 docker pull :從docker 鏡像倉庫拉取鏡像
docker push: 提交鏡像到鏡像倉庫 (和git的操做命令很相似)
docker ps :查看容器(運行的docker進程)
docker run :運行docker 鏡像
docker start/stop: 啓停docker 容器 docker build :構建Docker鏡像 docker tag:給鏡像打標籤 docker exec :在docker 容器類執行命令ui
關於每一個命令的相關參數和選項有不少的資料對這塊作介紹,這裏就不囉嗦了。spa
固然針對docker 還有不少知識,好比dockerfile 的相關指令,docker 網絡類型,存儲驅動類型,docker compose ,docker swarm 等等偏運維的知識點特別多,後續在對docker 的實踐總結中再細說。
docker 搭建rabbitmq 集羣:
docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq
docker run -d --hostname rabbit2 --name myrabbit2 -p 5673:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq
docker run -d --hostname rabbit3 --name myrabbit3 -p 5674:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq
複製代碼
注意:RABBITMQ_ERLANG_COOKIE 集羣中不一樣節點的erlang cookie值要相同
設置節點1:
docker exec -it myrabbit1 bash rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
設置節點2:
docker exec -it myrabbit2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
設置節點3:
docker exec -it myrabbit2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
複製代碼
設置好以後,使用http://物理機ip:15672 進行訪問了,默認帳號密碼是guest/guest 啓動了3個節點,1個磁盤節點和2個內存節點。
##總結 本文只是簡單的介紹了一下經過docker搭建一個簡單的集羣的相關步驟和命令。關於rabbitmq網絡分區的相關機制,後續文章再進一步介紹。