Consul 入門實戰(1)--簡介
Consul 是HashiCorp 公司提供一個服務網格解決方案,具有服務發現、配置管理登功能。本文主要介紹下 Consul 的基本概念。
1、Consul 的特點
服務發現(Service Discovery):客戶端在 Consul 註冊為服務,其他客戶通過 Consul 獲取服務的提供方;通過 DNS 或 HTTP 的方式,應用可以很容易的找到它所依賴的服務。
健康檢查(Health Checking):Consul 客戶端可以提供任意數量的執行狀況檢查,這些檢查可以與給定服務相關聯("Web 伺服器是否返回 200 OK"),也可以與本地節點("記憶體利用率是否低於 90%")相關聯。可以使用此資訊來監視群集執行狀況,服務發現元件可以使用此資訊將流量從執行狀況不佳的主機路由出去。
Key/Value 儲存:
安全服務通訊:Consul 可以為服務生成 TLS 證書,以建立 TLS 連線。意圖可用於定義允許哪些服務進行通訊。服務分割可以輕鬆管理,其意圖可以實時更改,而不是使用複雜的網路拓撲和靜態防火牆規則。
多資料中心:Consul 支援開箱即用的多個數據中心;這意味著 Consul 的使用者不必擔心需要構建額外的抽象層來擴充套件到多個區域。
2、Consul 架構
上圖中有兩個 DataCenter,他們通過 Internet 互聯;為了提高通訊效率,只有 Server 節點才加入跨資料中心的通訊。
叢集內的節點通過 gossip 協議維護成員關係,某個節點需瞭解叢集內還有其他哪些節點,這些節點是 Client 還是 Server。單個數據中心的 gossip 協議同時使用 TCP 和 UDP 通訊,並且都使用 8301埠。跨資料中心的 gossip 協議也同時使用 TCP 和 UDP 通訊,埠使用 8302。
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