Partager via


Créer une expérience de chaos qui utilise une erreur directe de service avec Azure CLI

Vous pouvez utiliser une expérience de chaos pour vérifier que votre application résiste aux défaillances en les provoquant dans un environnement contrôlé. Dans cet article, vous entraînez un basculement Azure Cosmos DB à plusieurs lectures et en écriture unique à l’aide d’une expérience de chaos et d’Azure Chaos Studio. L’exécution de cette expérience peut vous aider à vous prémunir contre la perte de données lorsqu’un événement de basculement se produit.

Vous pouvez utiliser ces mêmes étapes pour configurer et exécuter une expérience pour toute erreur directe de service. Une erreur de service direct s’exécute directement sur une ressource Azure sans nécessiter d’instrumentation, contrairement aux erreurs basées sur l’agent qui demandent l’installation de l’agent Chaos.

Prérequis

  • Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
  • Un compte Azure Cosmos DB. Si vous n’avez pas de compte Azure Cosmos DB, vous pouvez en créer un.
  • Au moins deux configurations de région, une de lecture et une d’écriture pour votre compte Azure Cosmos DB.

Ouvrir Azure Cloud Shell

Azure Cloud Shell est un interpréteur de commandes interactif et gratuit que vous pouvez utiliser pour exécuter les étapes de cet article. Il contient des outils Azure courants préinstallés et configurés pour être utilisés avec votre compte.

Pour ouvrir Cloud Shell, sélectionnez Essayer dans le coin supérieur droit d’un bloc de code. Vous pouvez également ouvrir Cloud Shell dans un onglet de navigateur distinct en accédant à Bash. Sélectionnez Copier pour copier les blocs de code, collez-les dans Cloud Shell et appuyez sur Entrée pour les exécuter.

Si vous souhaitez installer et utiliser l’interface CLI localement, ce didacticiel nécessite Azure CLI version 2.0.30 ou ultérieure. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.

Remarque

Ces instructions utilisent un terminal Bash dans Cloud Shell. Certaines commandes peuvent ne pas fonctionner comme décrit si vous exécutez l’interface CLI localement ou dans un terminal PowerShell.

Activer Chaos Studio sur votre compte Azure Cosmos DB

Chaos Studio ne peut pas injecter d’erreurs sur une ressource, sauf si cette ressource a été ajoutée à Chaos Studio en premier. Vous ajoutez une ressource à Chaos Studio en créant une cible et des fonctionnalités sur la ressource. Les comptes Azure Cosmos DB n’ont qu’un seul type cible (service direct) et une seule fonctionnalité (basculement). D’autres ressources peuvent avoir jusqu’à deux types cibles. Un type cible est destiné aux erreurs directes de service. Un autre type cible est destiné aux erreurs basées sur l’agent. D’autres ressources peuvent avoir de nombreuses autres fonctionnalités.

  1. Créez une cible en $RESOURCE_ID remplaçant par l’ID de ressource de la ressource que vous ajoutez. Remplacez $TARGET_TYPE par le type cible que vous ajoutez :

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

    Par exemple, si vous ajoutez une machine virtuelle en tant que cible directe de service :

    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. Créez les fonctionnalités sur la cible en $RESOURCE_ID remplaçant par l’ID de ressource de la ressource que vous ajoutez. Remplacez $TARGET_TYPE par le type cible que vous ajoutez. Remplacez $CAPABILITY par le nom de la fonctionnalité d’erreur que vous activez.

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

    Par exemple, si vous activez la fonctionnalité d’arrêt de la machine virtuelle :

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

Vous avez maintenant ajouté votre compte Azure Cosmos DB à Chaos Studio.

Créer une expérience

Vous pouvez maintenant créer votre expérience. Une expérience de chaos définit les actions que vous souhaitez entreprendre sur les ressources cibles. Les actions sont organisées et exécutées en étapes séquentielles. L’expérience chaos définit également les actions que vous souhaitez entreprendre sur les branches, qui s’exécutent en parallèle.

  1. Formulez votre expérience JSON à partir de l’exemple JSON suivant. Modifiez le json pour correspondre à l’expérience que vous souhaitez exécuter à l’aide de l’API Créer une expérience et de la bibliothèque d’erreurs.

    {
      "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/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB/providers/Microsoft.Chaos/targets/Microsoft-CosmosDB"
              }
            ]
          }
        ]
      }
    }
    
  2. Créez l’expérience à l’aide d’Azure CLI. Remplacez $SUBSCRIPTION_ID, $RESOURCE_GROUPet $EXPERIMENT_NAME par les propriétés de votre expérience. Vérifiez que vous avez enregistré et chargé votre expérience JSON. Mettez à jour experiment.json avec votre nom de fichier 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
    

    Chaque expérience crée une identité managée affectée par le système correspondante. Notez l’ID principal de cette identité dans la réponse de l’étape suivante.

Accordez l’autorisation d’expérience à votre compte Azure Cosmos DB

Lorsque vous créez une expérience de chaos, Chaos Studio crée une identité managée affectée par le système qui exécute des erreurs sur vos ressources cibles. Cette identité doit avoir les autorisations appropriées sur la ressource cible pour que l’expérience s’exécute correctement.

Donnez à l’expérience l’accès à vos ressources à l’aide de la commande suivante. Remplacez $EXPERIMENT_PRINCIPAL_ID par l’ID de principal de l’étape précédente. Remplacez $RESOURCE_ID par l’ID de ressource de la ressource cible. Dans ce cas, il s’agit de l’ID de ressource d’instance Azure Cosmos DB. Remplacez le rôle par le rôle intégré approprié pour ce type de ressource. Exécutez cette commande pour chaque ressource ciblée dans votre expérience.

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

Exécuter votre expérience

Vous êtes maintenant prêt à exécuter votre expérience. Pour voir l’effet, nous vous recommandons d’ouvrir la vue d’ensemble de votre compte Azure Cosmos DB et d’accéder à Répliquer des données globalement dans un onglet de navigateur distinct. Actualisez régulièrement pendant l’expérience pour afficher l’échange de région.

  1. Démarrez l’expérience à l’aide d’Azure CLI. Remplacez $SUBSCRIPTION_ID, $RESOURCE_GROUPet $EXPERIMENT_NAME par les propriétés de votre expérience.

    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. La réponse comprend une URL d’état que vous pouvez utiliser pour interroger l’état de l’expérience pendant l’exécution de celle-ci.

Étapes suivantes

Maintenant que vous avez exécuté une expérience directe de service Azure Cosmos DB, vous êtes prêt à :