Dela via


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.

  1. 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\":{}}"
    
  2. 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.

  1. 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"
              }
            ]
          }
        ]
      }
    }
    
  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 experimentets 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 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.

  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 tjänstdirigeringsexperiment i Azure Cosmos DB är du redo att: