前言
之前幾篇文章簡要的介紹了一下rabbitmq的使用場景和特性,但是對rabbitmq的叢集和網路分割槽這塊沒有提及到。本文主要介紹一下rabbitmq 叢集的搭建過程,包括相應的命令使用,關於rabbitmq的網路分割槽,後面再總結。
本篇文章要點:
- docker 使用簡單介紹
- 使用docker 搭建rabbitmq 叢集
docker 使用簡單介紹:
- 問:什麼是docker?
- 答: docker 是容器化技術的一種實現,它是一個輕量級、行動式、與外界隔離的容器,也是一個可以在容器中很方便地構建、傳輸、執行應用的引擎。和傳統的虛擬化技術不同的是,Docker 引擎並不虛擬出一臺虛擬機器,而是直接使用宿主機的核心和硬體,直接在宿主機上執行容器內應用。
-
docker 主要用來解決什麼問題?
docker 主要通過將程式和執行環境打包到一起,解決部署的環境依賴問題,真正做到跨平臺的分發與使用。
-
docker 常用概念介紹:
docker 容器: docker 容器從形態上看是執行在虛擬機器上的一個程式,該程式加入了資源的隔離和限制。docker 映象:相比容器而言,docker映象是一個相對靜態的概念,可以看做是容器對應的檔案系統。
容器和映象時可以相互轉換的:
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網路分割槽的相關機制,後續文章再進一步介紹。