Istio是一個服務網格
微服務並不像過去那樣新鮮和熱,這絕對是一件好事。因為我們已經發展到基於Kubernetes,Openshift和其他各種集裝箱管理系統的穩定可靠的領先地步,而不是生活在前沿集裝箱平臺的時代。現在,基於這些容器編排提供了很多核心功能,如負載平衡,服務發現和安全性,這就是在基礎架構上建立所謂的服務網格。
ofollow,noindex">Istio 就是這樣的一個服務網路產品,它是僅次於谷歌Kubernetes的開源貢獻。將Istio稱為熱門話題是輕描淡寫的。
Istio是控制面板,Envoy是資料面板
服務網格使分散式系統的核心功能(如服務之間的通訊)更易於配置和管理。所有應用程式所需的通用網路功能集(例如處理超時,重試,速率限制,路由和負載平衡)都可以集中處理,因此每個應用程式無需單獨處理這些難題。
這有助於保持業務邏輯分離,因此開發人員可以專注於使使用者滿意,而不必擔心堆疊的較低層。Istio通過Envoy提供這套解決方案,資料面板處理服務網格中的所有流量,以及構成管理策略和配置的控制面板的少數應用程式,即:
- Pilot - 流量管制 俗稱飛行員
- Mixer - 後端整合
- Citadel - 身份驗證和授權
- Galley - 配置驗證
Envoy微服務代理
Envoy是一個代理,類似於HAProxy和Nginx,但專為微服務架構而設計。具有以下功能:
- 動態重新配置/熱重啟
- 分階段/金絲雀部署
- 高階負載平衡
- 請求路由
- 健康檢查
- 分散式跟蹤
Envoy管理內部和外部服務通訊的所有路由要求,外部服務連線受益於故障恢復功能,例如超時,重試和斷路器。Envoy被部署為應用程式pod中的sidecar容器,並通過RPC/">gRPC從Istio控制面板接收其所有配置。
進出應用程式的資料包被Envoy使用iptables攔截,這允許強大的路由控制和流量可見性,提供詳細的指標。Envoy旨在簡化高度分散式,面向服務架構中的網路和可觀察性的困難。高效能和低延遲是任何有價值的代理的基本特徵,因此使用C ++編寫Envoy是完全合理的。
通過Pilot和Mixer進行流量控制和遙測
Mixer和Pilot是利用Istio服務網格最重要特徵所不可或缺的,即:流量管理和遙測處理。
Pilot
Envoy側面車從Pilot接收策略以執行規則,例如允許服務A與服務B通話,但不允許服務A與服務C通話.Pilot提供請求路由和負載平衡的配置設定,以支援分階段釋出,藍/綠部署和A / B測試。
由Pilot管理的路由規則允許Envoy根據分配給每個版本的HTTP標頭和權重等條件選擇指定的APP版本。
來自底層叢集基礎設施比如k8s的服務登錄檔通過Pilot 傳送到 Envoy 邊車共享給整個服務網格,用於動態服務發現。也就是說,Istio不負責服務註冊,服務註冊到K8s中,這樣避免了服務註冊的單點風險。
Mixer
Mixer有一組支援的介面卡,它與Prometheus和Stackdriver等基礎設施後端對話,以處理和儲存指標,跟蹤和記錄。Envoy將遙測資料傳送到Mixer,然後Mixer將這些值傳送到配置的後端。
總結
在沒有像Istio這樣的服務網格的情況下管理分階段部署和應用程式版本並非易事。Envoy和Istio控制面板元件通過編碼請求路由配置,並將該控制權交給開發人員來支援組織的DevOps計劃。
Istio網格的另一個重要特性是您無需安裝或使用所有元件。我們建議利用Istio的跟蹤功能來視覺化流量在您的服務和網路之間流動的方式。這是開始使用Istio的完美方式,因為它可以快速輕鬆地進行配置,並且無需更改您的微服務即可開始受益於此遙測。