Azure VM Image Builder 的可靠性

Azure VM Image Builder是一項受管理服務,能建置並自訂虛擬機(VM)映像檔,然後將產生的映像分發給目標平台,例如 Azure Compute Gallery 或 Azure Blob 儲存體 中的虛擬硬碟(VHD)。 這個服務不需要你維護長期的建置基礎設施。

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

本文說明如何讓 Azure VM Image Builder 具備彈性,應對各種潛在故障與問題,包括短暫故障、可用性區故障、整個區域的故障及服務維護。 同時也說明備份與還原選項、自訂多區域解決方案,以及關於 Azure VM Image Builder 服務等級協議(SLA)的關鍵資訊。

生產部署建議

設計生產映像建置管線時,請考慮以下建議:

  • 用基礎結構即程式碼來定義你的映像範本,例如 Bicep 或 Terraform,並將定義儲存在版本控制中。

  • 將完成的映像檔分發到工作負載運行的區域,例如透過 Azure Compute Gallery 複製,以避免在虛擬機建立、擴展及重新映像作業中產生不必要的跨區域依賴。

  • 將自訂指令碼、套件及其他建置相依性存放在具備您工作負載所需冗餘特性的儲存體中。

可靠性架構概觀

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

邏輯架構

當你使用 VM Image Builder 時,你會將映像範本部署到單一的 Azure 區域,該區域成為範本的主區域。

建立範本後,你會 執行 一個建置,執行一系列步驟來建立虛擬機映像檔。 這些步驟可能會執行腳本,或包含你想嵌入映像檔的套件。

該服務會建立或使用一個暫存資源群組,並在你的訂閱中部署建構基礎設施。 建置完成後,服務會移除暫時資源,包括建置虛擬機及相關的網路資源。 暫存資源群組及其儲存資源會持續存在,直到影像範本資源存在為止。

VM Image Builder 會將完成的影像分發給你指定的一個或多個 目標 。 常見目標包括:

  • Azure Compute Gallery(前稱 共用映像庫):Compute Gallery 提供多區域虛擬機映像複製。 例如,你可以在一個區域建立一個映像檔,並將產生的 Azure Compute Gallery 影像版本分發到多個目標區域。

  • Azure Blob 儲存體:該服務可以將 VHD 存放在 VM Image Builder 部署的儲存帳號,或是你指定的儲存帳號和 blob 容器中。

    如果你使用服務管理儲存帳號作為 VHD 的分發目的地,該服務會將 VHD 儲存在暫存資源群組中。 當你刪除映像範本時,服務也會同時刪除 VHD。 若想獨立於影像範本保留 VHD,建議先將其分發到自訂儲存帳號,或在刪除範本前複製到其他位置。

Azure Compute Gallery 和 Blob 儲存體 是與 VM Image Builder 分開的服務。 你可以將映像分發給多個目標,包括不同 Azure 區域的目標。 這個分布模型幫助你區分你建立映像檔的區域與你使用該映像檔的區域。

Note

VM Image Builder 也支援 受管理映像檔,其屬於舊有的散發目標。 本文不涵蓋受控映像。 生產環境則使用 Azure Compute Gallery。

實體架構

VM Image Builder 使用 Isolated Image Builds 來執行核心的映像自訂與驗證流程。 該服務會在你的訂閱中的預備資源群組內部署專用的 Azure 容器執行個體 資源和一個建置虛擬機。 容器執行個體 資源執行 HashiCorp Packer 來自訂和驗證映像檔,VM Image Builder 則負責協調建置。

要執行映像建置,請註冊 Microsoft.ContainerInstance 資源提供者,並確保你的訂閱有足夠的 容器執行個體 配額。 欲了解更多服務架構、支援區域及建置流程,請參閱 Azure VM 映像建構器總覽。

獨立的 Azure 服務,例如 Azure Compute Gallery 和 Blob 儲存體,則儲存完成的映像檔。 設定每個分發目標,以符合您的復原能力需求。

對瞬態故障的彈性

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

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

你通常透過使用 Azure 入口網站、Azure CLI、Azure PowerShell,或是像 Bicep 這樣的基礎設施程式碼來操作 Azure VM Image Builder。 你的建置流程負責處理暫時性故障。 如果 Azure Resource Manager 回傳暫時錯誤回應,請以適當的 backoff 重新嘗試該請求。

如果建置失敗,請先檢查其lastRunStatus、自訂與驗證記錄,以及分發執行輸出,再重新執行。 這些詳細資料可協助您判斷失敗是由暫時性故障狀況、自訂步驟,還是映像分發作業所造成。 更多資訊請參閱「故障排除 VM 映像建構器建置失敗」。

建置操作也可能依賴外部系統,例如儲存體帳戶、套件庫、來源映像位置及分發目標。 設計自訂步驟與管線,以支援在暫時性的網路、平台或相依性問題發生後重試。

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

