Docker學習-Docker搭建Consul集羣

1.環境準備

Linux機器三臺 網絡互通配置能夠參考 http://www.javashuo.com/article/p-nslmchyi-mp.htmlhtml

192.168.50.21node

192.168.50.22web

192.168.50.23docker

 關閉三臺機器防火牆,若是是一臺機器則沒有關係,多臺機器須要關閉。json

systemctl stop firewalld.service            #中止firewall
systemctl disable firewalld.service        #禁止firewall開機啓動

 

2.安裝Docker

每臺機器上安裝下Docker,若是鏡像比較慢能夠開啓阿里雲的docker鏡像下載器。參考http://www.javashuo.com/article/p-uotajtzk-bn.htmlbootstrap

1. 安裝docker:服務器

yum install -y docker

 

2. 啓動docker: 網絡

service docker start

 

3. 驗證docker是否安裝成功:ui

docker version

2.安裝Consul鏡像

 1. 在三臺機器上安裝consul鏡像(默認安裝最新版本)阿里雲

docker pull consul

 

 2. 驗證安裝

docker images

 

3.啓動Consul

1.啓動參數詳解

–net=host docker參數, 使得docker容器越過了net namespace的隔離,免去手動指定端口映射的步驟
-server consul支持以server或client的模式運行, server是服務發現模塊的核心, client主要用於轉發請求
-advertise 將本機私有IP傳遞到consul
-retry-join 指定要加入的consul節點地址,失敗後會重試, 可屢次指定不一樣的地址
-client 指定consul綁定在哪一個client地址上,這個地址可提供HTTP、DNS、RPC等服務,默認是>127.0.0.1
-bind 綁定服務器的ip地址;該地址用來在集羣內部的通信,集羣內的全部節點到地址必須是可達的,>默認是0.0.0.0
allow_stale 設置爲true則代表可從consul集羣的任一server節點獲取dns信息, false則代表每次請求都會>通過consul的server leader
-bootstrap-expect 數據中心中預期的服務器數。指定後,Consul將等待指定數量的服務器可用,而後>啓動羣集。容許自動選舉leader,但不能與傳統-bootstrap標誌一塊兒使用, 須要在server模式下運行。
-data-dir 數據存放的位置,用於持久化保存集羣狀態
-node 羣集中此節點的名稱,這在羣集中必須是惟一的,默認狀況下是節點的主機名。
-config-dir 指定配置文件,當這個目錄下有 .json 結尾的文件就會被加載,詳細可參考https://www.consul.io/docs/agent/options.html#configuration_files
-enable-script-checks 檢查服務是否處於活動狀態,相似開啓心跳
-datacenter 數據中心名稱
-ui 開啓ui界面
-join 指定ip, 加入到已有的集羣中

2.端口詳解 

8500 : http 端口,用於 http 接口和 web ui訪問;
8300 : server rpc 端口,同一數據中心 consul server 之間經過該端口通訊;
8301 : serf lan 端口,同一數據中心 consul client 經過該端口通訊; 用於處理當前datacenter中LAN的gossip通訊;
8302 : serf wan 端口,不一樣數據中心 consul server 經過該端口通訊; agent Server使用,處理與其餘datacenter的gossip通訊;
8600 : dns 端口,用於已註冊的服務發現;

3. 啓動consul服務,192.168.50.21

若是是一臺機器能夠在如下代碼中加入 -p 替換默認端口,-p 8501:8500

docker run -d --name consul21 -h=consul21 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -bind=192.168.50.21 -ui -bootstrap-expect=3

4.啓動consul服務,192.168.50.22,加入21

docker run -d --name consul22 -h=consul22 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -join=192.168.50.21 -ui

5.啓動consul服務,192.168.50.23,加入21

docker run -d --name consul22 -h=consul22 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -join=192.168.50.21 -ui

6.檢查每臺機器的consul運行狀態

docker ps

 若是出現  Exited 9 seconds ago,則關閉全部機器防火牆後試試

docker rm -f consul22  #刪除容器

systemctl stop firewalld.service            #中止firewall
systemctl disable firewalld.service        #禁止firewall開機啓動

 

7.查看consul運行日誌

docker logs consul22

日誌中出現 

2019/11/15 05:58:44 [WARN] raft: no known peers, aborting election
2019/11/15 05:58:46 [ERR] agent: failed to sync remote state: No cluster leader

三臺機器重啓好後,則不會報錯,與啓動時參數 -bootstrap-expect=3 數據中心中預期的服務器數 有關

 

瀏覽

http://192.168.50.21:8500/ui/ 

http://192.168.50.22:8500/ui/

http://192.168.50.23:8500/ui/

踩坑點:防火牆。。。

相關文章
相關標籤/搜索