共用方式為


Azure 應用程式閘道 v2 中的可靠性

Azure 應用程式閘道 是 Web 流量負載平衡器,可用來管理 Web 應用程式的流量。 它提供自動調整、區域備援、靜態虛擬 IP (VIP) 位址與 Web 應用程式防火牆 (WAF) 整合等進階功能,以提供高可用性與安全的應用程式傳遞服務。

當您使用 Azure 時, 可靠性是共同的責任。 Microsoft 提供一系列功能來支援韌性和復原。 您有責任瞭解這些功能在您使用的所有服務中如何運作,並選取符合業務目標和正常運作時間目標所需的功能。

本文說明如何讓應用程式入口 v2 能夠復原各種潛在的中斷和問題,包括暫時性錯誤、可用性區域中斷和區域中斷。 它也會醒目提示應用程式閘道 v2 服務等級協定 (SLA) 的一些重要資訊。

這很重要

整體解決方案的可靠性取決於應用程式閘道將流量路由傳送至其中的後端伺服器設定。 視您的解決方案而定,這些可能是 Azure 虛擬機器 (VM)、Azure 虛擬機器擴展集、Azure App Services 或外部端點。

您的後端伺服器不在本文的範圍內,但其可用性設定會直接影響應用程式的復原能力。 檢閱您解決方案中所有 Azure 服務的可靠性指南,以了解每個服務如何支援您的可靠性需求。 透過確保後端伺服器也已針對高可用性與區域備援進行設定,您可以達到應用程式的端對端可靠性。

生產部署建議

若要了解如何部署應用程式閘道以支援解決方案的可靠性需求,以及可靠性如何影響結構的其他層面,請參閱 Azure Well-Architected Framework 中應用程式閘道的結構最佳做法 (部分機器翻譯)。

可靠性架構概觀

應用程式閘道是受管理的服務。 請務必了解服務結構的一些關鍵元素,以便做出明智的可靠性決策。

  • 閘道: 當您部署應用程式閘道時,您會部署 閘道,這是您使用的 Azure 資源。

  • 實例:實例是閘道的單一單位。 一個閘道有多個執行個體。 每個執行個體都有自己的私有 IP 位址、處理流量和路由請求。

    這很重要

    為了實現高可用性,每個閘道一律會使用至少兩個執行個體來建立。 不過,Azure 入口網站可能會指出您的閘道只有一個執行個體,即使它實際上有兩個。

    平台會自動管理執行個體建立、狀況監控,以及取代狀況不良的執行個體。 它也會管理在縮減事件期間正常移除執行個體。 此流程稱為「連線清空」

    下圖顯示一個具有兩個實例的閘道:

    顯示具有兩個實例的 Azure 應用程式閘道的圖表。

若要將執行個體分散到多個可用性區域,從而在資料中心失敗期間增加備援和可用性,您可以啟用區域備援。

  • 調整:閘道可靠性的一個重要層面,就是如何調整以符合流量需求。 如果閘道未適當調整,流量就無法流動,而且您的應用程式可能會發生停機。 您可以將應用程式閘道設定為使用下列其中一種調整模式。

    • 自動調整:自動調整您指定範圍內的執行個體數目。 自動調整會根據目前的流量需求調整執行個體數目。

    • 手動調整:您必須指定確切的執行個體數目。 您必須負責選取符合流量需求的執行個體計數。

    「容量單位」代表閘道可以處理的容量。 容量單位是綜合量值,其整合了流量、連線數目與計算資源。 每個執行個體都可以處理至少 10 個容量單位。 如需詳細資訊,請參閱調整應用程式閘道 v2 和 WAF v2 (部分機器翻譯)。

  • 健全狀態探查:應用程式閘道會使用健全狀態探查 (部分機器翻譯) 來持續監視您的後端伺服器,例如個別應用程式伺服器。 偵測到狀況不良的伺服器時,流量會自動重新導向至狀況良好的後端伺服器。

對瞬態故障的彈性

暫時性錯誤是元件中的短暫間歇性失敗。 它們經常出現在雲端等分散式環境中,而且是作業的一般部分。 暫時性錯誤會在短時間內自行修正。 請務必讓您的應用程式能處理暫時性錯誤,這通常是透過重試受影響的要求來進行。

所有雲端裝載的應用程式在與任何雲端裝載的 API、資料庫和其他元件通訊時,都應該遵循 Azure 暫時性錯誤處理指引。 如需詳細資訊,請參閱 處理暫時性錯誤的建議

