使用docker 搭建rabbitmq 叢集

zxhy發表於2019-04-19

前言

之前幾篇文章簡要的介紹了一下rabbitmq的使用場景和特性,但是對rabbitmq的叢集和網路分割槽這塊沒有提及到。本文主要介紹一下rabbitmq 叢集的搭建過程,包括相應的命令使用,關於rabbitmq的網路分割槽,後面再總結。

本篇文章要點:

  • docker 使用簡單介紹
  • 使用docker 搭建rabbitmq 叢集

docker 使用簡單介紹:

  • 問:什麼是docker?
  • 答: docker 是容器化技術的一種實現,它是一個輕量級、行動式、與外界隔離的容器,也是一個可以在容器中很方便地構建、傳輸、執行應用的引擎。和傳統的虛擬化技術不同的是,Docker 引擎並不虛擬出一臺虛擬機器,而是直接使用宿主機的核心和硬體,直接在宿主機上執行容器內應用。

使用docker 搭建rabbitmq 叢集

  • docker 主要用來解決什麼問題?

    docker 主要通過將程式和執行環境打包到一起,解決部署的環境依賴問題,真正做到跨平臺的分發與使用。

  • docker 常用概念介紹:
    docker 容器: docker 容器從形態上看是執行在虛擬機器上的一個程式,該程式加入了資源的隔離和限制。

    docker 映象:相比容器而言,docker映象是一個相對靜態的概念,可以看做是容器對應的檔案系統。

    容器和映象時可以相互轉換的:

使用docker 搭建rabbitmq 叢集

docker 映象倉庫:儲存docker 映象的地方,可以與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 容器類執行命令

    關於每個命令的相關引數和選項有很多的資料對這塊做介紹,這裡就不囉嗦了。

    當然針對docker 還有很多知識,比如dockerfile 的相關指令,docker 網路型別,儲存驅動型別,docker compose ,docker swarm 等等偏運維的知識點特別多,後續在對docker 的實踐總結中再細說。

    docker 搭建rabbitmq 叢集:

    • docker 安裝執行rabbitmq;
    • 加入rabbitmq節點到叢集

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值要相同

加入rabbitmq 到叢集:

 設定節點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網路分割槽的相關機制,後續文章再進一步介紹。

相關文章