Chaos Studio 工作區的情境與故障範本

Azure Chaos Studio 場景是在 Chaos Studio 工作空間中模擬中斷模式的韌性測試,例如區域關閉、DNS 中斷及資料庫故障轉移。 每個情境都會針對支援的 Azure 資源組成行動。 工作區會發現其範圍內的資源,並顯示適用的情境。

本頁列出 Chaos Studio 工作空間中可用的劇本。 Chaos Studio 提供一套支援的劇本範本,涵蓋常見的停機模式。 你可以 as-is執行這些範本,或使用 情境設計器 自訂自己的範本。

Important

Chaos Studio 的工作空間與場景目前已公開預覽。 Microsoft 提供此預覽版「現況」與「可用狀態」,不受服務等級協議或有限保固保護。 Microsoft 以盡力而為的方式提供預覽版的客戶支援。 這個預覽並非為製作用途設計。 欲了解更多資訊,請參閱以下文章:

支援的情境範本

以下劇本可在公開預覽中取得。 每個版本都是支援的範本,你可以在不需要自訂設定的情況下執行,除了它需要的參數外。

區域與網路情境

這些情境模擬網路連接與可用性區基礎設施的故障,這是最常見的雲端中斷類別。

DNS 中斷

透過套用網路安全群組(NSG)規則阻擋 DNS 解析,該規則拒絕 53 埠的外出流量。 測試你的應用程式是否能優雅地處理 DNS 失敗,包括備援行為、重試邏輯和快取解析。

Property 價值
Actions NSG ApplyNSGRule(區塊埠 53)
目標資源 網路安全小組,虛擬網路
停電類別 網路

Microsoft Entra ID Outage

透過套用 NSG 規則,阻止 Microsoft Entra ID 服務標籤的外出流量,阻擋與 Microsoft Entra ID 端點的連線。 測試您的應用程式是否能容忍身份提供者中斷,包括認證失敗、令牌刷新失敗及下游授權連鎖反應。

Property 價值
Actions NSG ApplyNSGRule(封鎖 Entra ID 端點)
目標資源 網路安全小組,虛擬網路
停電類別 人脈網絡 / 身份認同

計算區域下行

透過關閉目標區域內的虛擬機器及 Azure 虛擬機器擴展集 實例,模擬完整可用性區失效。 可用性區域故障是最具影響力的雲端事件之一,因此此情境成為韌性測試的高優先起點。

對於 AKS 節點縮放集,請使用 Chaos Studio Workspaces 進行 AKS 韌性測試。 此方法測試節點基礎設施,而非叢集內的 Pod 故障。

Property 價值
Actions 虛擬機器關閉(區域過濾器)、虛擬機器縮放集關閉(區域過濾器)
目標資源 虛擬機器,虛擬機器擴展集
停電類別 區域 / 資料中心

區域下去

關閉目標可用性區內所有發現的 Azure 虛擬機器擴展集 實例,並強制 Azure Cache for Redis 實例進行故障轉移,以模擬後端區域故障。 你可以選擇性地在執行過程中調用自己的 Azure 自動化 跑手冊。 使用 filters.zones 設定篩選器選擇要摧毀的區域。

Property 價值
Actions Virtual Machine Scale Set Shutdown (zone filter), Azure Cache for Redis force failover (reboot primary node), optional Azure 自動化 runbooks
目標資源 虛擬機器擴展集, Azure Cache for Redis
停電類別 區域 / 資料中心

資料庫場景

資料庫情境測試你的應用程式如何處理資料層的中斷。 有些會將區域層級的計算失敗與資料庫故障轉移(稱為計算區域下行變體)結合,以同時驗證跨區域與資料層的韌性;其他則在應用程式處於主動負載時,驅動獨立的資料庫故障轉移或重啟。 每個測試都測試你的應用程式是否在恢復時間目標(RTO)內恢復,包括連線重試、池池耗盡,以及中斷後的資料一致性。

Compute Zone Down + PostgreSQL 故障轉移

它以 適用於 PostgreSQL 的 Azure 資料庫 靈活伺服器故障轉移來擴展 Compute Zone Down 場景。

Property 價值
Actions VM 關機(區域過濾器)、虛擬機器 Scale Set 關機(區域過濾器)、PostgreSQL 彈性伺服器故障轉移
目標資源 虛擬機器, 虛擬機器擴展集, 適用於 PostgreSQL 的 Azure 資料庫 flexible server
停電類別 區域 / 資料中心 + 資料

