Skapa ett kaosexperiment som använder ett tjänstdirigeringsfel med Azure CLI
Du kan använda ett kaosexperiment för att kontrollera att programmet är motståndskraftigt mot fel genom att orsaka dessa fel i en kontrollerad miljö. I den här artikeln orsakar du en Azure Cosmos DB-redundans med flera läsningar och enkelskrivning med hjälp av ett kaosexperiment och Azure Chaos Studio. Om du kör det här experimentet kan du skydda dig mot dataförlust när en redundanshändelse inträffar.
Du kan använda samma steg för att konfigurera och köra ett experiment för alla tjänstdirigeringsfel. Ett tjänstdirigeringsfel körs direkt mot en Azure-resurs utan behov av instrumentation, till skillnad från agentbaserade fel, som kräver installation av kaosagenten.
Förutsättningar
- En Azure-prenumeration. Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
- Ett Azure Cosmos DB-konto. Om du inte har något Azure Cosmos DB-konto kan du skapa ett.
- Minst en installation av läs- och skrivregionen för ditt Azure Cosmos DB-konto.
Ö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å ditt Azure Cosmos DB-konto
Chaos Studio kan inte mata in fel mot en resurs om inte resursen lades till i Chaos Studio först. Du lägger till en resurs i Chaos Studio genom att skapa ett mål och funktioner för resursen. Azure Cosmos DB-konton har bara en måltyp (tjänstdirigering) och en funktion (redundans). 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 ha många andra funktioner.
Skapa ett mål genom att
$RESOURCE_ID
ersätta med resurs-ID:t för den resurs som du lägger till. Ersätt$TARGET_TYPE
med den måltyp som du lägger till:az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/$TARGET_TYPE?api-version=2023-11-01" --body "{\"properties\":{}}"
Om du till exempel lägger till en virtuell dator som ett tjänstdirigeringsmål:
az rest --method put --url "https://management.azure.com/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine?api-version=2023-11-01" --body "{\"properties\":{}}"
Skapa funktionerna på målet genom att
$RESOURCE_ID
ersätta med resurs-ID:t för den resurs som du lägger till. Ersätt$TARGET_TYPE
med den måltyp som du lägger till. Ersätt$CAPABILITY
med namnet på den felfunktion som du aktiverar.az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/$TARGET_TYPE/capabilities/$CAPABILITY?api-version=2023-11-01" --body "{\"properties\":{}}"
Om du till exempel aktiverar funktionen för avstängning av virtuella datorer:
az rest --method put --url "https://management.azure.com/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0?api-version=2023-11-01" --body "{\"properties\":{}}"
Nu har du lagt till ditt Azure Cosmos DB-konto 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.
Formulera experimentets JSON med början i följande JSON-exempel. Ändra JSON så att det motsvarar det experiment som du vill köra med hjälp av API:et Skapa experiment och felbiblioteket.
{ "location": "eastus", "identity": { "type": "SystemAssigned" }, "properties": { "steps": [ { "name": "Step1", "branches": [ { "name": "Branch1", "actions": [ { "type": "continuous", "selectorId": "Selector1", "duration": "PT10M", "parameters": [ { "key": "readRegion", "value": "East US 2" } ], "name": "urn:csci:microsoft:cosmosDB:failover/1.0" } ] } ] } ], "selectors": [ { "id": "Selector1", "type": "List", "targets": [ { "type": "ChaosTarget", "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB/providers/Microsoft.Chaos/targets/Microsoft-CosmosDB" } ] } ] } }
Skapa experimentet med hjälp av Azure CLI. Ersätt
$SUBSCRIPTION_ID
,$RESOURCE_GROUP
och$EXPERIMENT_NAME
med egenskaperna för experimentet. Kontrollera att du har sparat och laddat upp experimentets JSON. Uppdateraexperiment.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 experimentet behörighet till ditt Azure Cosmos DB-konto
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. I det här fallet är det resurs-ID:t för Azure Cosmos DB-instansen. Ä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 "Cosmos DB Operator" --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 rekommenderar vi att du öppnar översikten över ditt Azure Cosmos DB-konto och går till Replikera data globalt på en separat webbläsarflik. Uppdatera regelbundet under experimentet för att visa regionväxlingen.
Starta experimentet med hjälp av Azure CLI. Ersätt
$SUBSCRIPTION_ID
,$RESOURCE_GROUP
och$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
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 tjänstdirigeringsexperiment i Azure Cosmos DB är du redo att: