docker下部署單節點的consul,最重要的是在run consul時,配置-bootstrap-expect=1
docker run --name consul1 -d -p 5902:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 10.109.30.246:5901/daily_docker/consul:1.4.5 agent -server -bootstrap-expect=1 -ui -bind=0.0.0.0 -client=0.0.0.0
consul agent
命令的常用選項,如下:
- -data-dir
- 作用:指定agent儲存狀態的數據目錄
- 這是所有agent都必須的
- 對於server尤其重要,因為他們必須持久化集群的狀態
- -config-dir
- 作用:指定service的配置文件和檢查定義所在的位置
- 通常會指定為”某一個路徑/consul.d”(通常情況下,.d表示一系列配置文件存放的目錄)
- -config-file
- 作用:指定一個要裝載的配置文件
- 該選項可以配置多次,進而配置多個配置文件(后邊的會合並前邊的,相同的值覆蓋)
- -dev
- 作用:創建一個開發環境下的server節點
- 該參數配置下,不會有任何持久化操作,即不會有任何數據寫入到磁盤
- 這種模式不能用於生產環境(因為第二條)
- -bootstrap-expect
- 作用:該命令通知consul server我們現在准備加入的server節點個數,該參數是為了延遲日志復制的啟動直到我們指定數量的server節點成功的加入后啟動。
- -node
- 作用:指定節點在集群中的名稱
- 該名稱在集群中必須是唯一的(默認采用機器的host)
- 推薦:直接采用機器的IP
- -bind
- 作用:指明節點的IP地址
- 有時候不指定綁定IP,會報
Failed to get advertise address: Multiple private IPs found. Please configure one.
的異常
- -server
- 作用:指定節點為server
- 每個數據中心(DC)的server數推薦至少為1,至多為5
- 所有的server都采用raft一致性算法來確保事務的一致性和線性化,事務修改了集群的狀態,且集群的狀態保存在每一台server上保證可用性
- server也是與其他DC交互的門面(gateway)
- -client
- 作用:指定節點為client,指定客戶端接口的綁定地址,包括:HTTP、DNS、RPC
- 默認是127.0.0.1,只允許回環接口訪問
- 若不指定為-server,其實就是-client
- -join
- 作用:將節點加入到集群
- -datacenter(老版本叫-dc,-dc已經失效)
- 作用:指定機器加入到哪一個數據中心中
10.109.30.246:5901/daily_docker/consul:1.4.5是本地的docker鏡像源,run時會從源倉庫拉取鏡像啟動
注:5902的端口映射是因為防火牆問題,防火牆的策略只暴露5900-XXXX的端口。
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' consul1 //獲取容器IP