1.拉取鏡像
docker pull consul:latest
2.啟動第一個consul節點
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 2 -ui -bind=0.0.0.0 -client=0 .0.0.0
3.查看consul1的ip地址,把后面要添加的consul加入到這個ip中
docker inspect --format='{{.NetworkSettings.IPAddress}}' consul1
4.啟動consul2節點,加入到上面的consul1的地址
docker run --name consul2 -d -p 8501:8500 consul agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -join 172.17.0.4
5.啟動consul3節點,加入到上面的consul1的地址
docker run --name consul3 -d -p 8502:8500 consul agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -join 172.17.0.4
6.查看集群信息
在瀏覽器中輸入 localhost:8500
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, 加入到已有的集群中