Azure 容器應用程式 沙箱中的可靠性

Azure 容器應用程式 沙盒提供隔離的環境來執行程式碼。 每個沙盒運行於一個輕量虛擬機(microVM),啟動時間不到一秒,且在暫停時能保留其記憶體狀態。 該服務透過您設定的能力以及平台代表您管理的能力,來支援沙盒工作負載的可靠性。

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

本文說明如何讓容器應用程式沙盒具備韌性,能應對短暫故障、可用性區域故障、區域性故障及服務維護。 同時也說明了備份與還原選項,以及服務水準協議(SLA)的關鍵資訊。

可靠性的生產部署建議

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

  • 將耐用資料存放在沙盒記憶體之外,並選擇符合你復原目標的儲存冗餘選項。 使用沙盒磁碟區來儲存在沙盒停止後仍必須保留的資料。 為了對區域性故障的韌性,建議使用外部資料儲存庫,將資料複製到另一個區域。

    當你使用 Azure Blob 儲存體 時,地理冗餘儲存(GRS)會將資料複製到配對區域。 對於非配對區域,請部署個別的儲存體帳戶,並設定支援的複寫方法,例如針對區塊 Blob 的物件複寫。 欲了解更多資訊,請參閱 Azure Blob 儲存體 的自訂多區域解決方案。

  • 如果單一區域部署無法達成正常運作時間目標,建議在多個區域部署不同的沙盒群組。 欲了解更多資訊,請參閱 「區域性失敗的韌性」。

可靠性架構概觀

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

邏輯架構

Azure 容器應用程式 提供不同的計算選項,涵蓋應用程式、工作、動態會話和沙盒。 沙盒群組不需要容器應用程式環境。 關於其他容器應用元件的可靠性細節,請參見 Azure 容器應用程式 中的可靠性。

容器應用程式沙盒中的主要資源包括:

  • 沙盒群組:沙盒群組是沙盒的頂層區域管理邊界,並使用資源Microsoft.App/sandboxGroups類型。 所有沙盒、磁碟映像檔、快照、磁碟區及敏感的組態值(機密資料)都隸屬於某個沙盒群組。

  • 沙盒: 每個 沙盒 都是輕量級、隔離的 microVM,從磁碟映像或快照執行,擁有自己的 CPU、記憶體、本地磁碟及網路邊界。

    磁碟映像檔是一種開放容器倡議(Open Container Initiative,OCI)容器映像,經轉換後可用作沙盒根檔案系統。

    快照是一種在特定時間點擷取沙盒完整狀態的過程,且可獨立於原始沙盒持續存在。

    沙盒的狀態可以是 運行 中,也可以是 停止狀態。 當沙盒停止時,無論是自動還是應請求,都會釋放其運算資源。 記憶體模式 則保留沙盒的完整記憶體映像檔與本地磁碟。 磁碟模式 只會保留本地磁碟,因此當你恢復沙盒時,microVM 及其程序會重新啟動。

  • 卷數: 本地磁碟屬於一個獨立的沙盒。 沙盒 磁碟區 提供獨立於個別沙盒而存在的持久性儲存。 你可以同時將 Azure Blob 儲存體 磁碟區掛載到多個沙盒中,而由 Azure 磁碟儲存體 支援的資料磁碟區一次只能掛載到一個沙盒。 後備儲存服務決定磁碟資料的耐久性與復原選項。

欲了解更多沙盒架構與資源資訊,請參閱 Azure 容器應用程式 沙盒總覽。

實體架構

沙盒運行於多個獨立的運算叢集,這些叢集由 Microsoft 運營。 你負責配置沙盒群組、沙盒以及你部署的其他資源。 Microsoft 負責叢集部署、設定、容量管理、健康監控及維護。 你不需要選擇、部署、設定或管理叢集。 服務會在健康的叢集上排定新的沙盒,並重新啟動已停止的沙盒,同時將放置作業避開不健康的叢集。

Microsoft 維護冗餘的狀態儲存庫,用於服務設定、沙盒中繼資料及磁碟映像檔與快照等產物。

對瞬態故障的彈性

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

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

使用容器應用程式沙盒時,請考慮解決方案中以下部分的暫時性故障:

  • 沙盒管理作業: 當您的自動化程序管理沙盒群組、沙盒或相關資源時,請重試因暫時性錯誤而失敗的要求,並採用指數退避。 限制重試次數,只重試安全可重複的操作。

  • 在沙盒中運行的程式碼: 對呼叫外部 API、資料庫及其他服務實作暫態故障處理。 請遵循各個相依服務的重試指引,因為重試行為以及可安全重複執行的作業會因服務而異。

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

