docker裏安裝consul,以及遇到的坑

docker pull consul:1.6.4

版本隨意

 

啓動命令

docker run --name consul1 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 consul agent -server -bootstrap-expect 1 -ui -bind=0.0.0.0 -client=0 .0.0.0

這裏有個坑,注意這個數字1,代表的是單機的意思。2是集羣

一開始寫成2,導致web界面出不來。百度還說部分谷歌瀏覽器打不開,火狐打不開,這我就不清楚了。也在這裏一併寫下來 

 

主要是後面加-client 0.0.0.0,Consul將接受綁定到所有接口的選項

 

參數在這裏

–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, 加入到已有的集羣中


如果要搭建集羣可以參考下面的鏈接

https://blog.csdn.net/junmoxi/article/details/90521818

 

最後訪問虛擬機的地址

http://192.168.184.128:8500/ui/dc1/services

我遇到個坑,就是微服務註冊時,有個紅叉報錯

Get http://192.168.184.128:8006/actuator/health: read tcp 172.17.0.2:33932->192.168.184.128:8006: read: connection reset by peer

 

原因SpringBoot服務和Consul不在同一臺導致Consul訪問不到SpringBoot的服務。

在yml文件里加多個配置即可

spring.cloud.consul.discovery.prefer-ip-address=true # 表示註冊時使用IP而不是hostname

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章