Azure App Service 環境中的可靠性

App Service 環境 是一項Azure App 服務功能,提供一個完全隔離且專用的環境,以安全且高規模地執行 App Service 應用程式。 作為 Azure 服務,App Service 環境 提供多種功能以支援您的可靠性需求。

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

本文描述 App Service 環境 中的可靠性支援,包括對暫態故障、可用性區故障及區域性中斷的韌性。 同時也說明了備份策略與服務維護韌性,並強調了關於 App Service 環境 服務水準協議(SLA)的一些關鍵資訊。

備註

與共享支援基礎設施的 App Service 公共多租戶服務不同,App Service 環境 為單一客戶提供專用運算資源及增強的網路隔離。

環境提供下列重要可靠性優點:

  • 未與其他客戶共用的專用計算資源
  • 增強的網路隔離,以改善安全性和穩定性
  • 能夠在您自己的虛擬網路中部署,更充分地控制流量路由和安全性原則

如需 App Service 中可靠性支援的詳細資訊,請參閱 App Service 中的可靠性。

可靠性的生產部署建議

建議您在環境和 App Service 方案上 啟用區域備援 ,這需要您的方案至少使用兩個實例。

可靠性架構概觀

當你實作 App Service 環境 時,你將該環境部署為你的 App Service 計畫和網頁應用程式的容器。 在設定期間,設定核心網路設定和選用硬體隔離。 如果區域支援可用性區域,選擇是否支援環境中的區域備援。

建立環境之後,您可以建立一或多個 App Service 方案。

App Service 方案會定義一組執行 Web 應用程式的計算資源。 所有 Web 應用程式都必須在方案內執行。 您可以調整方案以在多個 VM 執行個體上執行,也稱為背景工作角色。 這些執行個體會提供執行應用程式程式碼的計算資源。 單一 App Service 方案可以裝載多個應用程式。 所有應用程式都會在相同的共用 VM 執行個體集上執行。

若要使用 App Service 環境,您的方案必須使用隔離式 v2 定價層。 此層支援區域備援和大規模、任務關鍵性應用程式。

App Service 提供下列備援功能:

  • 故障域間分布: 在平台層級,Azure 會自動將你的 App Service 計畫的虛擬機實例分配到Azure區域內的 故障域。 此分佈會將共用通用電源和網路交換器的 VM 分組,藉以將當地語系化硬體失敗風險降到最低。

  • 分布於各可用區域: 如果你在支援的 App Service 方案中啟用區域冗餘,Azure會將你的實例分散到該區域內的可用區域。 如果發生區域中斷,此設定可提供更高的復原能力。 如需區域備援的詳細資訊,請參閱可用性區域支援。

  • 應用程式調整:當您將 App Service 方案設定為執行多個 VM 執行個體時,方案中的所有應用程式預設都會在所有執行個體上執行。 如果您設定自動調整方案,則所有應用程式都會根據自動調整設定一起擴增。 不過,您可以使用個別應用程式調整來自訂執行特定應用程式的方案執行個體數目。

  • 縮放單位: 在內部,App Service 會在稱為 縮放單位的平臺基礎結構上執行,也稱為 戳記 或 網頁空間。 縮放單位包含裝載和執行 App Service 所需的所有元件,包括計算、儲存體、網路和負載平衡。 Azure 管理規模單元以確保工作負載分配平衡、執行例行維護並維持整體平台可靠性。

    某些功能可能只會套用至特定縮放單位。 例如,某些 App Service 縮放單位可能支援區域備援,而相同區域中的其他縮放單位則不支援。

對瞬態故障的彈性

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

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

