概觀

什麼是負載平衡?

負載平衡是一種在單一上游叢集內的多個主機之間分配流量的方式,以便有效利用可用資源。實現此目的的方法有很多種,因此 Envoy 提供了幾種不同的負載平衡策略。在高層次上,我們可以將這些策略分為兩類:全域負載平衡和分散式負載平衡。

分散式負載平衡

分散式負載平衡是指讓 Envoy 本身根據上游主機的位置來決定如何將負載分配到端點。

範例

  • 主動式健康檢查:透過檢查上游主機的健康狀況,Envoy 可以調整優先順序和區域的權重,以考慮到不可用的主機。

  • 區域感知路由:這可以用來讓 Envoy 偏好更近的端點,而無需在控制平面中明確設定優先順序。

  • 負載平衡演算法:Envoy 可以使用幾種不同的演算法來使用提供的權重來決定選擇哪個主機。

全域負載平衡

全域負載平衡是指由單一的全域權限決定如何在主機之間分配負載。對於 Envoy 來說,這將由控制平面完成,它可以透過指定各種參數(例如優先順序、區域權重、端點權重和端點健康狀況)來調整應用於個別端點的負載。

一個簡單的範例是讓控制平面根據網路拓撲將主機分配到不同的優先順序,以確保優先選擇需要較少網路跳躍的主機。這類似於區域感知路由,但由控制平面而不是 Envoy 處理。在控制平面中進行此操作的好處是可以繞過區域感知路由的一些限制

更複雜的設定可以讓資源使用情況回報給控制平面,允許它調整端點或區域的權重,以考慮目前的資源使用情況,嘗試將新請求路由到閒置主機,而不是忙碌的主機。

分散式與全域並用

大多數複雜的部署都會使用這兩種類別的功能。例如,可以使用全域負載平衡來定義高階路由優先順序和權重,而可以使用分散式負載平衡來回應系統中的變更(例如,使用主動式健康檢查)。透過結合這些功能,您可以獲得兩全其美的效果:一個可以控制巨觀層面流量的全域感知權限,同時仍然讓個別代理能夠回應微觀層面的變更。