Azure 自動化中的可靠性

Azure 自動化 是一項代表你執行管理任務的服務。 你定義了稱為 runbook 的腳本,這些腳本是你想要執行的,而 Azure 自動化 提供執行這些腳本的基礎設施。 本文聚焦於流程自動化,這是該服務的核心能力。 混合式 Runbook 背景工作角色會在客戶管理的基礎結構上執行,因此不在本文的討論範圍內。

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

本文說明如何讓 Azure 自動化 具備彈性,應對各種潛在的中斷與問題,包括暫時性故障、可用性區域中斷、區域中斷及服務維護。 同時也說明備份與還原選項,以及關於 Azure 自動化 服務水準協議(SLA)的關鍵資訊。

可靠性的生產部署建議

對於使用流程自動化的生產工作負載,請遵循以下建議:

  • 透過在腳本中加入適當的重試邏輯,處理 runbook 與 Azure 服務及 API 互動時發生的暫時性錯誤。

  • 將您的作業手冊設計成能夠因應中斷。 使用檢查點來維持工作重啟的進度,如果需要儲存狀態,就使用外部儲存。

可靠性架構概觀

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

邏輯架構

當你部署 Azure 自動化 時,你會建立一個自動化帳號,這是一個邏輯容器,存放執行自動化的資源。

  • 跑程簿,代表待執行的工作內容。 文字跑手冊是用 PowerShell 或 Python 撰寫的腳本。 圖形化跑手冊 是使用圖形編輯器來建立的。
  • Runbook 共用的資源,包括模組、連線、認證、憑證和變數。
  • 啟動 Runbook 執行的資源,包括排程和監看程式。

欲了解更多相關資源資訊,請參閱 Azure 自動化 中的 Runbook 執行

本文說明這些屬於 Azure 自動化 中流程自動化一部分的功能之可靠性與復原能力。

實體架構

Runbook 是在運算基礎設施上執行的。 流程自動化有兩種部署模式:

  • 雲端工作(Microsoft 管理):預設情況下,runbook 運行於 Microsoft 提供的雲端基礎設施上。 Microsoft 負責此基礎架構的高可用性與管理。 當你提交 runbook 工作時,Azure 自動化 會從其可用的運算資源池中分配一個雲端工作,執行 runbook,然後將資源回還給池。

    雲端工作有時會在運行時被中斷。 設計操作手冊時,應假設作業可能會在不同的基礎架構上重新啟動,而且先前執行個體上寫入暫存儲存體的任何資料都將無法再存取。

  • 混合式 Runbook 背景工作角色:您可以選擇設定自己的計算基礎結構 (Azure、其他雲端或內部部署環境中的虛擬機器) 來執行 Runbook。 使用混合式 Runbook 背景工作角色時,您必須負責設定這些角色,使其符合您的可靠性需求。 混合式 Runbook 背景工作角色不在本文的討論範圍內。

對瞬態故障的彈性

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

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

您必須負責撰寫 Runbook,以處理其互動之服務與 API 中的暫時性錯誤。 針對文字型 Runbook,請使用迴圈和錯誤處理來實作重試邏輯。 如需指引與範例,請參閱 「處理時間依賴腳本中的暫態錯誤」。 針對圖形化 Runbook,請為工作流程中的活動設定重試行為。 關於設定細節,請參見 圖形執行簿中的重試活動

基礎結構維護或其他平台事件可能會中斷 Runbook 作業。 請將您的操作手冊設計為可處理這些中斷:

  • 設置檢查點。 針對 PowerShell 工作流程 Runbook,請使用檢查點在工作流程的重要階段儲存進度。 若工作中斷並重新啟動,則可從上一個檢查點繼續,而不必重新開始。 欲了解更多資訊,請參閱 工作流程中使用檢查點

  • 了解工作限制。 雲端工作對執行時間有公平分配的限制。 關於工作執行限制及其執行方式的詳細資訊,請參見 Runbook 執行

  • 將持久狀態儲存在外部。 作業不會在兩次執行之間保留狀態。 如果工作中斷並在另一個實例重新啟動,第一次執行時寫入暫存的檔案可能會遺失。 如果你需要在工作執行間持久化資料,就把資料存到外部儲存,例如 Azure Blob 儲存體 或資料庫。

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

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

在支援的區域中,自動化帳戶和雲端作業具有區域備援,也就是服務會將您的資源分散到多個可用性區域。 Microsoft 會自動啟用區域冗餘,且不需要任何設定。

顯示自動具備區域復原能力之自動化帳戶的圖表,其中包括具區域復原能力的 Runbook 和其他資源。

Requirements

區域支援: 當你在以下區域部署自動化帳號時,該帳戶會自動成為區域冗餘:

美洲 歐洲 中東 Africa 亞太地區
Brazil South 法國中部 以色列中部 南非北部 Australia East
加拿大中部 德國中西部 卡達中部 印度中部
Central US 義大利北部 中國北部 3
美國東部 北歐 東亞
美國東部 2 挪威東部 日本東部
美國中南部 波蘭中部 南韓中部
美國政府維吉尼亞州 瑞典中部 東南亞
美國西部 2 英國南部
美國西部 3 西歐

有關目前支援區域的清單,請參見 Azure 自動化 的可用性區域支援

Cost

區域備援不會另外收費。 對於流程自動化來說,計費是根據你的工作和監控者執行的時間長度來計算的。 欲了解更多資訊,請參閱 Azure 自動化 定價

設定可用性區域支援

當您在支援的區域建立自動化帳戶時,系統會自動具備區域備援。 你無法關閉區域冗餘。 欲了解更多資訊,請參閱 Azure 自動化 的可用性區域支援

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

本節說明當自動化帳戶具有區域備援,且區域中的所有可用性區域皆正常運作時,預期會發生的情況。

  • 跨區作業: 自動化、帳戶管理作業與雲端作業會自動分配到區域內的可用區域。 要求或作業可能由任何可用性區域中的任何執行個體處理。

  • 跨區域資料複寫: 自動化帳號設定、執行本腳本及其他部署到自動化帳號的資源,會在多個可用區域同步複製。

區域失敗期間的行為

本節說明當自動化帳戶具有區域備援,且區域中的其中一個可用性區域發生中斷時,預期會發生的情況。

  • 偵測與回應:Azure 自動化 平台負責偵測可用性區域的故障。 您不需要執行任何動作即可起始區域容錯移轉。
  • 通知: Microsoft 不會在區域關閉時自動通知您。 不過,你可以使用 Azure 服務健康狀態 來了解服務整體健康狀況,包括任何區域故障,並且可以設定 Service Health 警示來通知你問題。
  • 作用中要求:在狀況不良區域中進行中的任何作業執行都可能遭到中斷。 Azure 自動化會使用狀況良好區域中的基礎結構,自動啟動新的作業執行。 設計你的跑程簿,使其能 抵抗短暫故障與中斷 ,以便安全重啟。

  • 預期資料遺失: 工作執行不會持久化狀態,因此區域故障不會導致進行中工作的資料遺失。 如果工作需要儲存可用於從中斷中恢復的資料,例如檢查點,請將這些資訊儲存在持久的雲端儲存服務中,如 Azure 儲存體 或資料庫。

    自動化帳號設定與執行簿資料會跨區域複製,即使區域無法使用也能存取。

  • 預期的停機時間: 在區域故障期間,您的自動化帳戶可能會短暫中斷,服務偵測故障並將工作負載重新分配到健康區域。

  • 重新劃分: 服務會自動在剩餘健康區域間重新平衡容量。 新的作業執行、監看員和排程會繼續在狀況良好區域中的基礎結構上執行。 復原不取決於故障區域是否恢復服務。

區域復原

當失敗的區域恢復服務時,Azure 自動化 會自動將其重新整合回區域輪替。 你不需要採取任何行動。 該服務監控區域健康狀況,並在正常運作恢復時將工作量重新分配至所有區域。

測試區域失敗

Azure 自動化 管理區域冗餘資源的流量路由、故障轉移及區域恢復。 你不需要啟動任何操作,也不需要驗證可用性區的故障流程。 測試作業手冊,確認其在發生中斷時仍具韌性。

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

Azure 自動化 是一個單一區域服務。 如果該區域無法使用,你的自動化帳號也會無法使用。

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

你可以在多個區域部署不同的自動化帳號,並在需要時切換。 您必須負責將帳戶部署至每個區域、適當地設定帳戶、在帳戶之間分散要求,並在某個區域無法使用時處理容錯移轉。 關於可考慮的具體方法,請參閱 Azure 自動化 的災難復原

備份與還原

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

Azure 自動化 不提供您 Automation 帳戶設定或 Runbook 內容的內建備份。 你自己把副本留在軍外,方便需要時重新部署。

  • 使用基礎設施即程式碼(IaC)來進行自動化帳號設定。 在 Bicep 檔案、ARM 範本或 Terraform 中定義自動化帳號及相關資源。 把範本存進原始碼控制,然後用你的部署管線在同一或另一個區域重建環境。 在您的產物與部署流程中包含憑證、變數、排程與憑證參考。 將秘密存放在像 Azure Key Vault 這類服務中,而非直接將值嵌入 runbook 程式碼中。

  • 將 runbook 腳本存放在原始碼控制中。 PowerShell 和 Python runbook 的原始碼可以放在像 Git 這樣的原始碼控制系統裡。 請使用版本控制、分支和提取要求檢閱來維護指令碼品質,並支援回復至已知良好版本。

  • 從相應的資料儲存區備份狀態資料。 作業不會保留狀態。 如果你需要保存詳細的工作日誌或跑道本產生的其他資料,就把它存到另一個 Azure 儲存或資料庫服務,然後從那裡備份。

對意外刪除的韌性

如果你不小心刪除了自動化帳號,可能能在有限時間內恢復它。 欲了解更多資訊,請參閱 「恢復已刪除的自動化帳戶」。

服務維護的韌性

Microsoft 定期執行服務更新及其他維護。 Azure 平台自動處理這些活動,確保維護過程對您來說無縫且透明。 除非您收到透過 Azure 服務健康狀態 計畫維護 的通知,否則維護期間將不會有停機。

服務等級協定

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