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開機啓動
每臺機器上安裝下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
1. 在三臺機器上安裝consul鏡像(默認安裝最新版本)阿里雲
docker pull consul
2. 驗證安裝
docker images
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 數據中心中預期的服務器數 有關
瀏覽
踩坑點:防火牆。。。