今天和大家來分享一款微服務治理工具-Consul。Consul是大名鼎鼎的Hashicorp公司開發的,Zookeeper、Etcd、Consul目前是業界三大服務治理工具,成三足鼎立之勢。三者各有各的特點。這裡就不一一說明三者的優缺,僅僅分析consul的優勢:
1.封裝了服務發現的api,開發調用非常簡單
2.提供了健康檢查功能
3.使用了raft算法保證了一致性,比複雜的paxos算法更直接,相比而言,zk採用的是paxos,二etcd採用的是raft
4.支持多數據中心,保證多機房使用。
5.支持 http 和 dns 協議接口.,zookeeper 的集成較為複雜,,etcd 只支持 http 協議
6.官方提供web管理界面, etcd 無此功能
7.唯一一款跨數據中心,其它幾款都不支持跨數據中心
下面是Consul的架構圖:
agent
組成 consul 集群的每個成員上都要運行一個 agent,可以通過 consul agent 命令來啟動。agent 可以運行在 server 狀態或者 client 狀態。自然的,運行在 server 狀態的節點被稱為 server 節點;運行在 client 狀態的節點被稱為 client 節點。
client 節點
負責轉發所有的 RPC 到 server 節點。本身無狀態,且輕量級,因此,可以部署大量的 client 節點。
server 節點
負責組成 cluster 的複雜工作(選舉、狀態維護、轉發請求到 lead),以及 consul 提供的服務(響應 RCP 請求)。考慮到容錯和收斂,一般部署 3 ~ 5 個比較合適。
datacenter
多機房使用的數據共享
網上關於Consul單機和集群部署的例子很多,這裡分享在在Windows平臺下的簡化部署方法並設置開機自動啟動、避免不停的敲入一行行難記的命令:
Consul簡化部署說明
部署Consul(只適用版本0.7)(Windows 64位服務器)時使用
1、 解壓工具,把這三個文件放在和Consul同一個目錄下,
裡面有個批處理文件 ,修改裡面的IP為服務器的內網IP(這個通過批處理也可以獲取,但是不同環境,比如有多個網卡的服務器,或者有Wifi環境的筆記本會獲取多個,為了穩定起見,這裡還是建議手工錄入)
2、 三個腳本都修改完後,依次啟動每臺機器上的srvanyui.exe工具,配置如下:
點確定後,會提示是否啟動該服務,點“是”,在工具會看到新建的服務:
這樣,不管機器如何重啟,只要機器能成功啟動,這個Consul節點就會自動加載到集群中去
通過打開cmd,可以看到所有節點狀態:
簡要說明:
1、先用srvanyui將consul安裝成windows服務,路徑選擇批處理的路徑
3、加入集群的IP,所有安裝機器的加入到同一個IP總(consul join -rpc-addr=%ip%:8400 10.175.173.81)
4、加入集群后,查看命令後面要加rpc-addr=10.175.173.81:8400 http-addr=10.175.175.163:8500
查看成員:
consul members -rpc-addr=10.175.173.81:8400
consul members -http-addr=10.175.175.163:8500
查看信息:
consul info -rpc-addr=10.175.173.81:8400
consul info -http-addr=10.175.175.163:8500
查看版本:consul –v
閱讀更多 微服務DevOps 的文章