使用 Azure 路由伺服器的任一傳播路由
您可以將應用程式部署到單一 Azure 區域中的多個可用性區域,以達到更高的可用性,但有時候,您可能需要在多個區域中部署應用程式,以達到更高的復原能力、為世界各地的使用者提供更好的效能,或更好的商務持續性。 可以使用不同方法將使用者導向多個區域應用程式部署的其中一個位置:以 DNS 為基礎的方法,例如Azure 流量管理員 (部分機器翻譯)、路由型服務,例如Azure Front Door (部分機器翻譯),或Azure 跨區域負載平衡器。
之前的 Azure 服務建議使用公用 IP 位址將使用者透過公用網際網路取得最佳應用程式位置,但不支援私人網路和 IP 位址。 本文會探索路由式方法 (IP 任一傳播) 的使用方式,以提供多區域、私人網路的應用程式部署。
IP 任一傳播基本上是由來自多個位置的相同 IP 位址所組成,因此應用程式使用者的封包會路由傳送至最接近的區域 (對於路由傳送路徑來說)。 提供任一傳播的多區域連線能力,可帶來一些 DNS 型方法的優點,例如不需要依賴用戶端不快取其 DNS 答案,也不需要修改應用程式的 DNS 設計。
拓撲
在此案例的設計中,相同 IP 位址將會從不同 Azure 區域中的虛擬網路公告,其中網路虛擬設備 (NVA) 會透過 Azure 路由伺服器公告應用程式的 IP 位址。 下圖描述兩個基本中樞和輪輻拓撲,分別位於不同的 Azure 區域中。 每個區域中的 NVA 都會公告相同的路由 (在此範例中為a.b.c.d/32
) 至其本地 Azure 路由伺服器 (路由前置詞必須不能與 Azure 和內部部署網路重疊)。 路由會透過 ExpressRoute 進一步傳播至內部部署網路。 當應用程式使用者想要從內部部署存取應用程式時,(本文件未涵蓋的) DNS 基礎結構會將應用程式的 DNS 名稱解析為任一傳播 IP 位址 (a.b.c.d
),而內部部署網路裝置會路由至這兩個區域的其中一個區域。
要選取哪些可用區域完全是以路由屬性來決定。 如果來自這兩個區域的路由都相同,內部部署網路通常會使用 equal-cost multi-path (ECMP) 路由,將每個應用程式流程傳送至每個區域。 也可以修改 Azure 中每個 NVA 所產生的公告,讓其中一個區域成為慣用區域。 例如,在前面使用 BGP AS Path 來建立從內部部署到 Azure 工作負載的決定性路徑。
重要
NVA 公告路由應包含一些健康情況檢查機制,當應用程式在其各自區域中無法使用時停止公告路由,以避免將流量導入黑洞。
傳回流量
當來自內部部署用戶端的應用程式流量抵達 Azure 中的其中一個 NVA 時,NVA 會執行連線反向 Proxy,或執行目的地網路位址轉譯 (DNAT)。 然後,它會將封包傳送至實際應用程式,這通常位於對等互連至 NVA 部署所在之中樞虛擬網路的輪輻虛擬網路中。 從應用程式傳回的流量會透過 NVA 傳回,如果 NVA 正在反向 Proxy 連線 (或額外執行來源 NAT 至目的地 NAT),就會自然發生此情況。
否則,抵達應用程式的流量仍會源自原始內部部署用戶端的 IP 位址。 在此情況下,封包可以藉由使用者定義的路由 (UDR) 路由傳回 NVA。 如果每個區域中有多個 NVA 執行個體,則必須特別小心,因為流量可能為非對稱 (經過不同 NVA 執行個體的輸入和輸出流量)。 如果 NVA 無狀態,則非對稱流量通常不是問題,但如果 NVA 繼續追蹤連線狀態 (例如防火牆) 則會導致錯誤。