建立使用動態目標來選取主機的混沌實驗
您可以在混沌實驗中使用動態目標,選擇一組目標來執行實驗。 在本文中,我們會說明如何根據可用性區域動態目標化要關閉的虛擬機器擴展集。 執行此實驗可協助您在發生中斷時,測試容錯移轉至不同區域中的 Azure 虛擬機器擴展集執行個體。
您可以使用這些相同的步驟,針對支援動態目標的任何錯誤設定和執行實驗。 目前,只有虛擬機器擴展集關機支援動態目標。
必要條件
- Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始之前先建立 Azure 免費帳戶。
- Azure 虛擬機器擴展集執行個體。
開啟 Azure Cloud Shell
Azure Cloud Shell 是免費的互動式 Shell,可讓您用來執行本文中的步驟。 它具有預先安裝和設定的共用 Azure 工具,可與您的帳戶搭配使用。
若要開啟 Cloud Shell,請選取程式碼區塊右上角的 [試試看]。 您也可以移至 Bash,從另一個瀏覽器索引標籤開啟 Cloud Shell。 選取 [複製] 即可複製程式碼區塊,將其貼到 Cloud Shell 中,然後選取 Enter 鍵加以執行。
如果您要在本機安裝和使用 CLI,本教學課程需要 Azure CLI 2.0.30 版或更新版本。 執行 az --version
以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI。
注意
這些指示在 Cloud Shell 中使用 Bash 終端機。 如果在本機或 PowerShell 終端機執行 CLI,某些命令可能無法按所述運作。
在虛擬機器擴展集執行個體上啟用 Chaos Studio
除非資源已先新增至 Azure Chaos Studio,否則 Chaos Studio 無法對該資源插入錯誤。 若要將資源新增至 Chaos Studio,請在資源上建立目標與功能。
虛擬機器擴展集只有一個目標類型 (Microsoft-VirtualMachineScaleSet
) 和一個功能 (shutdown
)。 其他資源可能最多有兩個目標類型。 其中一個目標類型適用於服務導向錯誤。 另一個目標類型是代理程式型錯誤。 其他資源也可能有許多其他功能。
為虛擬機器擴展集資源建立目標。 將
$RESOURCE_ID
取代為您所要新增虛擬機器擴展集的資源識別碼:az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet?api-version=2023-11-01" --body "{\"properties\":{}}"
在虛擬機器擴展集目標上建立功能。 將
$RESOURCE_ID
取代為您所要新增資源的資源識別碼。 指定VirtualMachineScaleSet
目標和Shutdown-2.0
功能。az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet/capabilities/Shutdown-2.0?api-version=2023-11-01" --body "{\"properties\":{}}"
您現在已成功將虛擬機器擴展集新增至 Chaos Studio。
建立實驗
現在您可以建立實驗。 混沌實驗會定義您想要針對目標資源採取的動作。 動作會以循序步驟組織並執行。 混沌實驗也會定義您想要針對平行執行分支採取的動作。
從下列虛擬機器擴展集關機 2.0 JSON 範例開始,制定實驗 JSON。 使用建立實驗 API 和錯誤程式庫,修改 JSON 以對應至您要執行的實驗。 目前,動態目標僅適用於虛擬機器擴展集關機 2.0 錯誤,且只能篩選可用性區域。
- 使用
filter
元素來設定目標篩選依據的 Azure 可用性區域清單。 如果您沒有提供filter
,則錯誤會關閉虛擬機器擴展集中的所有執行個體。 - 實驗會以指定區域中的所有虛擬機器擴展集執行個體為目標。
{ "location": "westus2", "identity": { "type": "SystemAssigned" }, "properties": { "selectors": [ { "type": "List", "id": "Selector1", "targets": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-demo/providers/Microsoft.Compute/virtualMachineScaleSets/vmss-demo/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet", "type": "ChaosTarget" } ], "filter": { "type": "Simple", "parameters": { "zones": [ "1" ] } } } ], "steps": [ { "name": "Step1", "branches": [ { "name": "Branch1", "actions": [ { "name": "urn:csci:microsoft:virtualMachineScaleSet:shutdown/2.0", "type": "continuous", "selectorId": "Selector1", "duration": "PT2M", "parameters": [ { "key": "abruptShutdown", "value": "false" } ] } ] } ] } ] } }
- 使用
使用 Azure CLI 建立實驗。 將
$SUBSCRIPTION_ID
、$RESOURCE_GROUP
和$EXPERIMENT_NAME
取代為您實驗的屬性。 請確定您已儲存並上傳實驗 JSON。 使用您的 JSON 檔案名稱更新experiment.json
。az rest --method put --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME?api-version=2023-11-01 --body @experiment.json
每個實驗會建立對應的系統指派受控識別。 在回應中記下此身分識別的主體識別碼,下一個步驟將會用到。
將實驗權限授與虛擬機器擴展集
當您建立混沌實驗時,Chaos Studio 會建立系統指派的受控識別,以針對目標資源執行錯誤。 必須將目標資源的適當權限授與此身分識別,實驗才能順利執行。
使用下列命令為實驗提供資源的存取權。 將 $EXPERIMENT_PRINCIPAL_ID
取代為上一個步驟中的主體識別碼。 將 $RESOURCE_ID
取代為目標資源的資源識別碼。 將角色變更為該資源類型的適當內建角色。 對實驗中的每個資源對象執行此命令。
az role assignment create --role "Virtual Machine Contributor" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID
執行您的實驗
您現在可以開始執行實驗。 若要查看效果,請檢查入口網站,以查看虛擬機器擴展集目標是否已關閉。 如果其已關閉,請檢查虛擬機器擴展集上執行的服務是否仍如預期般執行。
使用 Azure CLI 啟動實驗。 將
$SUBSCRIPTION_ID
、$RESOURCE_GROUP
和$EXPERIMENT_NAME
取代為您實驗的屬性。az rest --method post --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME/start?api-version=2023-11-01
回應包含狀態 URL,可在實驗執行時用來查詢實驗狀態。
下一步
現在您已執行動態目標化虛擬機器擴展集關機實驗,您已準備好: