Azure App Service 的可靠性
本文說明 Azure App 服務的可靠性支持,涵蓋具有可用性區域的區域內部復原能力,以及多區域部署的相關信息。
復原是您與Microsoft之間的共同責任,因此本文也涵蓋建置符合您需求的復原解決方案的方法。
Azure App Service 是 HTTP 型服務,用來裝載 Web 應用程式、REST API 和行動後端。 Azure App 服務 將 Microsoft Azure 的強大功能新增至您的應用程式,具有安全性、負載平衡、自動調整和自動化管理的功能。 若要探索 Azure App Service 如何支援應用程式工作負載的可靠性和復原功能,請參閱為何要使用 App Service?
當您部署 Azure App 服務 時,您可以建立 App Service 方案的多個實例,代表執行應用程式程式代碼的計算背景工作角色。 雖然平臺會努力跨不同的容錯網域部署實例,但它不會自動將實例分散到可用性區域。
生產部署建議
針對生產環境部署,您應該:
- 使用進階 v3 App Service 方案。
- 啟用區域備援,這需要您的App Service方案至少使用三個實例。
- 啟用區域備援,這需要您的App Service方案至少使用三個實例。
暫時性錯誤
暫時性錯誤是元件中的短暫間歇性失敗。 它們經常出現在雲端等分散式環境中,而且是作業的一般部分。 在短時間內,他們糾正了自己。 請務必讓應用程式處理暫時性錯誤,通常是藉由重試受影響的要求。
所有雲端裝載的應用程式都應該遵循 Azure 的暫時性錯誤處理指引,以與任何雲端裝載的 API、資料庫和其他元件通訊。 若要深入瞭解處理暫時性錯誤,請參閱 處理暫時性錯誤的建議。
雖然Microsoft提供的 SDK 通常會處理暫時性錯誤,因為您在 Azure App 服務 上裝載自己的應用程式,但您必須考慮如何避免造成暫時性錯誤,方法是確定您:
部署方案的多個實例。 Azure App 服務 會在方案的實例上執行自動更新和其他形式的維護。 如果實例變成狀況不良,服務就可以將該實例自動取代為新的狀況良好實例。 在取代程序期間,可能會有一段短時間內,前一個實例無法使用,而且新的實例尚未準備好提供流量。 您可以藉由部署 App Service 方案的多個實例來減輕此行為的影響。
使用部署位置。 Azure App 服務 部署位置可讓您零停機部署您的應用程式。 使用部署位置,將部署和設定變更對用戶的影響降到最低。 使用部署位置也會降低應用程式重新啟動的可能性,這會導致暫時性錯誤。
避免相應增加或減少。 相反地,請選取符合一般負載下效能需求的階層和實例大小。 只相應放大實例來處理流量變更。 請考慮相應增加和減少可能會觸發應用程式重新啟動。
可用性區域支援
Azure App 服務 可以設定為區域備援,這表示您的資源會分散到多個可用性區域。 跨多個區域分散可協助生產工作負載實現復原和可靠性。 可用性區域支援是 App Service 方案的屬性。
使用區域備援部署進行散佈的執行個體,即使應用程式增加或減少數量,也會根據以下規則來確定:
- App Service 方案實例計數下限為三個。
- 如果您指定的容量大於三,而且執行個體數目可以使用三整除,則會平均分散執行個體。
- 任何超過 3*N 的執行個體計數則會散佈至其餘的一或兩個區域中。
當 App Service 平臺為區域備援 App Service 方案配置實例時,它會使用 基礎 Azure 虛擬機擴展集所提供的最佳工作區域平衡。 如果每個區域在 App Service 方案所使用的所有其他區域中都有相同數目的 VM 或 +/- 一個 VM,則 App Service 方案會「平衡」。
針對未設定為區域備援的 App Service 方案,VM 實例無法復原可用性區域失敗。 在該區域的任何區域中斷期間,它們可能會發生停機時間。
需求
- 您必須使用 Premium v2 或 Premium v3 方案類型。
- 只有較新的 App Service 使用量才支援可用性區域。 即使您使用其中一個支援的區域,如果資源群組不支援可用性區域,仍會收到錯誤。 若要確保工作負載落在支援可用性區域的戳記上,可能需要建立新的資源群組、App Service 方案和 App Service。
- 您必須至少部署三個方案的實例。
支援的區域
區域備援 App Service 方案可以部署在任何 支援可用性區域的區域中。
若要查看哪些區域支援 App Service 環境 v3 的可用性區域,請參閱區域。
考量
部署在區域備援 App Service 方案中的應用程式會繼續執行並提供服務,即使區域中的多個區域發生中斷也一樣。 不過,非運行時間行為,包括 App Service 方案調整、應用程式建立、應用程式設定和應用程式發佈,在可用性區域中斷期間仍可能會受到影響。 App Service 方案的區域備援只會確保已部署應用程式的持續運作時間。
成本
當您使用 App Service Premium v2 或 Premium v3 方案時,只要 App Service 方案中有三個以上的實例,就不需要額外的成本來啟用可用性區域。 系統會根據 App Service 方案 SKU、您指定的容量,以及您根據自動調整準則調整的任何執行個體向您收費。 如果您啟用可用性區域,但指定容量少於三個,則平臺會強制執行三個實例的最小實例計數,並向您收取這三個實例的費用。
App Service 環境 v3 具有區域備援的特定定價模式。 如需 App Service 環境 v3 的定價資訊,請參閱定價。
設定可用性區域支援
若要使用區域備援,請切換至支援的App Service方案類型。
若要部署新的區域備援 Azure App 服務 方案,請在部署方案時選取 [區域備援] 選項。
若要部署新的區域備援 Azure App 服務 環境,請參閱建立 App Service 環境。
區域備援只能在建立新的App Service方案時進行設定。 如果您有不是區域備援的現有 App Service 方案,則必須將它取代為新的區域備援方案。 您無法將現有的 App Service 方案轉換為使用可用性區域。 同樣地,您無法停用現有App Service 方案上的區域備援。
容量規劃和管理
為因應可用性區域故障,您應該超量佈建服務的容量,以確保解決方案可以容許 1/3 的容量損失,並在整個區域的中斷期間繼續正常運作,而不會降低效能。 由於平台會將 VM 分散到三個區域,因此您必須至少考慮一個區域的失敗,請將尖峰工作負載執行個體計數乘以區域/(zone-1) 或 3/2 的因素。 例如,如果您的一般尖峰工作負載需要四個執行個體,您應該佈建六個執行個體:(2/3 * 6 個執行個體) = 4 個執行個體。
區域之間的流量路由
在正常作業期間,流量會在所有可用性區域的所有可用 App Service 方案實例之間路由傳送。
區域關閉體驗
偵測和回應: App Service 平台負責偵測可用性區域中的失敗並回應。 您不需要執行任何動作來起始區域故障轉移。
作用中要求: 當可用性區域無法使用時,連線到錯誤可用性區域中 App Service 方案實例的任何進行中要求都會終止,而且需要重試。
流量重新路由:當區域無法使用時,Azure App 服務 偵測到來自該區域的遺失實例。 它會自動嘗試尋找新的取代實例。 然後,它會視需要將流量分散到新的實例。
如果您已設定 自動調整 ,而且它決定需要更多實例,自動調整也會對 App Service 發出要求以新增更多實例。
注意
自動調整行為與 App Service 平臺行為無關。 您的自動調整實例計數規格不需要是三個的倍數。
重要
不保證區域關閉案例中其他實例的要求成功。 遺失執行個體的回填會以最佳方式進行。 如果您需要在可用性區域遺失時保證容量,您應該建立並設定 App Service 方案以考慮遺失區域。 您可以透過 過度布建 App Service 方案的容量來執行此動作。
容錯回復
當可用性區域復原時,Azure App 服務 會自動在復原的可用性區域中建立實例、移除在其他可用性區域中建立的任何暫存實例,並依正常方式路由傳送實例之間的流量。
測試區域失敗
Azure App 服務 平臺會管理區域備援App Service 方案的流量路由、故障轉移和容錯回復。 由於此功能完全受控,因此您不需要起始或驗證可用性區域失敗程式。
多區域支援
Azure App 服務 是單一區域服務。 如果區域變成無法使用,您的應用程式也無法使用。
替代的多區域解決方案
若要確保您的應用程式更容易遭受單一區域失敗,您必須將應用程式部署至多個區域。 為了積極傾聽,您應該:
- 將您的應用程式部署到每個區域中的實例。
- 設定負載平衡和故障轉移原則。
- 跨區域復寫您的數據,讓您可以復原最後一個應用程式狀態。
如需說明此方法的範例架構,請參閱:
- 參考架構:高可用性的多區域 Web 應用程式。
- 用於災害復原的多區域 App Service 應用程式
若要遵循建立多區域應用程式的教學課程,請參閱教學課程:在 Azure App 服務 中建立高可用性的多區域應用程式。
如需說明此架構的範例方法,請參閱使用 App Service 環境 的高可用性企業部署。
備份
當您使用基本層或更新版本時,可以使用App Service備份和還原功能,將App Service 應用程式備份至檔案。 如果很難重新部署程式代碼,或將狀態儲存在磁碟上,這項功能就很有用。 不過,針對大部分的解決方案,您不應該依賴 App Service 備份,而應該改用本文所述的其他方法來支持復原需求。
服務等級協定 (SLA)
Azure App 服務 的服務等級協定 (SLA) 描述服務的預期可用性。 它也描述必須符合才能達到該可用性預期的條件。 若要瞭解這些條件,請務必檢閱 在線服務的服務等級協定(SLA)。
當您部署區域備援 App Service 方案時,SLA 中定義的運行時間百分比會增加。