Istio 1.6架構及性能


Istio 架構

Istio 服務網格從邏輯上分為數據平面和控制平面。

  • 數據平面 由一組智能代理(Envoy)組成,被部署為 sidecar。這些代理負責協調和控制微服務之間的所有網絡通信。他們還收集和報告所有網格流量的遙測數據。
  • 控制平面 管理並配置代理來進行流量路由。

Istio 核心組件

下圖展示了組成每個平面的不同組件:

istio-arch

Istio 中的流量分為數據平面流量和控制平面流量。

  • 數據平面流量是指工作負載的業務邏輯發送和接收的消息
  • 控制平面流量是指在 Istio 組件之間發送的配置和控制消息用來編排網格的行為
  • Istio 中的流量管理特指數據平面流量

Envoy

Istio 使用 Envoy 代理的擴展版本。Envoy 是用 C++ 開發的高性能代理,用於協調服務網格中所有服務的入站和出站流量。Envoy 代理是唯一與數據平面流量交互的 Istio 組件。

Envoy 代理被部署為服務的 sidecar,在邏輯上為服務增加了 Envoy 的許多內置特性,例如:

  • 動態服務發現
  • 負載均衡
  • TLS 終端
  • HTTP/2 與 gRPC 代理
  • 熔斷器
  • 健康檢查
  • 基於百分比流量分割的分階段發布
  • 故障注入
  • 豐富的指標

這種 sidecar 部署允許 Istio 提取大量關於流量行為的信號作為屬性。Istio 可以使用這些屬性來實施策略決策,並將其發送到監視系統以提供有關整個網格行為的信息。

由 Envoy 代理啟用的一些 Istio 的功能和任務包括:

  • 流量控制功能:通過豐富的 HTTP、gRPC、WebSocket 和 TCP 流量路由規則來執行細粒度的流量控制。
  • 網絡彈性特性:重試設置、故障轉移、熔斷器和故障注入。
  • 安全性和身份驗證特性:執行安全性策略以及通過配置 API 定義的訪問控制和速率限制。
  • 基於 WebAssembly 的可插拔擴展模型,允許通過自定義策略實施和生成網格流量的遙測。

Pilot

Pilot 為 Envoy sidecar 提供服務發現、用於智能路由的流量管理功能(例如,A/B 測試、金絲雀發布等)以及彈性功能(超時、重試、熔斷器等)。

Pilot 將控制流量行為的高級路由規則轉換為特定於環境的配置,並在運行時將它們傳播到 sidecar。Pilot 將特定於平台的服務發現機制抽象出來,並將它們合成為任何符合 Envoy API 的 sidecar 都可以使用的標准格式。

下圖展示了平台適配器和 Envoy 代理如何交互。

pilot-discovery

  1. 平台啟動一個服務的新實例,該實例通知其平台適配器。
  2. 平台適配器使用 Pilot 抽象模型注冊實例。
  3. Pilot 將流量規則和配置派發給 Envoy 代理,來傳達此次更改。

Citadel

Citadel通過內置的身份和證書管理,可以支持強大的服務到服務以及最終用戶的身份驗證。您可以使用 Citadel 來升級服務網格中的未加密流量。使用 Citadel operator 可以執行基於服務身份的策略。

Galley

Galley 是 Istio 的配置驗證、提取、處理和分發組件。它負責將其余的 Istio 組件與從底層平台(例如 Kubernetes)獲取用戶配置的細節隔離開來。

Istio 部署模型

您可以將單個網格配置為包括多集群。多集群部署可為您提供更大程度的隔離和可用性,但會增加復雜性。 如果您的系統具有高可用性要求,則可能需要集群跨多個可用區和地域。 對於應用變更或新的版本,您可以在一個集群中配置金絲雀發布,這有助於把對用戶的影響降到最低。 此外,如果某個集群有問題,您可以暫時將流量路由到附近的集群,直到解決該問題為止。
istio-multi-cluster

Istio 1.6 性能總結

Istio 負載測試 網格包含了 1000 個服務和 2000 個 sidecar,全網格范圍內,QPS 為 70,000。 在使用 Istio 1.6 運行測試后,我們得到了如下結果:

  • 通過代理的 QPS 有 1000 時,Envoy 使用了 0.5 vCPU50 MB 內存
  • 網格總的 QPS 為 1000 時,istio-telemetry 服務使用了 0.6 vCPU
  • Pilot 使用了 1 vCPU1.5 GB 內存。
  • 90% 的情況 Envoy 代理只增加了 2.8 ms 的延遲。

參考文獻

https://preliminary.istio.io/docs/ops/deployment/architecture/

https://preliminary.istio.io/zh/docs/ops/deployment/architecture/

https://preliminary.istio.io/zh/docs/ops/deployment/deployment-models/

https://preliminary.istio.io/docs/ops/deployment/performance-and-scalability/

https://preliminary.istio.io/docs/ops/deployment/requirements/


免責聲明!

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



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