計算區域關閉 + SQL DB 故障轉移

透過 Azure SQL Database 地理複製故障轉移,擴展計算區域關閉情境。

Property 價值
Actions Virtual Machine Scale Set Shutdown (zone filter), VM Shutdown (zone filter), Azure SQL Database geo-failover
目標資源 虛擬機器擴展集, 虛擬機器, Azure SQL Database
停電類別 區域 / 資料中心 + 資料

計算區關閉 + SQL 受管理執行個體 故障轉移

它透過 Azure SQL 受控執行個體 故障轉移擴展了 Compute Zone Down 的情境。

Property 價值
Actions VM 關機(區域過濾器)、虛擬機器 Scale Set 關機(區域過濾器)、SQL 受管理執行個體 故障轉移
目標資源 虛擬機器, 虛擬機器擴展集, Azure SQL 受控執行個體
停電類別 區域 / 資料中心 + 資料

DB 負載故障轉移

觸發 適用於 MySQL 的 Azure 資料庫 的彈性伺服器強制故障轉移,同時執行 Azure 負載測試 將流量推向你的應用程式,讓你能在實際負載下驗證資料層的韌性。 當執行結束時,MySQL 伺服器會恢復到原始狀態。

Property 價值
Actions Azure 負載測試 Start, MySQL Flexible Server forced failover
目標資源 適用於 MySQL 的 Azure 資料庫 flexible server, Azure 負載測試
停電類別 資料 / 載荷

資料庫重啟負載

重新啟動 適用於 MySQL 的 Azure 資料庫 的彈性伺服器,同時執行 Azure 負載測試 流量,測試應用程式在負載下如何處理突如其來的資料庫重啟。

Property 價值
Actions Azure 負載測試 Start, MySQL Flexible Server Restart
目標資源 適用於 MySQL 的 Azure 資料庫 flexible server, Azure 負載測試
停電類別 資料 / 載荷

快取韌性情境

這些情境測試應用程式如何處理快取失敗,包括快取連續模式,即多個用戶端同時嘗試重建過期或遺失的快取條目。

藏寶大賽

模擬快取狂奔,方法是清除 Azure Managed Redis 快取並同時重新啟動資料庫和 App Service 實例,讓同時的用戶端一起退回到原始資料儲存。 測試應用程式的請求合併、退縮與負載限制邏輯是否能防止原始節點過載。

Property 價值
Actions Azure Managed Redis FlushDatabase, MySQL Flexible Server Restart, App Service Restart
目標資源 Azure Managed Redis, 適用於 MySQL 的 Azure 資料庫 flexible server, App Service
停電類別 快取 / 載入

快取衝刺與程序崩潰

結合快取衝刺與 App Service 程序崩潰,測試快取層與計算實例同時失敗時的復原。 這個變體是終止 App Service 程序,而不是重新啟動它。

備註

此情境僅支援 Windows 應用程式 服務。 Linux App Service 不被支援。

Property 價值
Actions Azure Managed Redis FlushDatabase, MySQL Flexible Server Restart, App Service Kill Process
目標資源 Azure Managed Redis, 適用於 MySQL 的 Azure 資料庫 flexible server, App Service (Windows)
停電類別 快取 / 載入

訊息傳遞與事件驅動情境

這些情境測試當訊息服務或相關相依性無法使用時,應用程式的回應。

Event-Driven 訊息中斷

停用 服務匯流排 佇列與事件樞紐實體,以測試您的事件驅動微服務架構如何處理訊息基礎設施故障。 驗證死訊處理、重試政策及後壓機制。

Property 價值
Actions 服務匯流排 ChangeQueueState (停用)、Event Hubs ChangeEventHubState (停用)
目標資源 服務匯流排 命名空間,Event Hubs 命名空間
停電類別 Messaging

當執行結束時,Chaos Studio 會自動重新啟用受影響的 服務匯流排 佇列和事件集線中心實體。

依賴性黑屏

同時模擬身份、訊息與事件中上游依賴的相關中斷:它以網路安全群組(NSG)規則阻擋 Azure Key Vault 的存取,並停用 服務匯流排 佇列與事件集線中心實體。 用它來驗證對同時依賴失敗的韌性。 當執行結束時,所有中斷都會自動還原:訊息與事件狀態的變更會自我修復,NSG 封鎖規則也會被移除。

Property 價值
Actions NSG ApplyNSGRule (block Azure Key Vault), 服務匯流排 ChangeQueueState (disable), Event Hubs ChangeEventHubState (disable)
目標資源 網路安全群組、服務匯流排 命名空間、事件集線中心命名空間
停電類別 相依性(身份、訊息、事件處理)

計算與資源壓力情境

這些情境模擬虛擬機上的資源枯竭。

CPU 壓力

在目標虛擬機內持續施加 CPU 壓力,以驗證應用程式在 CPU 爭用時的行為。 你設定壓力等級(百分比)和持續時間。

備註

CPU 壓力是一種基於代理的情境:故障透過 Chaos Studio 代理在虛擬機內部執行。 Chaos Studio 會在執行過程中自動安裝代理擴充功能,之後再移除。 關於目標虛擬機與作業系統需求,請參見 基於代理的情境需求

Property 價值
Actions CPU 壓力(基於代理)
目標資源 虛擬機器(僅限獨立)
停電類別 資源壓力

實體記憶體壓力

在記憶體爭用下,會消耗目標虛擬機內的實體記憶體,以驗證應用程式的行為。 你設定壓力等級(百分比)和持續時間。

備註

物理記憶體壓力是一種基於代理的情境:故障透過 Chaos Studio 代理在虛擬機內部執行。 Chaos Studio 會在執行過程中自動安裝代理擴充功能,之後再移除。 關於目標虛擬機與作業系統需求,請參見 基於代理的情境需求

Property 價值
Actions 物理記憶體壓力(基於代理)
目標資源 虛擬機器(僅限獨立)
停電類別 資源壓力

基於代理的情境需求

大多數情境使用服務直接動作,透過 Azure 管理 API 對資源進行操作。 基於代理的情境,如 CPU 壓力與物理記憶體壓力,則會在目標虛擬機內透過 Chaos Studio 代理執行錯誤。 Chaos Studio 會在執行開始時自動安裝代理擴充功能,執行結束時移除,所以你不需要自己安裝或管理代理。

每個目標虛擬機必須符合以下要求:

  • 它是獨立的虛擬機。 虛擬機縮放組目前還不支援。
  • 它擁有管理身份。
  • 它運行支援的作業系統。
  • 它可以透過公共外撥連線連接到 Chaos Studio 服務。 僅限於私有網路的虛擬機不被支援。

若情境執行在代理安裝步驟失敗,通常表示網路設定阻擋了代理的連線。 請參見「連接混沌代理人與 Chaos Studio 的問題」。

在 Azure 入口網站中,基於代理的情境不會出現在推薦情境清單中。 從 我的情境中找到並執行它們。

支援的作業系統

基於代理的情境支援 Windows 與 Linux 虛擬機。 使用 Arm 架構處理器的虛擬機大小尚未支援。 在 Linux 上,錯誤行為會在以下發行版進行驗證:

分配 支援的版本
Ubuntu 22.04及之後
Debian 11 和之後的版本
Red Hat Enterprise Linux 8.6 及以後版本
Oracle Linux 8.4 及以後版本

其他發行版或版本可能可行,但它們沒有被驗證,Chaos Studio 也無法保證它們的行為。

建立自訂情境

當支援的範本不符合你需要時,可以在 Azure 入口網站用 Chaos Studio 情境設計器自訂自己的情境。 你可以從範本開始,調整其動作和參數,並儲存命名的設定,之後可以執行或編輯。 若要以程式方式撰寫情境,請將其定義為 Microsoft.Chaos/workspaces/scenarios 資源(參見 「自訂情境的結構化」)

在入口網站使用情境設計器

  1. 在你的工作區中,選擇左側導覽中的 「設計師 」。

  2. 搜尋或瀏覽最接近你想要的停電模式範本,然後選擇 使用範本。 範本依類別分組,如計算(Compute)與資料庫(Database)。

    劇本設計器截圖顯示範本分類,以及計算區域下降範本並附上使用範本按鈕。

  3. 設計師會在一個畫布上打開範本,畫布上顯示動作及其執行方式。 例如,Compute Zone Down 範本會同時執行兩個動作: vmssZoneShutdownvmZoneShutdown,每個動作持續 15 分鐘。

    Scenario Designer 畫布的截圖,顯示計算區域關閉範本,包含兩個平行關機動作及配置情境面板。

  4. 配置情境 面板中,設定 情境名稱,賦予配置 名稱,並設定 配置參數 (例如持續時間及目標區域)。 一個情境可以容納多個命名配置。

    劇本設計器的截圖,包含情境名稱和設定名稱,並設定參數。

  5. 選擇 建立 以儲存劇本。 已儲存的情境會出現在 「我的情境」裡,你可以執行或編輯設定。

自訂劇本的結構

情境是一種 Microsoft.Chaos/workspaces/scenarios 資源。 每個情境包含:

  • 動作:一個或多個定義劇本編排的動作。 每個動作以其 URN 參考動作類型(例如 ), urn:csci:microsoft:compute:shutdown/1.0.0執行 ISO 8601 標準 (例如 PT30M 30 分鐘),並採用動作特定的 參數
  • 參數:呼叫者在執行時提供的情境層級參數,例如要鎖定哪個可用區域。 每個參數都有名稱、一個型別(stringnumberbooleanarrayobject)、一個可選的預設值,以及一個required旗標。 在動作中以巨集語法 %%{parameters.<name>}%%參照參數。
  • 相依性:使用動作的 runAfter 屬性來控制序列。 你指定要等待的動作、觸發下一個動作的生命週期狀態(Start, , RunningSuccessFailureSkipped, , 或AnyTerminal),以及如何評估多個相依關係(AllAny, 或AtLeastOne)。 你也可以設定 waitBefore 延遲行動並 timeout 限制執行時間。

這個模型讓你能重現連鎖故障。 例如,關閉一個區域,等待其生效,然後在計算中斷持續進行後才觸發資料庫故障轉移。

範例:Bicep 自訂情境

以下 Bicep 定義了一個情境,該情境會在參數化可用性區域關閉虛擬機,並在關閉執行後,在 PostgreSQL 彈性伺服器上失效:

resource customScenario 'Microsoft.Chaos/workspaces/scenarios@2026-05-01-preview' = {
  parent: workspace
  name: 'zone-down-then-db-failover'
  properties: {
    description: 'Shut down a zone, then fail over the database.'
    parameters: [
      {
        name: 'zone'
        type: 'string'
        required: true
        description: 'Availability zone to take down.'
      }
    ]
    actions: [
      {
        name: 'shutdown-zone'
        actionId: 'urn:csci:microsoft:compute:shutdown/1.0.0'
        description: 'Shut down VMs in the target zone.'
        duration: 'PT10M'
        parameters: [
          {
            key: 'zones'
            value: '%%{parameters.zone}%%'
          }
        ]
      }
      {
        name: 'db-failover'
        actionId: 'urn:csci:microsoft:azurePostgreSql:failover/1.0.0'
        description: 'Fail over the PostgreSQL flexible server.'
        duration: 'PT5M'
        runAfter: {
          behavior: 'All'
          items: [
            {
              type: 'Action'
              name: 'shutdown-zone'
              onActionLifecycle: 'Running'
            }
          ]
        }
      }
    ]
  }
}

動作 ID 是形式為 urn:csci:microsoft:{service}:{action}/{version}的 URN 。 完整資源結構,包括所有動作與參數屬性,請參閱 Microsoft。混沌/工作區/場景範本參考。 使用支援的 情境範本 和情境設計器來識別工作區的動作。 實驗(經典版)的獨立目錄不會在工作區中建立動作可用性;請參閱 資源模型比較

決定哪些情境會出現在你的工作區

Chaos Studio 會根據工作區範圍將場景與資源配對。 如果你的範圍包含該情境行動所影響的資源類型,則該情境會出現在你的函式庫中。 對於跨資源類型組合多個動作的情境(例如計算區關閉 + PostgreSQL 故障轉移情境),所有必要的資源類型必須在作用域中出現。

如果你在工作空間範圍內部署新資源,它們會自動被發現,新的情境可能會出現在你的函式庫中。

劇本目錄也會在公開預覽期間定期擴充。 當新的情境範本發佈時,若套用於你範圍內的資源類型,它們會自動出現在你的函式庫中;你不需要採取行動。 若要請求情境或故障,請提交 功能請求

資源排除

當你設定情境時,可以排除特定資源。 資源排除功能讓你能保護關鍵資源(例如生產資料庫或共用跳板盒),同時仍能將情境與範圍內其他所有資源共同執行。 排除項目會根據情境設定,因此你可以在不改變工作區範圍的情況下微調每個測試。

回報問題與請求功能

Azure Chaos Studio 是公開開發的。 若要回報錯誤、請求功能,或詢問有關 Workspaces、Scenarios 或 Azure CLI 擴充功能的問題,請在 GitHub 的 Chaos Studio 倉庫開啟一個問題。 透過提交問題,您可以追蹤其進度並查看其他客戶的請求。

下一步