初始化

Envoy 在啟動時如何初始化自身是一個複雜的過程。本節將在高層次上說明此過程如何運作。以下所有步驟都會在任何監聽器開始監聽和接受新連線之前發生。

  • 在啟動期間,叢集管理器會經歷一個多階段的初始化過程,它首先初始化靜態/DNS 叢集,然後是預先定義的 EDS 叢集。接著,如果適用,它會初始化 CDS,等待 有限的時間 內的一個回應(或失敗),並對 CDS 提供的叢集執行相同的主要/次要初始化。

  • 如果叢集使用 主動健康檢查,Envoy 也會執行單次主動健康檢查。

  • 一旦叢集管理器初始化完成,RDSLDS 會初始化(如果適用)。伺服器會等待 有限的時間,至少接收到一個 LDS/RDS 請求的回應(或失敗)。之後,它才會開始接受連線。

  • 如果 LDS 本身返回一個需要 RDS 回應的監聽器,Envoy 會進一步等待 有限的時間,直到收到 RDS 回應(或失敗)。請注意,此過程會在每個未來通過 LDS 添加的監聽器上進行,並且稱為 監聽器預熱

  • 在完成所有先前的步驟後,監聽器會開始接受新的連線。此流程確保在熱重新啟動期間,新進程在舊進程開始耗盡之前,完全有能力接受和處理新的連線。

初始化的一個關鍵設計原則是,Envoy 始終保證在 initial_fetch_timeout 內初始化,並盡最大努力在管理伺服器可用的情況下獲取完整的 xDS 設定集。