Consul 入門實戰(1)--簡介


Consul 是 HashiCorp 公司提供一個服務網格解決方案,具有服務發現、配置管理登功能。本文主要介紹下 Consul 的基本概念。

1、Consul 的特點

服務發現(Service Discovery):客戶端在 Consul 注冊為服務,其他客戶通過 Consul 獲取服務的提供方;通過 DNS 或 HTTP 的方式,應用可以很容易的找到它所依賴的服務。
健康檢查(Health Checking):Consul 客戶端可以提供任意數量的運行狀況檢查,這些檢查可以與給定服務相關聯("Web 服務器是否返回 200 OK"),也可以與本地節點("內存利用率是否低於 90%")相關聯。可以使用此信息來監視群集運行狀況,服務發現組件可以使用此信息將流量從運行狀況不佳的主機路由出去。
Key/Value 存儲:應用可以將 Consul 的鍵/值存儲用於任意目的,包括動態配置、功能標記、協調、領導者選舉等;簡單的 HTTP API 使其易於使用。
安全服務通信:Consul 可以為服務生成 TLS 證書,以建立 TLS 連接。意圖可用於定義允許哪些服務進行通信。服務分割可以輕松管理,其意圖可以實時更改,而不是使用復雜的網絡拓撲和靜態防火牆規則。
多數據中心:Consul 支持開箱即用的多個數據中心;這意味着 Consul 的用戶不必擔心需要構建額外的抽象層來擴展到多個區域。

2、Consul 架構

上圖中有兩個 DataCenter,他們通過 Internet 互聯;為了提高通信效率,只有 Server 節點才加入跨數據中心的通信。

在單個數據中心中,Consul 分為 Client 和 Server 兩種節點(所有的節點都是 Agent),Server 節點保存數據,Client 負責健康檢查及轉發請求到 Server;Server 節點有一個 Leader 和多個 Follower,Leader 節點會將數據同步到 Follower,Server 的數量推薦是 3 到 5 個,在 Leader 掛掉的時候會啟動選舉機制產生一個新的 Leader。

集群內的節點通過 gossip 協議維護成員關系,某個節點需了解集群內還有其他哪些節點,這些節點是 Client 還是 Server。單個數據中心的 gossip 協議同時使用 TCP 和 UDP 通信,並且都使用 8301端口。跨數據中心的 gossip 協議也同時使用 TCP 和 UDP 通信,端口使用 8302。

集群內數據的讀寫請求可以直接發到 Server,也可以通過 Client 轉發到 Server,請求最終會到達 Leader 節點;在允許數據輕微陳舊的情況下,讀請求也可以在普通的 Server 節點完成,集群內數據的讀寫和復制都是通過 TCP 的 8300 端口完成。
 
相關名詞說明:
Gossip:Gossip protocol 也叫 Epidemic Protocol,是基於流行病傳播方式的節點或者進程之間信息交換的協議,在分布式系統中被廣泛使用,比如我們可以使用 gossip 協議來確保網絡中所有節點的數據一樣。gossip protocol 最初是由施樂公司帕洛阿爾托研究中心(Palo Alto Research Center)的研究員艾倫·德默斯(Alan Demers)於 1987 年發明的。
Client:Client 是一個轉發所有 RPC 請求到 server 的代理,client 是相對無狀態的;client 唯一執行的后台活動是加入 LAN gossip 池,該活動使用很低的資源且僅消耗少量的網絡帶寬。
Server:Server 是一個有一組擴展功能的代理,這些功能包括參與 Raft 選舉,維護集群狀態,響應 RPC 查詢,與其他數據中心交互 WAN gossip 和轉發查詢給 leader 或者遠程數據中心。
DataCenter:數據中心為一個私有的,低延遲和高帶寬的一個網絡環境。
LAN Gossip:它包含所有位於同一個局域網或者數據中心的所有節點。
WAN Gossip:它只包含 Server;這些 Server 分布在不同的數據中心並且通常通過因特網或者廣域網通信。
RPC:遠程過程調用。

3、Consul 使用場景

服務發現:consul 作為注冊中心,服務地址被注冊到 consul 中以后,可以使用 consul 提供的 dns、http 接口查詢,consul支持health check。
服務隔離:consul 支持以服務為單位設置訪問策略,能同時支持經典的平台和新興的平台,支持 tls 證書分發,service-to-service加密。
配置管理:consul 提供 key-value 數據存儲功能,並且能將變動迅速地通知出去,借助 Consul 可以實現配置共享。

4、Consul 服務發現原理

服務發現的腳本原理如下:

A、在服務器 Server1、Server2、Server3 上部署了 Consul Server,服務器 Server4 、Server5、Server6 上部署了 Consul Client,它們組成了一個 Consul 集群。
B、Service A、Service B、Service C 部署在 Server4 和 Server5 並注冊到 Consul 上,其他的服務可以發現這三個服務;服務部署在兩台 Server 上,避免了單點故障。
C、Service D 需要訪問 Service B,首先訪問本機的 Consul Client,Consul Client 會將請求轉發到 Consul Server,Consul Server查詢到 Service B 的信息返回;最終 Service D 拿到了 Service B 的所有部署的IP 和端口,然后就可以選擇其中一個發起請求了。  

 

參考:https://juejin.cn/post/6844904003764125703

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM