docker部署consul集群

2022-08-23 17:06:11 字數 3075 閱讀 2592

sudo docker network create my-consul
sudo docker search consul

sudo docker pull consul

sudo docker run -d --name node1 -h node1 --net my-consul consul agent -server -bootstrap-expect 3 -datacenter dc001
-bootstrap-expect 在乙個datacenter中期望提供的server節點數目,當該值提供的時候,consul一直等到達到指定sever數目的時候才會引導整個集群,該標記不能和bootstrap公用(推薦使用的方式)

join_ip="$(sudo docker inspect -f '}}}' node1)"
join_ip 設定節點1的ip,方便後面使用

sudo docker run -d --name node2 -h node2 --net my-consul consul agent -server -join $join_ip -datacenter=dc001

sudo docker run -d --name node3 -h node3 --net my-consul consul agent -server -join=$join_ip -datacenter=dc001

consul後的引數用等於或者空格都可以比如上面我寫的-datacenter dc001,這裡我寫的-datacenter=dc001

-server 此引數表明是建立伺服器,不加就是建立客戶端

sudo docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp --name node4 -h node4 --net my-consul consul agent -ui -client=0.0.0.0 -join=$join_ip -datacenter=dc001
-ui 在埠8500上啟動consul的web ui

-client 將consul的客戶端繫結到指定ip,預設為127.0.0.1,這裡設定為0.0.0.0,即不限制ip,讓容器外也能訪問到

-advertise:通知展現位址用來改變我們給集群中的其他節點展現的位址,預設情況下-bind位址就是展現位址,然而也存在一些路由位址是不能受約束的,這時候會啟用乙個不同的位址來**,如果這個位址不能路由,這個路由將不能被加入集群

-bootstrap:用來控制乙個server是否在bootstrap模式,在乙個datacenter中只能有乙個server處於bootstrap模式,當乙個server處於bootstrap模式時,可以自己選舉為raft leader,在乙個節點的模式下這種方式很重要,否則在集群中的一致性不能保證,不推薦在集群中應用這個標識

-bootstrap-expect:在乙個datacenter中期望提供的server節點數目,當該值提供的時候,consul一直等到達到指定sever數目的時候才會引導整個集群,該標記不能和bootstrap公用(推薦使用的方式)

-bind:該位址用來在集群內部的通訊,集群內的所有節點到位址都必須是可達的,預設是0.0.0.0,這意味著consulo會使用第乙個可用的私有ip位址,consul可以使用tcp和udp並且可以使用共同的埠,如果存在防火牆,這兩者協議必須是允許的。

-client:consul繫結在哪個client位址上,這個位址提供http、dns、rpc等服務,預設是127.0.0.1,只允許迴路連線。rpc位址用於consul命令,比如consul members可以查詢當前執行的consul**

-config-file:明確的指定要載入哪個配置檔案,檔案下的所有配置會合併在一起進行載入

-config-dir:配置檔案目錄,裡面所有以.json結尾的檔案都會被載入

-data-dir:提供乙個目錄用來存放agent的狀態,所有的agent允許都需要該目錄,該目錄必須是穩定的,系統重啟後都繼續存在

-dc:該標記控制agent執行的datacenter的名稱,預設是dc1

-encrypt:指定secret key,使consul在通訊時進行加密,key可以通過consul keygen生成,同乙個集群中的節點必須使用相同的key

-http-port:http api偵聽埠,預設埠8500,可以在環境變數中進行設定,非常有用,可以用於與consul進行通訊

-retry-join:和join類似,但是允許你在第一次失敗後進行嘗試。

-retry-interval:兩次join之間的時間間隔,預設是30s

-retry-max:嘗試重複join的次數,預設是0,也就是無限次嘗試

-log-level:consul agent啟動後顯示的日誌資訊級別。預設是info,可選:trace、debug、info、warn、err。跟蹤 除錯 詳情 警告 錯誤,可以通過consul monitor使用任何級別,也可以通過重啟載入新的配置級別

-node:節點在集群中的名稱,在乙個集群中必須是唯一的,預設是該節點的主機名(代表乙個機器)

-pid-file:提供乙個路徑來存放pid檔案,可以使用該檔案進行sigint/sighup(關閉/更新)agent

-protocol:consul使用的協議版本 consul -v

-rejoin:使consul忽略先前的離開,在再次啟動後仍舊嘗試加入集群中。

-server:定義agent執行在server模式還是client模式,提供時即為server端,每個集群至少有乙個server並且每台機器上不要超過5個dataceter.所有伺服器採用一致性演算法raft保證資料一致,確保在故障的情況下的可用性。

-syslog:開啟系統日誌功能,只在linux/osx上生效

-ui-dir:提供存放web ui資源的路徑,該目錄必須是可讀的

Docker 容器部署 Consul 集群

consul 提供了分布式系統的服務發現和配置的解決方案。基於go語言實現。並且在git上開放了原始碼。consul還包括了分布式一致協議的實現,健康檢查和管理ui。docker 的簡單介紹,可以參考前面一篇文章。配合docker來做應用容器,用consul 來做集群的服務發現和健康檢查,並且還可以...

基於Docker的Consul集群部署

近年微服務架構在網際網路應用領域中愈來愈火,引入微服務主要解決了單體應用多個模組的緊耦合 無法擴充套件和運維困難等問題。微服務架構就是按照功能粒度將業務模組進行垂直拆分,對單體應用本身進行服務化和元件化,每個元件單獨部署為小應用 從 到 微服務與微服務之間通過 進行互動,同時為了支援水平擴充套件 效...

Docker部署Consul配置過程解析

執行命令 docker run d name consul p 8500 8500 consul 埠說明 掛載說明 consul data 持久化資料儲存 consul config 配置檔案 consul 配置 注意 瀏覽器開啟 http 公網ip 8500 集群部署 啟動4個consul age...