當您使用應用程式閘道時,請考慮下列最佳做法:

  • 實作重試邏輯: 用戶端應該針對暫時性連線失敗實作適當的重試機制。

  • 設定具有容錯的健全狀態探查。 設定健全狀態探查,以允許暫時性錯誤寬限期。 健全狀態探查可以搭配「狀況不良閾值」進行設定,這會指定應觸發將後端伺服器標示為狀況不良的連續失敗連線嘗試次數。 3 的預設值可確保後端伺服器中的暫時性錯誤不會觸發應用程式閘道不必要地將伺服器標示為狀況不良。

對可用性區域故障的抵抗力

可用性區域 是 Azure 區域內物理上獨立的資料中心群組。 當某個區域發生故障時,服務可以切換至其他剩餘的區域。

當您在支援的區域中部署 Standard_v2 或 WAF_v2 閘道時,應用程式閘道會提供兩種類型的可用性區域支援。

  • 區域備援:Azure 會自動將執行個體散發到兩個或多個可用性區域。

    部署新閘道時,預設情況下它是具區域備援功能的。

    下圖顯示區域備援閘道,其中包含三個執行個體,這些執行個體分佈在三個可用性區域中:

    顯示具有三個實例的 Azure 應用程式閘道的圖表,每個實例都位於個別的可用性區域中。

  • 區域:Azure 會將所有應用程式閘道執行個體部署至您在所選 Azure 區域內選取的單一區域。

    下圖顯示區域閘道,其中包含部署在相同可用性區域中的三個執行個體:

    顯示具有三個實例的 Azure 應用程式閘道的圖表,全部位於相同的可用性區域中。

    這很重要

    只有在 跨區域延遲 (部分機器翻譯) 太高而無法滿足您的需求,以及您確認該延遲不符合您的需求時,才建議固定至單一可用性區域。 區域閘道本身不提供可用性區域中斷的復原能力。 若要改善區域應用程式閘道部署的復原能力,您必須將個別閘道明確部署至多個可用性區域,並設定流量路由傳送與容錯移轉。

需求

  • 地區支援: 應用程式閘道支援所有 支援可用性區域的 Azure 區域中 Standard_v2 層和 WAF_v2 層的可用性區域。

  • 存貨單位: 您必須使用 Standard_v2 或 WAF_v2 SKU 來啟用可用性區域支援。

  • 實例計數: 您的閘道必須至少有兩個實例。

    備註

    所有閘道至少有兩個執行個體,以實現高可用性。 即使 Azure 入口網站指出您的閘道具有單一執行個體,在內部也一律會使用至少兩個執行個體建立。

考慮事項

區域備援閘道會分散到區域中的兩個或多個可用性區域。 例如,在具有三個可用性區域的區域中,區域備援應用程式閘道 v2 部署至少在其中兩個區域中具有執行個體。 根據區域容量與平台決策,執行個體可能會分散在兩個區域或三個區域中。

費用

應用程式閘道 v2 的可用性區域支援不會產生超出標準容量單位價格的額外費用。 如需價格詳細資料,請參閱了解應用程式閘道和 WAF 的價格 (部分機器翻譯),以及應用程式閘道定價

設定可用性區域支援

本節說明如何設定閘道的可用性區域支援。

  • 建立具有可用性區域支援的新閘道。 您用來設定可用性區域的方法取決於您要建立區域備援閘道或區域閘道。

    • 區域備援:新的閘道預設會建立為區域備援閘道。 執行個體分散在多個可用性區域中,而且可能使用區域 (Region) 中的兩個或多個區域 (Zone)。

      若要部署新閘道,請參閱快速入門:使用應用程式閘道引導 Web 流量 - Azure 入口網站 (部分機器翻譯)。

      當您使用 Azure CLI、Azure PowerShell、Bicep、Azure Resource Manager 範本 (ARM 範本) 或 Terraform 時,您可以選擇性地指定要將閘道部署到哪個可用性區域。 您可以透過指定兩個以上的區域來部署區域備援閘道。 不過,建議您省略區域清單,以便閘道可以使用所有可用性區域,除非您有特定理由不使用特定區域。

    • 區域:您可以使用下列工具來部署區域閘道。

      • Azure CLI:您應該使用 --zones 命令中的 az network application-gateway create 參數明確選取區域。 若要將閘道固定到單一區域,請指定邏輯區域編號。

      • Azure PowerShell:-Zone 命令中使用 New-AzApplicationGateway 參數。 若要將閘道固定到單一區域,請指定邏輯區域編號。

      • Bicep 與 ARM 範本:在資源定義中設定 zones 屬性。 若要將閘道固定到單一區域,請指定邏輯區域編號。

      備註

      當您選取要使用的可用性區域時,實際上會選取 邏輯可用性區域。 如果您在不同的 Azure 訂用帳戶中部署其他工作負載元件,他們可能會使用不同的邏輯可用性區域號碼來存取相同的實體可用性區域。 如需詳細資訊,請參閱實體和邏輯可用性區域

  • 變更現有應用程式閘道 v2 執行個體的可用性區域設定。 除非您將所有閘道都設定為區域性,否則它們都是具區域備援功能的。

    如果您需要從區域備援閘道移至區域設定,則必須部署新閘道。

  • 停用可用性區域支援。 無法停用可用性區域支援。 支援可用性區域之區域中的所有閘道都必須是區域備援閘道或區域閘道。

