consul 安裝部署

2021-09-19 12:02:53 字數 4010 閱讀 8493

一、概述

consul是google開源的乙個使用go語言開發的服務發現、配置管理中心服務。內建了服務註冊與發現框 架、分布一致性協議實現、健康檢查、key/value儲存、多資料中心方案,不再需要依賴其他工具(比如zookeeper等)。服務部署簡單,只有乙個可執行的二進位制的包。每個節點都需要執行agent,他有兩種執行模式server和client。每個資料中心官方建議需要3或5個server節點以保證資料安全,同時保證server-leader的選舉能夠正確的進行

客戶端模式(client)

consul的client模式,就是客戶端模式。是consul節點的一種模式,這種模式下,所有註冊到當前節點的服務會被**到server,本身是不持久化這些資訊

服務端模式(server)

server表示consul的server模式,表明這個consul是個server,這種模式下,功能和client都一樣,唯一不同的是,它會把所有的資訊持久化的本地,這樣遇到故障,資訊是可以被保留的

集群模式 (server-leader)

consul 集群主節點,它需要負責同步註冊的資訊給其它的server,同時也要負責各個節點的健康監測

raft(raft 節點資料一致性演算法)

server節點之間的資料一致性保證,一致性協議使用的是raft,而zookeeper用的paxos,etcd採用的也是raft

服務發現協議

consul採用http和dns協議,etcd只支援http

服務註冊

consul支援兩種方式實現服務註冊,一種是通過consul的服務註冊http api,由服務自己呼叫api實現註冊,另一種方式是通過json個是的配置檔案實現註冊,將需要註冊的服務以json格式的配置檔案給出。consul官方建議使用第二種方式

服務發現

consul支援兩種方式實現服務發現,一種是通過http api來查詢有哪些服務,另外一種是通過consul agent 自帶的dns(8600埠),網域名稱是以name.service.consul的形式給出,name即在定義的服務配置檔案中,服務的名稱。dns方式可以通過check的方式檢查服務

服務間的通訊協議

consul使用gossip協議管理成員關係、廣播訊息到整個集群,他有兩個gossip  pool(lan pool和wan pool),lan pool是同乙個資料中心內部通訊的,wan pool是多個資料中心通訊的,lan pool有多個,wan pool只有乙個

二 .consul集群安裝

#unzip consul_1.2.3_linux_amd64.zip

#cp -a consul  /usr/bin

consul必須啟動agent才能使用,有兩種啟動模式server和client,還有乙個官方自帶的ui。server用與持久化服務資訊,集群官方建議3或5個節點。client只用與於server互動。ui可以檢視集群情況的

環境準備:(服務端)

3個server節點:192.168.1.101,192.168.1.102,192.168.1.103

cn1:

#consul agent  -bootstrap-expect 2  -server   -data-dir /data/consul0 -node=cn1 -bind=192.168.1.102 -config-dir /etc/consul.d -enable-script-checks=true  -datacenter=dc1 

cn2:

#consul agent    -server  -data-dir /data/consul0 -node=cn2 -bind=192.168.1.101 -config-dir /etc/consul.d -enable-script-checks=true  -datacenter=dc1  -join 192.168.1.102

cn3:

#consul agent  -server  -data-dir /data/consul0 -node=cn3 -bind=192.168.1.100 -config-dir /etc/consul.d -enable-script-checks=true  -datacenter=dc1  -join 192.168.1.102

引數解釋:

-bootstrap-expect:集群期望的節點數,只有節點數量達到這個值才會選舉leader。

-server: 執行在server模式

-data-dir:指定資料目錄,其他的節點對於這個目錄必須有讀的許可權

-node:指定節點的名稱

-config-dir:指定配置檔案,定義服務的,預設所有一.json結尾的檔案都會讀

-enable-script-checks=true:設定檢查服務為可用

-datacenter: 資料中心沒名稱,

-join:加入到已有的集群中

客戶端:

客戶端2個節點:192.168.1.199,192.168.1.198

#consul agent   -data-dir /data/consul0 -node=cn4 -bind=192.168.1.199 -config-dir /etc/consul.d -enable-script-checks=true  -datacenter=dc1  -join 192.168.1.202

client節點可以有多個,自己根據服務指定即可。

ui:#consul agent  -ui  -data-dir /data/consul0 -node=cn4 -bind=192.168.1.198  -client 192.168.1.198   -config-dir /etc/consul.d -enable-script-checks=true  -datacenter=dc1  -join 192.168.1.202

-ui:使用自帶的ui,

-ui-dir:指定ui的目錄,使用自己定義的ui

集群建立完成後:

使用一些常用的命令檢查集群的狀態:

#consul  info

可以在raft:stat看到此節點的狀態是fllower或者leader

#consul members

node address status type build protocol dc segment

cn1 192.168.1.102:8301 alive server 1.0.2 2 dc1

cn2 192.168.1.101:8301 alive server 1.0.2 2 dc1

cn3 192.168.1.100:8301 alive client 1.0.2 2 dc1

新加入乙個節點有幾種方式;

1、這種方式,重啟後不會自動加入集群

#consul  join  192.168.1.202

2、#在啟動的時候使用-join指定乙個集群

#consul agent  -ui  -data-dir /data/consul0 -node=cn4 -bind=192.168.1.198 -config-dir /etc/consul.d -enable-script-checks=true  -datacenter=dc1  -join 192.168.1.202

3、使用-startjoin或-rejoin

#consul agent  -ui  -data-dir /data/consul0 -node=cn4 -bind=192.168.1.198 -config-dir /etc/consul.d -enable-script-checks=true  -datacenter=dc1  -rejoin

consul 例項登出/註冊

註冊例項

curl -x put -d ']}'

curl -x put -d ']}'

引數:可以通過檢視應用啟動時consul 註冊資訊

登出例項

curl -x put

curl -x put

檢視consul節點資訊

curl 127.0.0.1:8500/v1/catalog/nodes

api

docker部署consul集群

sudo docker network create my consulsudo docker search consul sudo docker pull consulsudo docker run d name node1 h node1 net my consul consul agent s...

consul 集群安裝

安裝包 consul支援3以下幾種安裝方式 編譯好的二進位製包 原始碼安裝 安裝組網 consul採用3個節點的集群模式安裝 環境檢查 consul執行會占用以下埠 8600 8500 8301 8302 8300 執行安裝 建立使用者 groupadd consul useradd g consu...

Consul 概述 安裝

consul是一套開源的分布式服務發現和配置管理系統,由hashicorp公司用go語言開發。提供了微服務系統中的服務治理 配置中心 控制匯流排等功能。這些功能中的每乙個都可以根據需要單獨使用,可以一起使用以構建全方位的服務網格,總之consul提供了一種完整的服務網格解決方案。它具有很多優點。包括...