xDS協議

xDS

xDS是數據平面標準

利用XDS協議,Envoy可以實現配置的完全動態化,配置實時更新而無需重啓Envoy或者影響業務,此外,利用其L3/L4/L7 Filter機制,Envoy可以完全無侵入的擴展各種強大的功能。利用其內置的Tracing機制和Stats模塊,可以很方便的實現對流量的跟蹤以及監控,保證Envoy中流量的可觀察性。 由Envoy項目發展而來,Envoy 可以通過xDS API 可以動態獲取Listener(監聽器),Route(路由),Cluster(集羣/服務),Endpoint(集羣成員/服務實例)以及Secret(祕鑰)配置。

xDS協議是基於gRPC實現的傳輸協議,即Envoy通過gRPC streaming訂閱Pilot的資源配置。 Pilot藉助ADS對API更新推送排序的能力,按照CDS-EDS-LDS-RDS 的順序串行分發配置。

xDS 是一組發現服務的總稱,包含:

  1. LDS

    Listener 發現服務。

    Listener監聽器控制Envoy啓動端口監聽(目前只支持TCP協議),並配置L3/L4層過濾器,當網絡連接達到後,配置好的網絡過濾器堆棧開始處理後續事件。

    這種通用的監聽器體系結構用於執行大多數不同的代理任務(限流,客戶端認證, HTTP連接管理, TCP代理等)。

  2. RDS

    Route發現服務,用於HTTP連接管理過濾器動態獲取路由配置。

    路由配置包含HTTP頭部修改(增加、刪除HTTP頭部鍵值),virtual hosts (虛擬主機),以及virtual hosts 定義的各個路由條目。

  3. CDS

    Cluster發現服務,用於動態獲取Cluster信息。

    Envoy cluster管理器管理着所有的上游cluster。

    鑑於上游cluster或者主機可用於任何代理轉發任務,所以上游cluster一般從Listener或Route中抽象出來。

  4. EDS

    Endpoint發現服務。

    在Envoy術語中, Cluster成員就叫 Endpoint,對於每個Cluster, Envoy通過EDS API動態獲取Endpoint。

    EDS作爲首選的服務發現的原因有兩點:

    與通過DNS解析的負載均衡器進行路由相比, Envoy能明確的知道每個上游主機的信息,因而可以做出更加智能的負載均衡決策。 Endpoint配置包含負載均衡權重、可用域等附加主機屬性,這些屬性可用域服務網格負載均衡,統計收集等過程中。

  5. SDS

    Secret發現服務,用於運行時動態獲取TLS證書。

    若沒有SDS特性,在k8s環境中,必須創建包含證書的Secret,代理啓動前Secret必須掛載到sidecar容器中,如果證書過期,則需要重新部署。

    使用SDS,集中式的SDS 服務器將證書分發給所有的Envoy實例,如果證書過期,服務器會將新的證書分發, Envoy 接收到新的證書後重新加載兒不用重新部署

根據配置更新下發維度分類:

  1. State of the World(Basic xDS):全量傳輸 獨立gRPC stream
  2. Incremental xDS:增量傳輸 獨立gRPC stream
  3. Aggregated Discovery Service(ADS):全量傳輸 聚合gRPC stream
  4. Incremental ADS:增量傳輸 聚合gRPC stream (暫未實現)

ADS

早期的xDS協議是 全量傳輸 單鏈接 獨立資源, 現在主流的還是全量傳輸 聚合gRPC Stream (ADS)。

由於Envoy xDS採用最終一致性,部分流量可能在更新時被丟棄。 ADS通過一個連接(gRPC同一stream)申請多種資源/接受多種資源。 能夠保證請求一定落在同一Pilot上,解決多個管理服務器配置不一致的問題。 通過順序的配置分發,輕鬆解決資源更新順序的問題。 按照這個方式CDS-EDS-LDS-RDS下發,由Polit控制,規避流量丟失的問題。

Incremental xDS

當配置發生變化時,僅下發和更新發生變化的配置部分,增量 xDS 客戶端需要向服務器告知它已擁有的資源從而避免重複發送。

UDPA

UDPA是“Universal Data Plane API”的縮寫, “通用數據平面API”。

是由xDS演化而來

xDS 將逐漸向 UDPA 靠攏,未來將基於 UDPA

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章