容量規劃和管理

當您針對區域備援應用程式閘道或部署至多個區域之多個區域閘道規劃區域失敗時,請考慮在重新分配流量時,存續區域中的執行個體可能會遇到增加的負載。 連線可能會遇到持續幾秒鐘的短暫中斷。

若要有效管理容量,請採取下列動作:

  • 使用自動調整。 設定具有適當最大執行個體計數的自動調整,以在區域中斷期間處理潛在的流量轉散發。

    使用手動調整時,若要為可用性區域失敗做好準備,請考慮「超額佈建」閘道中的執行個體數目。 超額佈建可讓解決方案容忍某種程度的容量損失,同時繼續運作而不會降低效能。 如需詳細資訊,請參閱 使用過度布建來管理容量

  • 回應流量模式的變更。 監視容量計量,並根據您的流量模式與效能需求調整調整參數。

所有區域都狀況良好時的行為

下一節描述當應用程式閘道 v2 搭配可用性區域支援進行設定且所有可用性區域皆可運作時,會發生什麼事。

  • 區域之間的流量路由傳送:應用程式閘道會自動將傳入要求散發到閘道使用之所有區域中的執行個體。 此主動-主動設定可確保正常作業條件下的最佳效能與負載散發。

  • 執行個體管理:平台會自動管理閘道使用之區域中的執行個體放置。 它會取代失敗的執行個體,並維持已設定的執行個體計數。 狀況監控可確保只有狀況良好的執行個體才會接收流量。

區域失敗期間的行為

下一節描述當應用程式閘道 v2 搭配可用性區域支援進行設定且一或多個可用性區域無法使用時,會發生什麼事。

  • 偵測及回應:偵測及回應的責任取決於您的閘道使用的可用性區域設定。

    • 區域備援:Microsoft 負責管理區域失敗的偵測,並自動起始容錯移轉。 客戶無需採取任何行動。

    • 區域:您必須偵測可用性區域遺失,並起始容錯移轉至您在另一個可用性區域中建立的次要閘道。

  • 使用中要求:在區域中斷期間,正由該區域中的執行個體處理的要求會終止。 用戶端應該遵循如何處理暫時性錯誤的指導來重試要求。

  • 預期資料遺失:區域失敗預期不會造成資料遺失,因為應用程式閘道是無狀態服務。

  • 預期停機:您可以預期的停機取決於閘道使用的可用性區域設定。

    • 區域備援:在區域中斷期間,連線可能會遇到短暫的中斷,通常會隨著流量重新分配而持續幾秒鐘。

    • 區域:當區域無法使用時,您的閘道將無法使用,直到可用性區域復原為止。

  • 執行個體管理:執行個體管理行為取決於您的閘道使用的可用性區域設定。

    • 區域備援:平台會嘗試在其他可用性區域中建立暫存執行個體來維持閘道的容量。

      在內部,應用程式閘道會使用虛擬機器擴展集,這會執行盡力而為的區域負載平衡。 由於此行為,當容量無法平均分散到各區域區域 (+/- 1 個執行個體) 時,可能不會發生調整作業。

    • 區域:如果您需要執行個體,則必須負責在狀況良好的區域中加以建立。

  • 流量重新路由傳送:流量重新路由傳送行為取決於您的閘道使用的可用性區域設定。

    • 區域備援:應用程式閘道會立即將流量轉散發至狀況良好之區域中的執行個體,包括暫時建立的任何執行個體。

    • 區域:當區域無法使用時,您的閘道將無法使用。 如果您在另一個可用性區域中有次要閘道,您必須負責將流量重新路由傳送至該次要閘道。