容器應用程式沙箱不支援將沙箱群組部署至特定的可用性區域,亦不具備區域備援能力。 為了讓你的工作負載具備對可用性區失效的韌性,可以在多個區域部署獨立的沙箱群組。 欲了解更多資訊,請參閱 「區域性失敗的韌性」。

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

Container Apps Sandboxes 是單一區域服務。 如果該區域無法使用,你的沙盒群組及其包含的沙盒也會無法使用。 該服務不會跨區域複製沙盒群組或沙盒,也不會自動切換到其他區域。 不過,你可以在多個地區部署獨立的沙箱群組。 你負責確保每個區域都能使用所需的相依性,並管理工作負載分配與故障轉移。 欲了解更多資訊,請參閱 「客製化多區域韌性解決方案」。

當整個區域發生故障時,你可能會失去任何僅保存在執行中沙箱記憶體內的狀態。 受影響區域中的沙箱群組、沙箱及服務管理的成品,會在該區域復原之前維持無法使用。

沙盒磁碟區提供可在單一沙盒生命週期結束後仍保留的儲存空間。 在區域性故障期間,磁碟區的可用性與恢復取決於後備儲存服務及其設定。 Container Apps 沙箱不提供磁碟區資料的跨區域複寫或容錯移轉。 相反地,備份儲存服務在設定後提供這些功能。 例如,如需 Azure Blob 儲存體 磁碟區的相關資訊,請參見 Azure Blob 儲存體 中的可靠性。

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

Azure 容器應用程式 沙盒不會協調多區域部署,也不會在區域間複製沙盒群組、沙盒或相關資源。 要建立客製化多區域解決方案,你有以下責任:

  • 區域部署與依賴關係: 在你打算使用的每個區域部署一個獨立的沙盒群組。 確保設定、磁碟映像檔、機密資訊及其他相依項目在每個區域都可供使用。

  • 故障偵測與工作負載恢復: 配置你的應用程式或編排層,偵測區域是否不可用,將新的沙盒建立與工作負載處理導向健康區域,並決定如何重新啟動中斷工作。

  • 交通規劃:如果用戶端是透過應用程式暴露的區域特定端點連接,請使用全域負載平衡服務,例如 Azure Front Door 或 Azure 流量管理員,將流量導向健康的端點。

  • 資料複製與復原: 將故障轉移後所需的任何狀態儲存在支援跨區域複製與復原的外部資料儲存中。 若後端儲存服務提供磁碟區資料的跨區域複寫,則該服務會決定其複寫與容錯移轉行為。 Azure 容器應用程式沙箱不會在區域之間複寫或容錯移轉磁碟區資料。

備份與還原

不要只用沙盒記憶體或本地硬碟作為你唯一耐用的資料儲存。 暫停沙盒會保留其本地磁碟,在記憶體模式下也會保留其記憶體狀態。 你也可以建立可獨立於來源沙盒而持續存在的快照。 暫停狀態和快照仍限於區域沙盒群組,並非跨區域備份。

使用沙盒磁碟區用於儲存必須在個別沙盒生命週期結束後仍保留的資料。 後備儲存服務及其設定決定了卷資料的備份與還原能力。 對於你管理的外部資料儲存庫,你負責配置備份與跨區域復原,以達成你的耐用性與復原目標。

若要在意外刪除或整個區域發生故障後重新建立沙盒部署,請將沙盒群組組態儲存於受版本控制的基礎結構即程式碼範本中,例如 Bicep 或 Terraform。 將你的原始磁碟映像檔放在符合你復原需求的登錄檔中。

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

服務維護的韌性

Microsoft 定期執行服務更新及其他維護。 Azure 平台自動處理這些活動,確保維護過程對您來說無縫且透明。 在維修作業期間,你可能會看到短暫的中斷。 通常這些中斷只會持續幾秒鐘。 確保用戶端應用程式能設定處理 暫時性故障 ,使其能抵抗短暫中斷。

當維護影響到運行中的沙盒時,平台會保留其狀態,將其移至健康的運算容量,並自動恢復。 對於使用 記憶體模式的沙盒,平台會保留記憶體與本地磁碟狀態。 對於使用 磁碟模式的沙盒,平台僅保留本地磁碟狀態。

服務等級協定

Azure 容器應用程式 Sandboxes 不提供可用性服務等級協議(SLA)。 為您的沙盒磁碟區提供支援的儲存服務,以及您的解決方案所使用的外部資料存放區,可能各自有獨立的 SLA。 欲了解更多資訊,請參閱 線上服務的服務水準協議。