監聽器探索服務 (LDS)
監聽器探索服務 (LDS) 是一個可選的 API,Envoy 將調用它來動態獲取監聽器。Envoy 將協調 API 回應,並根據需要新增、修改或移除已知的監聽器。
監聽器更新的語意如下
每個監聽器都必須有一個唯一的名稱。如果未提供名稱,Envoy 將建立一個 UUID。要動態更新的監聽器應具有管理伺服器提供的唯一名稱。
新增監聽器時,它會在接收流量之前「預熱」。例如,如果監聽器引用RDS 設定,則該設定會在監聽器移至「啟用」狀態之前解析並獲取。
一旦建立監聽器,它就會有效地保持恆定。因此,當更新監聽器時,會建立一個全新的監聽器(如果監聽器的位址未變更,則新的監聽器會使用相同的監聽套接字)。此監聽器會經歷與新新增監聽器相同的上述預熱過程。
移除監聽器時,舊的監聽器將被置於「排空」狀態,就像整個伺服器在重新啟動時被排空一樣。監聽器擁有的連線將在一段時間內正常關閉(如果可能),然後再移除監聽器並關閉任何剩餘的連線。排空時間透過
--drain-time-s
選項設定。當更新 TCP 監聽器時,如果新的監聽器包含舊監聽器中過濾器鏈的子集,則這些重疊過濾器鏈擁有的連線將保持開啟。只有移除的過濾器鏈擁有的連線才會按照上述模式排空。請注意,如果任何全域監聽器屬性發生變更,則整個監聽器(以及所有過濾器鏈)都會像上面移除時一樣排空。請參閱僅過濾器鏈更新,了解有關影響的過濾器鏈的詳細規則。
注意
在 Envoy 設定中靜態定義的任何監聽器都無法透過 LDS API 修改或移除。
設定
統計
LDS 有一個以 listener_manager.lds. 為根的統計樹。