區域復原

區域復原行為取決於您的閘道使用的可用性區域設定:

  • 區域備援:當受影響的可用性區域復原時,應用程式閘道會自動採取下列動作:

    • 還原已復原區域中的執行個體

    • 移除中斷期間在其他區域中建立的任何暫存執行個體

    • 回復為跨所有可用區域的一般流量散發

  • 區域:在可用性區域復原之後,您必須負責將流量重新路由傳送至原始可用性區域中的閘道。

測試區域失敗

測試區域失敗的選項取決於您的閘道使用的可用性區域設定。

  • 區域備援:應用程式閘道平台會完全管理區域備援閘道的流量路由傳送、容錯移轉,以及容錯回復。 因為 Microsoft 會管理此功能,所以您不需要起始或驗證可用性區域失敗流程。 平台會以透明方式處理所有區域失敗案例。

  • 區域:您可以透過明確停止閘道來模擬可用性區域失敗的某些層面。 透過停止閘道,您可以測試其他系統與負載平衡器如何處理閘道中的中斷。 如需詳細資訊,請參閱如何停止和啟動應用程式閘道 (部分機器翻譯)。

對區域範圍故障的復原能力

應用程式閘道 v2 是單一區域服務。 如果區域變成無法使用,您的閘道也會無法使用。

自訂多區域解決方案,以實現復原能力

若要使用應用程式閘道 v2 來達成多區域復原能力,您必須在每個所需的區域中部署個別的閘道,並跨區域實作流量管理。 您必須負責部署及設定每個閘道,以及流量路由傳送與容錯移轉。 請考慮下列幾點:

  • 設定跨區域一致的應用程式閘道規則與原則。 您可以使用 Bicep 或 Terraform 等工具來定義基礎結構即程式碼 (IaC),以簡化跨區域的部署及設定。

  • 部署可在區域閘道之間傳送流量的全域負載平衡解決方案。 Azure 中的全域負載平衡服務是 Azure 流量管理員與 Azure Front Door。 每個服務都會根據健康情況檢查、地理鄰近性或效能計量來路由傳送流量。 Azure Front Door 也提供一系列其他功能,包括分散式阻斷服務 (DDoS) 攻擊保護、WAF 功能,以及進階規則與路由傳送功能。

  • 除了閘道之外,請考慮跨區域複寫後端應用程式與資料。 請參閱每個 Azure 服務的可靠性指南,以了解多區域部署方法。

如需範例方法,請參閱搭配流量管理員使用應用程式閘道 (部分機器翻譯)。

備份與還原

應用程式閘道 v2 是不需要傳統備份與還原作業的無狀態服務。 所有設定資料都會儲存在 Resource Manager 中,而且可以使用 IaC 方法 (例如 Bicep 檔案或 ARM 範本) 重新部署。

針對組態管理與災害復原,您應該採取下列動作:

  • 使用 Bicep 檔案或 ARM 範本來定義應用程式閘道部署的設定,或匯出現有閘道的設定。

  • 將傳輸層安全性 (TLS) 憑證儲存在 Azure Key Vault 中,以進行安全的管理及複寫。

  • 文件與版本控制自訂設定、規則與原則。

  • 實作自動化部署管線,以進行一致的閘道佈建。

針對大部分的解決方案,您不應該只依賴備份。 請改用本指南中所述的其他功能來支持復原需求。 不過,備份可防範其他方法未發生的一些風險。 欲了解更多資訊,請參閱冗餘、複寫與備份是什麼?

服務維護的韌性

應用程式閘道 v2 會執行定期服務升級和其他維護工作。 為了在升級期間維持預期的容量,平台會在升級程序期間自動新增閘道的額外執行個體。 不過,您必須確保閘道的子網路有足夠的可用 IP 位址空間,以建立暫存執行個體。 如需詳細資訊,請參閱 應用程式閘道如何處理例行維護?

服務等級協定

Azure 服務的服務等級協定 (SLA) 描述服務的預期可用性,以及解決方案必須符合才能達到該可用性預期的條件。 如需詳細資訊,請參閱 在線服務的 SLA

若要讓閘道符合應用程式閘道可用性 SLA 的資格,它必須符合下列準則:

  • 必須正確設定它才能執行 HTTP 負載平衡。
  • 它必須是區域備援,或必須被設定為啟用自動調整。