Microsoft提供的SDK通常處理暫時性故障。 由於您在 App Service 上裝載自己的應用程式,因此請採取步驟來減少暫時性錯誤的機會:

  • 在您的方案中部署多個實例。 App Service 會在方案中的實例上執行自動更新和其他形式的維護。 如果實例變成狀況不良,服務就可以將該實例自動取代為新的狀況良好實例。 在替換過程中,可能會有一小段時間,前一個實例無法使用,而新的實例尚未準備好處理流量。 若要減輕這些影響,請部署 App Service 方案的多個執行個體。

  • 使用部署位置。 App Service 部署位置可讓您 對應用程式進行零停機時間部署。 使用部署插槽,將部署和設定變更對使用者的影響降到最低。 部署位置也會降低應用程式重新啟動的可能性。 重新啟動應用程式會導致暫時性錯誤。

  • 避免擴大或縮小。 這些作業會變更指派給每個執行個體的 CPU、記憶體和其他資源,而且可以觸發應用程式重新啟動。 相反地,請選取符合一般負載下效能需求的階層和實例大小。 若要擴增和縮減,請動態新增和移除執行個體來處理流量變更。

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

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

你可以把 App Service 環境 設定成 區域冗餘。 接著,你可以將環境中的 App Service 計畫設定為區域冗餘,將該計畫的實例分散到多個可用區域。 你可以選擇在每個計畫上啟用或關閉區域冗餘,這表示你的環境中有些計畫是區域冗餘,有些則不是。

當您在環境中建立具區域冗餘性的 App Service 方案時,您的 App Service 方案的執行個體會分布於區域內不同的可用區域。 如需詳細資訊,請參閱 跨區域的執行個體分佈。

區域備援 App Service 環境和方案的示意圖,其中兩個執行個體部署於兩個不同的區域。

如果您的 App Service 環境和方案未設定為區域備援,它們是視為非區域性,且底層的虛擬機器 (VM) 執行個體對於可用性區失效的復原力不足。 在該區域的任何區域中斷期間,它們可能會發生停機。

需求

要為您的 App Service 環境 啟用區域冗餘,您必須符合以下條件:

  • Region support: 欲了解哪些區域支援 App Service 環境 v3 的可用區域,請參見 Regions。

  • 計劃類型: 使用 獨立 v2 型計劃類型。

  • 最低實例數: 在你的計畫中至少部署兩個實例,以確保區域冗餘。

    你環境中的非區域計畫可以用單一實例部署。

  • 縮放單位: 您的環境必須部署至支援可用性區域的縮放單位。 您不會直接控制環境使用的縮放單位。 相反地,當您建立 App Service 環境時,將根據環境的資源群組為環境指派縮放單位。 若要確定您的 App Service 環境的縮放單位是否支援區域備援,請檢查您的 App Service 環境的區域備援支援。

    如果您的環境位於不支援可用性區域的縮放單元上,則無法在環境或計劃中啟用區域冗餘。 相反地,您必須在新的資源群組中建立新的環境,並將應用程式重新部署至該環境中的新方案。

  • 配置要求:配置您的 App Service 環境 和計劃以支持區域冗餘。 您可以在建立環境期間或藉由更新現有的環境,來啟用區域備援。

跨區域分佈的執行個體

當你建立區域冗餘的 App Service 方案時,Azure 會將該方案的實例分配到該區域的可用區域。 此分佈可確保即使有一個區域發生中斷,您的應用程式仍可供使用。

區域備援部署中的實例分佈會遵循特定規則。 當應用程式縮減和擴增時,也會套用這些規則:

  • 最小實例: 您的 App Service 方案至少必須有兩個實例,才能進行區域備援。

  • Maximum availability zones supported by your plans: Azure決定你的方案可以使用的可用區數,稱為MaximumNumberOfZones。 若要檢視特定方案可以使用的可用性區域數目,請參閱檢查 App Service 方案的區域備援支援。

    備註

    你的方案可用區域數量(maxumNumberOfZones)會依比例單位和地區而異。 區域備援部署一律使用至少兩個可用性區域,且根據您的縮放單位,可能會使用更多。 無論區域數量如何,區域冗餘部署都能提供對單一區域失效的韌性,並提供相同的服務等級(SLA)。

  • Instance distribution: 啟用區域冗餘時,Azure 會自動將計畫實例分配到多個可用區域。 分配是根據以下規則進行:

    • 若實例數超過 MaximumNumberOfZones且整除,Azure 會將實例均勻分布於各區域。

    • 如果實例數量分配不均,Azure 會將剩餘實例分配到剩餘的區域。

    • 當 App Service 平台為區域備援 App Service 方案分配執行個體時,它會使用底層 Azure 虛擬機器擴展集所提供的盡力而為區域平衡。 如果每個區域都有相同數目的 VM,或與其他所有區域僅有一個執行個體的差異,則方案會進行平衡。 如需詳細資訊,請參閱 區域平衡。

  • 實體區域放置: 您可以檢視用於每個 App Service 方案實例的 實體可用性區域 。 如需詳細資訊,請參閱 檢視 App Service 方案的實體區域。

