共用方式為


在 Azure NAT Gateway 中的可靠性

Azure NAT 閘道 是一種完全受管理的網路位址轉換(NAT)服務,為連接到您的私人虛擬網路的資源提供外接網路連線。 該服務同時提供來源網路位址轉換(SNAT)以支援外發連線,以及目的網路位址轉換(DNAT)僅用於外發起始連線的回應封包。 由於它位於關鍵網路路徑上,Azure NAT Gateway 被設計成一項高度韌性的服務。

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

本文說明如何讓 Azure NAT Gateway 對各種潛在中斷與問題具韌性,包括暫時性故障與可用性區中斷。 同時也強調了關於 Azure NAT Gateway 服務等級協議(SLA)的一些重要資訊。

這很重要

當你考慮 NAT 閘道器的可靠性時,也需要考慮虛擬機(VM)、磁碟、其他網路基礎架構以及運行在虛擬機上的應用程式的可靠性。 如果其他元件的韌性不夠強,僅提升 NAT 閘道器的韌性可能影響有限。 根據您的復原需求,您可能需要跨多個區域進行組態變更。

這很重要

Standard V2 SKU Azure NAT Gateway 目前處於預覽階段。 請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

生產部署建議

針對生產工作負載,我們建議您:

  • 使用 StandardV2 SKU,它會自動啟用支援區域的 區域冗餘

    備註

    在使用 StandardV2 NAT 閘道 器之前,請先檢視其主要限制,以確保您的設定受到支援。

  • 將 NAT 閘道器配置足夠的公共 IP 位址 以應付尖峰連線需求,這能降低因 SNAT 埠耗盡而導致可用性問題的可能性。
  • 使用 StandardV2 SKU 的公用 IP 位址搭配 StandardV2 NAT 閘道。 標準 SKU 的公共 IP 位址不支援 StandardV2 NAT 閘道。

可靠性架構概觀

本節說明服務運作中從可靠性角度來看最為重要的部分。 本節介紹邏輯架構,包含你部署和使用的部分資源與功能。 它還討論了物理架構,其中提供了有關服務如何在幕後工作的詳細信息。

邏輯架構

NAT 閘道是一種你部署的資源。 要將 NAT 閘道作為外出網路流量的預設路由,你需要將其附加到虛擬網路中的一個或多個子網路。 你不需要設定任何自訂路由或其他路由設定。

實體架構

在內部,NAT 閘道由一個或多個實例組成,這些 實例代表運作服務所需的底層基礎設施。

Azure NAT 閘道實作了利用軟體定義網路的分散式架構,提供高可靠性與可擴展性。 該服務能跨越多個故障領域運作,使其能在多次基礎設施元件故障中不影響服務。 Azure 管理底層服務運作,包括跨故障域的分散與基礎設施冗餘。

欲了解更多關於 Azure NAT Gateway 架構與冗餘的資訊,請參閱 Azure NAT Gateway 資源

對瞬態故障的彈性

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

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

SNAT 埠耗盡 是指應用程式對同一 IP 位址和埠進行多個獨立連線,導致出站 IP 可用的 SNAT 埠耗盡的情況。 SNAT 埠耗盡可能表現為應用程式中的暫時性故障。 為了降低與網路位址轉換相關的瞬態故障發生的可能性,您應該:

  • 盡量減少 SNAT 端口耗盡的可能性。 透過實作連線池和適當的連線生命週期管理,配置你的應用程式以優雅地處理 SNAT。

  • 部署足夠的公共 IP 位址。 單一 NAT 閘道支援多個公共 IP 位址,每個公共 IP 位址提供一組獨立的 SNAT 埠口。

  • 監控 NAT 閘道的資料通路可用性指標。 使用 Azure Monitor 及早偵測潛在的連線問題。 設定連線故障與 SNAT 埠耗盡警示,主動識別並處理暫時性故障狀況,避免影響應用程式的外撥連線。 欲了解更多,請參閱 Azure NAT Gateway 指標與警示是什麼?

  • 避免設定過高的閒置超時值。 閒置逾時值遠高於NAT閘道連線預設的4分鐘,可能導致在高連線量時導致SNAT埠耗盡。

如需完整的連線管理及故障排除 Azure NAT Gateway 特定問題,請參閱 「故障排除 Azure NAT Gateway 連線」。

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

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

Azure NAT Gateway 支援具有區域冗餘和區域性配置的可用性區 (availability zones):

  • 區域冗餘: 當你使用 Azure NAT Gateway 的 StandardV2 SKU 時,區域冗餘會自動啟用。 區域冗餘將 NAT 閘道的實例分散到該區域內所有可用區域。 使用區域冗餘配置,可以提升生產工作負載的韌性與可靠性。

    NAT 閘道器區域冗餘部署示意圖。

  • 分區: 當你使用標準(v1)SKU時,可以選擇建立區域配置。 區域 NAT 閘道器部署在你選擇的單一可用區域。 當 NAT 閘道器部署到特定區域時,會從該區域明確提供對網際網路的外出連線。 不允許使用來自不同可用區域的區域公共 IP 位址。 所有來自連接子網的流量都會經過 NAT 閘道器,即使那個閘道位於不同的可用性區域。

    NAT 閘道的區域部署示意圖。

    如果可用性區內的 NAT 閘道發生故障,連接子網中的所有虛擬機都會無法連上網際網路,即使這些虛擬機處於健康的可用性區。

    這很重要

    只有在跨區域延遲太高而無法滿足您的需求,以及您確認該延遲不符合您的需求後,才建議固定至單一可用性區域。 區域資源本身不會提供可用性區域中斷的復原能力。 若要改善區域性資源的復原能力,您必須明確將個別資源部署到多個可用性區域,並設定流量路由和容錯移轉。 欲了解更多資訊,請參閱 區域資源與區域韌性

    如果你在多個可用區域部署虛擬機,且需要使用區域 NAT 閘道器,你可以在每個可用區域建立 區域堆疊 。 若要建立區域堆疊,您需要部署:

    • 多重子網:你為每個可用區域建立獨立子網,而不是使用跨區域的子網。
    • 區域 NAT 閘道:每個子網都有自己的 NAT 閘道,部署在與子網相同的可用性區域內。
    • 手動虛擬機指派:你明確將每台虛擬機放在正確的可用區域及其對應的子網路中。

    透過建立區域堆疊來實現區域隔離的示意圖。

如果你部署了標準(v1)NAT 閘道器且沒有指定可用性區,那麼 NAT 閘道器就會變成 非區域,也就是 Azure 會選擇可用區。 如果該區域的任何可用區域出現故障,你的 NAT 閘道器可能會受到影響。 我們不建議非分區配置,因為它無法防止可用性區斷。

需求

  • 區域支援: 區域冗餘及區域 NAT 閘道器可部署至 任何支援可用性區域的區域

  • SKU: 要部署區域冗餘的 NAT 閘道,必須使用 StandardV2 SKU。 要部署區域 NAT 閘道,必須使用標準 SKU。 我們建議使用 StandardV2 SKU。

  • 公共 IP 位址: 附加於 NAT 閘道的公共 IP 位址需求依 SKU 及部署配置而異:

    NAT 閘道 SKU 可用性區支援類型 公共 IP 要求
    標準V2 區域備援 必須以 StandardV2 公共 IP 部署
    標準 區域性 標準公共 IP 必須是區域冗餘型或單一區域型,且位於與 NAT 閘道器相同的區域
    標準 非分區 標準公用 IP 可以是任何區域的區域備援或區域性 IP。

費用

使用 Azure NAT Gateway 的可用性區域支援無需額外費用。 欲了解更多價格資訊,請參閱 Azure NAT Gateway 定價

設定可用性區域支援

  • 新資源: 部署步驟取決於你想用哪種可用性區設定作為 NAT 閘道。

    • 區域冗餘:若要使用 StandardV2 SKU 部署新的區域冗餘 NAT 閘道,請參見 「建立標準 V2 Azure NAT 閘道」。

    • 分區: 若要使用標準 SKU 部署新的區域 NAT 閘道,請參見 建立 NAT 閘道。 建立 NAT 閘道器時,請選擇它的可用性區域,而不是選擇 無區域

  • 啟用可用區支援: Azure NAT Gateway 可用性區域設定在部署後無法更改。 要修改可用性區設定,你必須部署一個新的 NAT 閘道器,並符合所需的區域設定。

    要從 Standard 升級到 StandardV2 NAT 閘道器,你還必須建立一個新的公共 IP 位址,該位址使用了 StandardV2 SKU。

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

本節說明當 NAT 閘道器設定支援可用區域且所有可用區域均正常運作時,可預期的情況。

  • 區域間流量路由:虛擬機流量如何透過 NAT 閘道器路由,取決於 NAT 閘道所使用的可用性區設定。

    • 區域冗餘: 流量可透過任何可用區域內的 NAT 閘道實例路由。

    • 分區: 每個 NAT 閘道實例在其分配的可用性區域內獨立運作。 來自子網資源的出站流量會經過 NAT 閘道器的區域,即使虛擬機位於不同區域。

  • 區域間的資料複製:Azure NAT Gateway 不執行區域間的資料複製,因為它是用於外出連線的無狀態服務。 每個 NAT 閘道實例在其可用區域內獨立運作,無需與其他區域的實例同步。

區域失敗期間的行為

本節說明當 NAT 閘道器設定支援可用性區域時,發生可用性區域中斷時,可以預期的情況。

  • 偵測與回應: 偵測與回應的責任取決於你的 NAT 閘道所使用的可用性區域配置。

    • 區域冗餘: Azure NAT 閘道器會偵測並回應可用性區域的故障。 您不需要執行任何動作來起始可用性區域容錯移轉。

    • 區域:您必須自行實作應用程式層級的容錯移轉,以便使用替代連線方式或其他區域的 NAT 閘道。

  • 通知: Microsoft 不會在區域關閉時自動通知您。 不過,你可以使用 Azure Resource Health 監控單一資源的健康狀況,並設定資源 健康警示 來通知你問題。 你也可以使用 Azure Service Health 來了解整體服務的健康狀況,包括任何區域故障,並設定 服務健康警示 來通知你問題。

    你也可以利用 NAT 閘道的資料路徑可用性指標來監控 NAT 閘道的健康狀況。 你可以設定資料路徑可用性指標的警示,偵測連線問題。

  • 目前的請求: 主動請求的處理方式取決於你的 NAT 閘道所使用的可用性區域設定。

    • 區域冗餘: 任何透過故障區域實例的活躍外撥連線都會被中斷,客戶端需要重新嘗試。 後續的連線嘗試會經過另一個可用區域的 NAT 閘道實例。

    • 區域:透過失敗的區域 NAT 閘道執行的作用中輸出連線會遺失。 你必須決定是否以及如何透過替代連接路徑重新建立連結。 應用程式應實作重試邏輯來處理連線失敗。

      如果流量被重新路由,因為出站的公共 IP 位址改變,任何 TCP 會話都可能需要重新協商。

  • 預期資料遺失: 不會發生資料遺失,因為 Azure NAT Gateway 是無狀態的出站連線服務。 連線狀態在連線重新建立時會復原。

  • 預期的停機時間: 預期的停機時間取決於你的 NAT 閘道所使用的可用性區設定。

    • 區域冗餘: 故障區域現有的連接可能會中斷。 用戶端可以立即重試連線,請求也會路由到其他區域的執行個體。 所有來自健康區的剩餘連結仍然存在。

    • 分區: 出站連線會中斷,直到分區恢復,或直到你透過其他分區的連線方式或 NAT 閘道器重新路由流量。

  • 交通改道: 流量重路由的行為取決於你的 NAT 閘道所使用的可用性區設定。

    • 區域冗餘: 新的連線請求會透過健康可用性區的 NAT 閘道實例路由。

      受影響的可用區域內的虛擬機器不太可能還能運作。 然而,若發生部分區域故障導致 Azure NAT 閘道無法使用,而虛擬機仍持續運作時,受影響區域虛擬機的外出連線將經由另一區域的 NAT 閘道實例路由。

    • 區域:您必須自行實作任何應用程式層級的容錯移轉,例如替代連線方式或其他區域的 NAT 閘道。

區域復原

因為 Azure NAT Gateway 是無狀態服務,備用操作不需要人工介入。

當可用性區域恢復時,該區域內的 NAT 閘道實例會自動開放給新的出站連線。 在中斷期間,透過 NAT 閘道實例在其他區域建立的連線,會繼續使用目前的連接路徑,直到連線自然終止。

測試區域失敗

測試區域失敗的選項取決於您執行個體所使用的可用性區域設定。

  • 區域冗餘: Azure NAT 閘道平台負責管理區域冗餘 NAT 閘道的流量路由、故障轉移與備援。 由於此功能完全受控,因此您不需要起始任何專案或驗證可用性區域失敗程式。

  • 區域:您必須自行準備並測試容錯移轉計畫,以防區域失敗發生。

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

Azure NAT Gateway 是一項單一區域服務,運作於特定 Azure 區域的範圍內。 該服務不提供原生多區域功能或區域間自動故障切換。 若某區域無法使用,該區域的 NAT 閘道器也會無法使用。

如果你設計的是多個區域的網路方式,應該在每個區域部署獨立的 NAT 閘道。

服務等級協定

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

Azure NAT Gateway 受 Azure VNet NAT SLA 覆蓋。 可用性 SLA 僅適用於你擁有兩台或以上健康虛擬機時,且排除 SNAT 埠耗盡的停機時間計算。