1. 程式人生 > >【原】docker部署單節點consul

【原】docker部署單節點consul

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

&n