Dela via


Skapa ett kaosexperiment som använder dynamisk inriktning för att välja värdar

Du kan använda dynamisk inriktning i ett kaosexperiment för att välja en uppsättning mål att köra ett experiment mot. I den här artikeln visar vi hur du dynamiskt riktar in dig på vm-skalningsuppsättningar för att stängas av baserat på tillgänglighetszon. Om du kör det här experimentet kan du testa redundansväxling till en Azure Virtual Machine Scale Sets-instans i en annan region om det uppstår ett avbrott.

Du kan använda samma steg för att konfigurera och köra ett experiment för eventuella fel som stöder dynamisk inriktning. För närvarande stöder endast avstängning av vm-skalningsuppsättningar dynamisk inriktning.

Förutsättningar

Öppna Azure Cloud Shell

Azure Cloud Shell är ett kostnadsfritt interaktivt gränssnitt som du kan använda för att köra stegen i den här artikeln. Den har vanliga Azure-verktyg förinstallerat och har konfigurerats för användning med ditt konto.

Öppna Cloud Shell genom att välja Prova i det övre högra hörnet i ett kodblock. Du kan också öppna Cloud Shell på en separat webbläsarflik genom att gå till Bash. Välj Kopiera för att kopiera kodblocken, klistra in den i Cloud Shell och välj Retur för att köra den.

Om du vill installera och använda CLI lokalt kräver den här självstudien Azure CLI version 2.0.30 eller senare. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.

Kommentar

De här anvisningarna använder en Bash-terminal i Cloud Shell. Vissa kommandon kanske inte fungerar enligt beskrivningen om du kör CLI lokalt eller i en PowerShell-terminal.

Aktivera Chaos Studio på vm-skalningsuppsättningar-instansen

Azure Chaos Studio kan inte mata in fel mot en resurs om inte resursen lades till i Chaos Studio först. Om du vill lägga till en resurs i Chaos Studio skapar du ett mål och funktioner för resursen.

Vm-skalningsuppsättningar har bara en måltyp (Microsoft-VirtualMachineScaleSet) och en funktion (shutdown). Andra resurser kan ha upp till två måltyper. En måltyp är för tjänstdirigeringsfel. En annan måltyp är för agentbaserade fel. Andra resurser kan också ha många andra funktioner.

  1. Skapa ett mål för vm-skalningsuppsättningsresursen . Ersätt $RESOURCE_ID med resurs-ID:t för vm-skalningsuppsättningen som du lägger till:

    az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet?api-version=2023-11-01" --body "{\"properties\":{}}"
    
  2. Skapa funktionerna på vm-skalningsuppsättningsmålet. Ersätt $RESOURCE_ID med resurs-ID:t för den resurs som du lägger till. Ange målet VirtualMachineScaleSet och funktionen 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\":{}}"
    

Nu har du lagt till vm-skalningsuppsättningen i Chaos Studio.

Skapa ett experiment

Nu kan du skapa experimentet. Ett kaosexperiment definierar de åtgärder som du vill vidta mot målresurser. Åtgärderna organiseras och körs i sekventiella steg. Kaosexperimentet definierar också de åtgärder som du vill vidta mot grenar som körs parallellt.

  1. Formulera experimentets JSON med början i följande JSON-exempel för vm-skalningsuppsättningar avstängning 2.0 . Ändra JSON så att det motsvarar det experiment som du vill köra med hjälp av API:et Skapa experiment och felbiblioteket. För närvarande är dynamisk inriktning endast tillgänglig med felet Avstängning av vm-skalningsuppsättningar 2.0 och kan bara filtrera på tillgänglighetszoner.

    • Använd -elementet filter för att konfigurera listan över Azure-tillgänglighetszoner för att filtrera mål efter. Om du inte anger någon filterstänger felet av alla instanser i vm-skalningsuppsättningen.
    • Experimentet riktar sig till alla vm-skalningsuppsättningar i de angivna zonerna.
     {
        "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"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    }
    
  2. Skapa experimentet med hjälp av Azure CLI. Ersätt $SUBSCRIPTION_ID, $RESOURCE_GROUPoch $EXPERIMENT_NAME med egenskaperna för experimentet. Kontrollera att du har sparat och laddat upp experimentet JSON. Uppdatera experiment.json med ditt JSON-filnamn.

    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
    

    Varje experiment skapar en motsvarande systemtilldelad hanterad identitet. Observera huvud-ID:t för den här identiteten i svaret för nästa steg.

Ge experimentbehörighet till vm-skalningsuppsättningar

När du skapar ett kaosexperiment skapar Chaos Studio en systemtilldelad hanterad identitet som kör fel mot dina målresurser. Den här identiteten måste ges lämpliga behörigheter till målresursen för att experimentet ska kunna köras.

Ge experimentet åtkomst till dina resurser med hjälp av följande kommando. Ersätt $EXPERIMENT_PRINCIPAL_ID med huvud-ID:t från föregående steg. Ersätt $RESOURCE_ID med resurs-ID för målresursen. Ändra rollen till lämplig inbyggd roll för den resurstypen. Kör det här kommandot för varje resurs som är mål för experimentet.

az role assignment create --role "Virtual Machine Contributor" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID

Kör experimentet

Nu är du redo att köra experimentet. Om du vill se effekten kontrollerar du portalen för att se om målen för vm-skalningsuppsättningar stängs av. Om de stängs av kontrollerar du att tjänsterna som körs på vm-skalningsuppsättningarna fortfarande körs som förväntat.

  1. Starta experimentet med hjälp av Azure CLI. Ersätt $SUBSCRIPTION_ID, $RESOURCE_GROUPoch $EXPERIMENT_NAME med egenskaperna för experimentet.

    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
    
  2. Svaret innehåller en status-URL som du kan använda för att fråga experimentstatus när experimentet körs.

Nästa steg

Nu när du har kört ett dynamiskt målinriktat avstängningsexperiment för vm-skalningsuppsättningar är du redo att: