叢集管理器
Envoy 的叢集管理器管理所有已組態的上游叢集。正如 Envoy 組態可以包含任意數量的監聽器一樣,組態也可以包含任意數量獨立組態的上游叢集。
上游叢集和主機與網路/HTTP 篩選器堆疊是分離的,因為上游叢集和主機可能用於任意數量的不同代理任務。叢集管理器會向篩選器堆疊公開 API,允許篩選器取得與上游叢集的 L3/L4 連線,或取得上游叢集的抽象 HTTP 連線池的控制代碼(無論上游主機是否支援 HTTP/1.1、HTTP/2 或 HTTP/3 都會被隱藏)。篩選器階段會決定是否需要 L3/L4 連線或新的 HTTP 資料流,而叢集管理器會處理所有複雜的作業,例如知道哪些主機可用且健康、負載平衡、上游連線資料的執行緒本地儲存(因為大多數 Envoy 程式碼都是以單執行緒方式撰寫)、上游連線類型 (TCP/IP, UDS)、上游協定(如果適用)(HTTP/1.1、HTTP/2、HTTP/3) 等。
叢集管理器已知的叢集可以靜態組態,或透過叢集探索服務 (CDS) API 動態擷取。動態叢集擷取允許將更多組態儲存在中央組態伺服器中,因此需要較少的 Envoy 重新啟動和組態散佈。
叢集暖機
當叢集在伺服器啟動時以及透過 CDS 初始化時,它們會進行「暖機」。這表示叢集在完成下列操作之前不會變成可用。
初始服務探索載入(例如,DNS 解析、EDS 更新等)。
如果已組態主動健康檢查,則會通過初始主動健康檢查。Envoy 會將健康檢查請求傳送到每個已探索到的主機,以判斷其初始健康狀態。
前面的項目確保 Envoy 在開始使用叢集提供流量之前,具有叢集的準確檢視。
在討論叢集暖機時,叢集「變成可用」表示
對於新加入的叢集,叢集在暖機完成之前,不會對 Envoy 的其他部分顯示為存在。也就是說,參考該叢集的 HTTP 路由將會導致 404 或 503 錯誤(取決於組態)。
對於更新的叢集,舊叢集將會繼續存在並提供流量。當新叢集暖機完成時,它會與舊叢集以原子方式交換,因此不會發生流量中斷。