考慮事項

  • 非執行時行為: 可用性區域中斷可能會影響 App Service 的某些面向,即使應用程式仍在持續服務流量。 這些行為包括 App Service 方案調整、應用程式建立、應用程式設定和應用程式發佈。

  • 平台更新: 當你在 App Service 方案中啟用區域冗餘時,也能提升平台更新時的韌性。 如需詳細資訊,請參閱 服務維護的復原能力。

費用

啟用區域備援不會另外收費。 區域冗餘功能本身沒有額外的計量表,區域冗餘計畫的每次實例價格與單區方案相同。 不過,啟用區域備援會提高方案必須執行的執行個體數量下限,進而可能增加帳單金額。

如果您啟用可用性區域,但指定容量小於兩個,則平臺會強制執行兩個實例計數下限。 平台會向您收取這兩個執行個體的費用。

這很重要

當你啟用 App Service 環境 的可用性區域時,平台會將所有 App Service 方案從少於兩個實例擴展到擁有兩個實例。 任何包含兩個或以上實例的計畫保持不變。 啟用可用區域的作業完成後,你可以視需要調整 App Service 方案的規模,包括縮減到少於兩個執行個體。

系統會根據您的 App Service 方案 SKU、您指定的容量,以及您根據自動調整準則調整的任何執行個體向您收費。 欲了解更多資訊,請參閱 Azure App 服務 on Linux 定價及 Azure App 服務 on Windows 價格。

設定可用性區域支援

欲了解如何建立、啟用或停用新的區域冗餘 App Service 環境和新的區域冗餘 App Service 計畫,請參閱 Configure App Service 環境s and Isolated v2 App Service plans for zone redundancy。

備註

App Service 環境 區域冗餘狀態的變更需時 12 至 24 小時完成。 在升級程式期間,不會發生停機或效能問題。

容量規劃和管理

若要為可用性區域失敗做好準備,請考慮「過度佈建」App Service 方案的容量。 這種方法可讓解決方案容許某些容量遺失並繼續運作,而不會降低效能。 如需詳細資訊,請參閱使用超額佈建來管理容量。

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

下列清單描述當 App Service 方案設定區域備援,且所有可用性區域皆可運作時的預期情況:

  • 區域之間的流量路由:在正常作業期間,流量會在所有可用性區域的所有可用 App Service 方案執行個體之間路由傳送。

  • 區域之間的數據復寫: 在一般作業期間,應用程式檔案系統中儲存的任何狀態都會儲存在區域備援記憶體中,並在可用性區域之間同步復寫。

區域失敗期間的行為

可用性區域中斷可能會影響 App Service 的某些層面,即使應用程式繼續提供流量也一樣。 這些行為包括 App Service 方案調整、應用程式建立、應用程式設定和應用程式發佈。

