Delen via


Een chaos-experiment maken dat gebruikmaakt van een service-directe fout met de Azure CLI

U kunt een chaos-experiment gebruiken om te controleren of uw toepassing bestand is tegen fouten door deze fouten in een gecontroleerde omgeving te veroorzaken. In dit artikel zorgt u voor een azure Cosmos DB-failover met meerdere leesbewerkingen en één schrijfbewerking door gebruik te maken van een chaos-experiment en Azure Chaos Studio. Door dit experiment uit te voeren, kunt u zich beschermen tegen gegevensverlies wanneer er een failovergebeurtenis optreedt.

U kunt dezelfde stappen gebruiken om een experiment in te stellen en uit te voeren voor elke service-directe fout. Een service-directe fout wordt rechtstreeks uitgevoerd op een Azure-resource zonder instrumentatie, in tegenstelling tot fouten op basis van agents, waarvoor de chaosagent moet worden geïnstalleerd.

Vereisten

  • Een Azure-abonnement. Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
  • Een Azure Cosmos DB-account. Als u geen Azure Cosmos DB-account hebt, kunt u er een maken.
  • Ten minste één lees- en één schrijfregio-instelling voor uw Azure Cosmos DB-account.

Azure Cloud Shell openen

Azure Cloud Shell is een gratis interactieve shell waarmee u de stappen in dit artikel kunt uitvoeren. In deze shell zijn algemene Azure-hulpprogramma's vooraf geïnstalleerd en geconfigureerd voor gebruik met uw account.

Als u Cloud Shell wilt openen, selecteert u Proberen in de rechterbovenhoek van een codeblok. U kunt Cloud Shell ook openen in een afzonderlijk browsertabblad door naar Bash te gaan. Selecteer Kopiëren om de codeblokken te kopiëren, plak deze in Cloud Shell en selecteer Enter om deze uit te voeren.

Als u de CLI lokaal wilt installeren en gebruiken, is voor deze zelfstudie Versie 2.0.30 of hoger van Azure CLI vereist. Voer az --version uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

Notitie

Deze instructies gebruiken een Bash-terminal in Cloud Shell. Sommige opdrachten werken mogelijk niet zoals beschreven als u de CLI lokaal of in een PowerShell-terminal uitvoert.

Chaos Studio inschakelen in uw Azure Cosmos DB-account

Chaos Studio kan geen fouten injecteren voor een resource, tenzij die resource eerst is toegevoegd aan Chaos Studio. U voegt een resource toe aan Chaos Studio door een doel en mogelijkheden voor de resource te maken. Azure Cosmos DB-accounts hebben slechts één doeltype (service-direct) en één mogelijkheid (failover). Andere resources kunnen maximaal twee doeltypen hebben. Eén doeltype is voor service-directe fouten. Een ander doeltype is voor op agents gebaseerde fouten. Andere resources hebben mogelijk veel andere mogelijkheden.

  1. Maak een doel door de resource-id te vervangen $RESOURCE_ID door de resource-id van de resource die u toevoegt. Vervang $TARGET_TYPE door het doeltype dat u toevoegt:

    az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/$TARGET_TYPE?api-version=2023-11-01" --body "{\"properties\":{}}"
    

    Als u bijvoorbeeld een virtuele machine toevoegt als een service-direct doel:

    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. Maak de mogelijkheden op het doel door de resource-id te vervangen $RESOURCE_ID door de resource-id van de resource die u toevoegt. Vervang $TARGET_TYPE door het doeltype dat u toevoegt. Vervang door $CAPABILITY de naam van de foutmogelijkheid die u inschakelt.

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

    Als u bijvoorbeeld de mogelijkheid voor het afsluiten van de virtuele machine inschakelt:

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

U hebt nu uw Azure Cosmos DB-account toegevoegd aan Chaos Studio.

Een experiment maken

U kunt nu uw experiment maken. Een chaos-experiment definieert de acties die u wilt uitvoeren op doelbronnen. De acties worden geordend en uitgevoerd in opeenvolgende stappen. Het chaos-experiment definieert ook de acties die u wilt uitvoeren op vertakkingen, die parallel worden uitgevoerd.

  1. Formuleer uw experiment-JSON vanaf het volgende JSON-voorbeeld. Wijzig de JSON zodat deze overeenkomt met het experiment dat u wilt uitvoeren met behulp van de Create Experiment-API en de foutbibliotheek.

    {
      "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. Maak het experiment met behulp van de Azure CLI. Vervang , $RESOURCE_GROUPen $EXPERIMENT_NAME door $SUBSCRIPTION_IDde eigenschappen voor uw experiment. Zorg ervoor dat u de JSON van uw experiment hebt opgeslagen en geüpload. Werk experiment.json bij met uw JSON-bestandsnaam.

    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
    

    Elk experiment maakt een bijbehorende door het systeem toegewezen beheerde identiteit. Noteer de principal-id voor deze identiteit in het antwoord voor de volgende stap.

Geef het experiment toestemming voor uw Azure Cosmos DB-account

Wanneer u een chaos-experiment maakt, maakt Chaos Studio een door het systeem toegewezen beheerde identiteit waarmee fouten worden uitgevoerd op uw doelbronnen. Deze identiteit moet de juiste machtigingen krijgen voor de doelresource om het experiment te kunnen uitvoeren.

Geef het experiment toegang tot uw resources met behulp van de volgende opdracht. Vervang $EXPERIMENT_PRINCIPAL_ID door de principal-id uit de vorige stap. Vervang door $RESOURCE_ID de resource-id van de doelresource. In dit geval is dit de resource-id van het Azure Cosmos DB-exemplaar. Wijzig de rol in de juiste ingebouwde rol voor dat resourcetype. Voer deze opdracht uit voor elke resource die is gericht op uw experiment.

az role assignment create --role "Cosmos DB Operator" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID

Uw experiment uitvoeren

U bent nu klaar om uw experiment uit te voeren. Als u het effect wilt zien, wordt u aangeraden het overzicht van uw Azure Cosmos DB-account te openen en naar Gegevens globaal repliceren in een afzonderlijk browsertabblad. Vernieuw regelmatig tijdens het experiment om de regiowisseling weer te geven.

  1. Start het experiment met behulp van de Azure CLI. Vervang , $RESOURCE_GROUPen $EXPERIMENT_NAME door $SUBSCRIPTION_IDde eigenschappen voor uw experiment.

    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. Het antwoord bevat een status-URL die u kunt gebruiken om de status van het experiment op te vragen terwijl het experiment wordt uitgevoerd.

Volgende stappen

Nu u een direct azure Cosmos DB-serviceexperiment hebt uitgevoerd, kunt u het volgende doen: