慢速啟動模式
慢速啟動模式是 Envoy 中的一個組態設定,用於逐步增加新加入的上游端點的流量。如果未啟用慢速啟動,Envoy 會將按比例的流量發送到新的上游端點。對於需要預熱時間才能提供完整生產負載的服務來說,這可能是不希望發生的,並可能導致請求逾時、資料遺失和使用者體驗下降。
慢速啟動模式是一種影響上游端點負載平衡權重的機制,可以針對每個上游叢集進行組態。目前,循環輪詢 (Round Robin) 和 最少請求 (Least Request) 負載平衡器類型支援慢速啟動。
當只有少數新端點出現時 (例如 Kubernetes 中的擴展事件),慢速啟動模式最有效。當所有端點都相對較新時 (例如 Kubernetes 中的新部署),慢速啟動效果不佳,因為所有端點最終都會收到相同數量的請求。
使用者可以指定一個 慢速啟動視窗參數 (以秒為單位),這是每個端點的慢速啟動模式持續時間。在慢速啟動視窗期間,特定端點的負載平衡權重將隨著時間因素進行縮放,例如:
其中,
隨著時間的推移,在慢速啟動視窗內,將會有越來越多的流量發送到端點。
最小權重百分比參數 指定原始權重的最小百分比,以確保 EDF 排程器具有合理的期限,預設值為 10%。
侵略性參數 非線性地影響端點權重,並表示加速上升的速度。透過調整侵略性參數,可以實現流量增加的多項式或指數速度。以下模擬演示了不同的侵略性值如何影響流量上升。
每當慢速啟動視窗持續時間經過時,上游端點就會退出慢速啟動模式,並根據負載平衡演算法獲得常規的流量。其負載平衡權重將不再以執行時間偏差和侵略性進行縮放。端點也可能在離開叢集時退出慢速啟動模式。如果端點透過主動健康檢查從不健康狀態轉換為健康狀態,則可能會進一步重新進入慢速啟動模式。
- 重申一下,端點進入慢速啟動模式
如果每個叢集沒有設定主動健康檢查,則在加入叢集後立即進入。
如果每個叢集設定了主動健康檢查,則當端點透過主動健康檢查從不健康狀態轉換為健康狀態時進入。
- 端點在以下情況下退出慢速啟動模式
它離開了叢集。
它沒有通過每個叢集設定的主動健康檢查。如果端點通過主動健康檢查,則可以重新進入慢速啟動。
- 不建議在低流量或大量端點的情況下啟用慢速啟動模式,潛在的缺點包括:
端點飢餓,其中端點由於流量低或端點總數多而接收請求的機率較低。
每個端點流量的虛假 (非逐步) 增加,每當飢餓的端點收到請求,並且在慢速啟動視窗內經過了足夠的時間時,其負載平衡權重將由於時間因素而呈現非線性增加。
以下是一個範例,說明在具有循環輪詢負載平衡器類型、60 秒的慢速啟動視窗、沒有主動健康檢查和 1.0 侵略性的相同優先級端點的結果負載平衡權重。一旦端點 E1 和 E2 退出慢速啟動模式,它們的負載平衡權重將保持恆定。
請注意,如果在使用慢速啟動時使用了多個優先級,並且較低優先級只有一個端點 A,則在跨優先級溢出期間,不會逐步增加到端點 A 的流量,所有流量將一次轉移。當為上游叢集啟用慢速啟動,並且流量跨區域路由到只有一個端點 A 的區域時,此情況同樣適用於區域加權負載平衡,不會逐步增加到端點 A 的流量。