區域感知路由

我們使用以下術語

  • 發起/上游叢集:Envoy 將請求從發起叢集路由到上游叢集。

  • 本地區域:包含發起和上游叢集中主機子集的同一區域。

  • 區域感知路由:盡力將請求路由到本地區域中的上游叢集主機。

在發起和上游叢集中的主機屬於不同區域的部署中,Envoy 會執行區域感知路由。在執行區域感知路由之前,需要滿足幾個前提條件

  • 發起和上游叢集都不能處於恐慌模式

  • 啟用區域感知路由

  • 上游叢集有足夠的主機。有關更多資訊,請參閱這裡

區域感知路由的目的是盡可能將流量發送到上游叢集中的本地區域,同時大致保持所有上游主機每秒請求數相同(取決於負載平衡策略)。

只要大致保持上游叢集中每台主機的請求數相同,Envoy 就會盡可能將流量推送到本地上游區域。Envoy 路由到本地區域還是執行跨區域路由的決定取決於本地區域中發起叢集和上游叢集中健康主機的百分比。關於發起和上游叢集之間本地區域百分比的關係,有兩種情況

  • 發起叢集本地區域的百分比大於上游叢集中的百分比。在這種情況下,我們無法將所有來自發起叢集本地區域的請求路由到上游叢集的本地區域,因為這將導致所有上游主機之間的請求不平衡。相反,Envoy 會計算可以直接路由到上游叢集本地區域的請求百分比。其餘的請求會跨區域路由。具體選擇哪個區域基於該區域的剩餘容量(該區域將獲得一些本地區域流量,並且可能有 Envoy 可以用於跨區域流量的額外容量)。

  • 發起叢集本地區域的百分比小於上游叢集中的百分比。在這種情況下,上游叢集的本地區域可以接收所有來自發起叢集本地區域的請求,並且還有一些空間來允許來自發起叢集中其他區域的流量(如果需要)。

請注意,當使用多個優先級時,目前僅支援 P=0 的區域感知路由。