下列清單說明當 App Service 方案設定區域備援,且一或多個可用性區域無法使用時的預期情況:

  • 偵測和回應: App Service 平臺會自動偵測可用性區域中的失敗,並起始回應。 不需要手動介入即可起始區域容錯移轉。
  • 作用中要求:連線到錯誤可用性區域中 App Service 方案執行個體的任何進行中要求都會終止。 重試這些要求。

  • 流量重新路由:App Service 會從該區域偵測遺失的執行個體,並嘗試尋找新的取代執行個體。 App Service 找到替代項目之後,會視需要將流量分佈到新的執行個體。

    如果已設定自動調整並判斷需要更多執行個體,則會向 App Service 要求執行個體。 自動調整行為與 App Service 平台行為無關。 因此您的執行個體計數規格不需要是二的倍數。 如需詳細資訊,請參閱在 App Service 中擴展應用程式及自動調整概觀。

    這很重要

    Azure 並不保證在區域限制情境下,更多實例的請求一定成功。 平台會嘗試以最佳方式回填遺失的執行個體。 如果您需要可用性區域失敗期間的保證容量,請建立並設定您的 App Service 方案,藉由超額佈建容量來考慮區域遺失。

  • 非執行階段行為:即使可用性區域發生中斷,區域備援 App Service 方案中的應用程式仍會繼續執行並提供流量。 不過,在可用性區域中斷期間,非執行階段行為仍會受到影響。 這些行為包括 App Service 方案調整、應用程式建立、應用程式設定和應用程式發佈。

區域復原

當可用性區域復原時,App Service 會自動在復原的可用性區域中建立實例、移除在其他可用性區域中建立的任何暫存實例,以及如往常路由傳送實例之間的流量。

測試區域失敗

App Service 平台會管理區域備援 App Service 方案的流量路由、容錯移轉和容錯回復。 此功能完全受控,因此您不需要起始或驗證可用性區域失敗程序。

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

App Service 是單一區域服務。 如果區域變成無法使用,您的環境及其方案和應用程式也會變成無法使用。

客製化多區域韌性解決方案

若要降低單一區域失敗影響應用程式的風險,請跨多個區域部署多個 App Service 環境。 下列步驟有助於加強復原能力:

  • 將您的應用程式部署至每個區域中的 App Service 環境。
  • 設定負載平衡和故障轉移原則。
  • 跨區域複寫您的數據,以便復原最後一個應用程式狀態。

說明此架構的範例方法,請參見使用 App Service 環境 的高可用性企業部署。

備份與還原

若要將 App Service 應用程式備份至檔案,請使用 App Service 備份與還原功能。

在難以重新部署程式碼,或當您將狀態儲存在磁碟上時,這些功能有幫助。 大部分解決方案不應該只依賴備份。 請改用本指南中的其他功能來支援復原需求。 不過,備份可防範其他方法未發生的一些風險。

這很重要

自2028年3月31日起,Azure App 服務自訂備份將不再支援備份已連結的資料庫。 如需詳細資訊,請參閱不再支援串聯資料庫備份。

相反地,請使用連結資料庫的原生備份與還原工具。 如需詳細資訊,請參閱 在App Service 中備份和還原您的應用程式。

服務維護的韌性

App Service 會執行一般服務升級和其他維護工作。 為了在升級期間維護您預期的容量,平台會在升級程序期間自動新增 App Service 方案的額外執行個體。

啟用區域備援。 當您在 App Service 方案上啟用區域備援時,也會改善平台更新期間的復原能力。 更新網域包含更新期間離線的 VM 集合,且它們會對應至可用性區域。 在 App Service 方案中部署多個執行個體,並在升級期間執行個體或區域狀況不良時,為方案啟用區域備援會增加額外的復原層。

自定義升級週期。 你可以自訂 App Service 環境 的升級週期。 如果您需要驗證升級對工作負載的影響,請啟用手動升級。 此方法可讓您先在非生產執行個體上執行驗證和測試,再將其套用至生產執行個體。

欲了解更多維護偏好設定資訊,請參閱App Service 環境 計畫維護的升級偏好設定。

服務等級協定

Azure 服務的服務層級協議(SLA)描述了每項服務的預期可用性,以及您的解決方案必須符合的條件,以達成該可用性預期。 欲了解更多資訊,請參閱 線上服務的 SLA。

當您部署區域備援 App Service 方案時,SLA 中定義的運行時間百分比會增加。 無論底層尺度單元的可用區域數量如何,SLA 都適用。