建構作業和完成的映像在區域失效時表現不同。

  • 建置: VM Image Builder 不支援可用性區域,也未提供映像範本或建置作業的區域韌性保證。 如果區域故障影響到建置所使用的資源,建置可能會無法啟動,或可能在執行期間遭到中斷。 VM 映像建構器不會自動將建置移到其他區域。

    如果你需要在可用性區域中斷時執行映像建置,請在多個 Azure 區域部署映像範本和支援資源。 欲了解更多資訊,請參閱 「客製化多區域韌性解決方案」。

  • 圖片: 完成的影像若具備區域韌性,仍可取得。

    • Azure Compute Gallery:Azure Compute Gallery 映像版本可在支援可用性區域的目標區域使用區域冗餘儲存(ZRS)。 對於每個目標區域,選擇 ZRS 作為儲存帳號複製類型。 預設值是本地備援儲存體(LRS),無法承受區域失敗。 欲了解更多資訊,請參閱 Azure Compute Gallery 高可用性。

    • Azure Blob 儲存體 中的 VHD:如果你沒有使用自訂儲存帳號,VM Image Builder 會在支援可用區的區域預設建立一個 ZRS 儲存帳號。 如果你使用自訂儲存體帳戶,你就必須負責配置其冗餘以符合需求。 使用 ZRS 將 VHD 的副本儲存在多個可用區域。 欲了解更多 ZRS 運作方式,請參閱 Azure Blob 儲存體 中的可靠性。

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

在區域性故障期間,建置作業與已完成的映像會有不同的行為。

  • 建置:Azure VM Image Builder 是單一區域服務,沒有內建多區域故障轉移。 如果承載你映像範本的區域無法使用,該區域的映像範本和建置操作也將無法使用。 服務不會自動容錯移轉到其他區域。

    如果你需要在區域中斷時執行映像建置,請在多個 Azure 區域部署你的映像範本和支援資源。 欲了解更多資訊,請參閱 「客製化多區域韌性解決方案」。

  • 圖片: 只要完成的映像儲存體可承受整個區域層級的故障,仍可取得。

    • Azure Compute Gallery:你可以設定 Azure Compute Gallery 將映像版本複製到多個區域。 複製是非同步的,只有在複製到該區域完成後,才能在目標區域使用映像版本。

      在某區域中斷期間,已完成複寫的複本仍可於健康目標區域內供虛擬機部署使用。 然而,如果包含畫廊資源的區域無法使用,你就無法建立或更新畫廊資源。 如果您需要在區域中斷期間繼續發佈映像版本,請在不同的建置區域中維護個別的映像庫。 欲了解更多資訊,請參閱 Azure Compute Gallery 複製與最佳實務。

    • Azure Blob 儲存體 中的 VHD:預設的服務管理 VHD 目的地不提供地理冗餘。 在支援可用性區域的地區,則使用 ZRS,但無法防止整個區域的故障。

      在有 配對區域的區域中,你可以將 VHD 發佈到使用地理冗餘儲存(GRS)或地理區域冗餘儲存(GZRS)的自訂儲存帳戶。 讀取存取 GRS(RA-GRS)與讀取存取 GZRS(RA-GZRS)透過次要端點提供唯讀存取,但不執行故障轉移。 若要恢復配對區域的正常讀寫存取,請啟動客戶管理的故障轉移,或將 VHD 從次要端點複製到獨立的儲存帳號。 地理複製是非同步的,因此非計畫的故障轉移可能會遺失未被複製的資料。 盡可能在容錯移轉前檢查儲存體帳戶的「上次同步時間」屬性。

      欲了解更多關於 Blob 儲存體 故障轉移行為及 非配對區域間資料複製的替代方法,請參見 Azure Blob 儲存體 的可靠性。

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

如果你在區域故障時需要持續建置映像檔,你就必須負責在多個區域部署並操作獨立的建置環境。

選擇支援 VM Image Builder 的區域。 在每個建置區域中,預先部署映像範本及其區域特定的相依性,包括受管理身份與角色指派、網路設定、自訂工件、原始映像或映像複製品,以及分發目標。

如果你需要在圖庫區域無法使用時發佈圖片,請在每個建置區域使用獨立的 Compute Gallery 資源。 從單一映像檔庫複製映像檔版本,並不代表該映像檔庫是完整的多區域資源。

使用基礎結構即程式碼定義這些資源,並將這些定義視為唯一真實來源。 當配置變更時,保持區域環境同步,並定期測試每個環境是否能建置並分發映像檔。

備份與還原

Azure VM 映像建構器並不能取代你的備份和復原流程。 在大多數情況下,對復原來說重要的產物是你發佈到 Azure Compute Gallery 或 VHD 儲存的完成映像檔。

為了改善從資料損毀或長期非預期停機中恢復的能力,請遵循以下建議:

  • 根據您的保留需求,將已發佈的影像保留在 Azure Compute Gallery 或其他發佈目標中。

  • 如果你建立 VHD 並使用預設的 VHD 目的地,請先將 VHD 複製到你自己的耐用儲存空間,再刪除映像範本。

  • 使用原始檔控制來儲存映像範本定義並管理其版本。

  • 使用版本控制或其他類型的持久性儲存體來儲存並對自訂指令碼與套件進行版本控制。

  • 定期驗證每個預先部署的復原環境是否能建立並分發映像檔。

服務維護的韌性

Microsoft 負責管理 Azure VM Image Builder 的維護。 VM Image Builder 在執行時不會處理應用程式流量,所以維護不會影響你已經從已發佈映像檔建立的虛擬機。 若建置在維護或其他服務事件中延遲或中斷,請檢查建置的狀態與記錄並重新執行。

使用Azure 服務健康狀態來監視可能影響您建置區域的計畫性維護和服務事件。

服務等級協定

Azure VM Image Builder 不提供可用性服務等級協議(SLA)。

任何適用於分發目標或儲存服務的 SLA 都會獨立適用,且不會為 VM Image Builder 範本或建置操作提供可用性承諾。