Partager via


Créer une expérience de chaos qui utilise le ciblage dynamique pour sélectionner des hôtes

Vous pouvez utiliser le ciblage dynamique dans une expérience de chaos pour choisir un ensemble de cibles sur lesquelles exécuter une expérience. Dans cet article, nous vous montrons comment cibler dynamiquement des groupes de machines virtuelles identiques à arrêter en fonction de la zone de disponibilité. L’exécution de cette expérience peut vous aider à tester le basculement vers une instance d’Azure Virtual Machine Scale Sets dans une autre région en cas de panne.

Vous pouvez utiliser ces mêmes étapes pour configurer et exécuter une expérience pour toute erreur qui prend en charge le ciblage dynamique. Actuellement, seul l’arrêt de groupe de machines virtuelles identiques prend en charge le ciblage dynamique.

Prérequis

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 en haut à droite d’un bloc de code. Vous pouvez également ouvrir Cloud Shell sous un autre onglet de navigateur 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 de ligne de commande localement, vous aurez besoin d’Azure CLI version 2.0.30 ou ultérieure pour ce tutoriel. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.

Remarque

Ces instructions impliquent l’utilisation d’un terminal Bash dans Cloud Shell. Certaines commandes risquent de ne pas fonctionner comme prévu si vous exécutez l’interface CLI localement ou dans un terminal PowerShell.

Activer Chaos Studio sur votre instance de Virtual Machine Scale Sets

Azure Chaos Studio ne peut pas injecter d’erreurs sur une ressource, sauf si elle a d’abord été intégrée à Chaos Studio. Pour ajouter une ressource à Chaos Studio, créez une cible et des fonctionnalités sur la ressource.

Virtual Machine Scale Sets n’a qu’un seul type cible (Microsoft-VirtualMachineScaleSet) et une seule fonctionnalité (shutdown). D’autres ressources peuvent avoir jusqu’à deux types cibles. L’un des types cibles est destiné aux erreurs directes de service. Un autre type cible est destiné aux erreurs basées sur l’agent. D’autres ressources peuvent également avoir de nombreuses autres fonctionnalités.

  1. Créez une cible pour votre ressource de groupe de machines virtuelles identiques. Remplacez $RESOURCE_ID par l’ID de ressource du groupe de machines virtuelles identiques que vous ajoutez :

    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. Créez les fonctionnalités sur la cible de groupe de machines virtuelles identiques. Remplacez $RESOURCE_ID par l’ID de ressource de la ressource que vous ajoutez. Spécifiez la cible VirtualMachineScaleSet et la fonctionnalité 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\":{}}"
    

Vous avez ajouté votre groupe de machines virtuelles identiques à Chaos Studio.

Créer une expérience

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

  1. Formulez le code JSON de votre expérience en partant de l’exemple de code JSON Arrêt Virtual Machine Scale Sets 2.0 suivant. Modifiez le code JSON pour qu’il corresponde à l’expérience que vous souhaitez exécuter à l’aide de l’API de création d’expérience et de la bibliothèque d’erreurs. À l’heure actuelle, le ciblage dynamique est disponible uniquement avec l’erreur Arrêt Virtual Machine Scale Sets 2.0, et ne peut filtrer que sur les zones de disponibilité.

    • Utilisez l’élément filter pour configurer la liste des zones de disponibilité Azure d’après lesquelles filtrer les cibles. Si vous ne fournissez pas de filter, l’erreur arrête toutes les instances du groupe de machines virtuelles identiques.
    • L’expérience cible toutes les instances de Virtual Machine Scale Sets dans les zones spécifiées.
     {
        "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. Créez l’expérience à l’aide d’Azure CLI. Remplacez $SUBSCRIPTION_ID, $RESOURCE_GROUP et $EXPERIMENT_NAME par les propriétés de votre expérience. Vérifiez que vous avez enregistré et chargé le fichier JSON de votre expérience. Mettez à jour experiment.json avec le nom de votre 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 de principal de cette identité mentionné dans la réponse, pour l’étape suivante.

Accorder à l’expérience l’autorisation d’accès à vos groupes de machines virtuelles identiques

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.

Accordez à l’expérience l’accès à vos ressources à l’aide de la commande suivante. Remplacez $EXPERIMENT_PRINCIPAL_ID par l’ID de principal obtenu à l’étape précédente. Remplacez $RESOURCE_ID par l’ID de ressource de la ressource cible. 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 "Virtual Machine Contributor" --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 en voir l’effet, vérifiez le portail pour savoir si vos cibles de groupes de machines virtuelles identiques sont arrêtées. Si elles sont arrêtées, vérifiez que les services s’exécutant sur vos groupes de machines virtuelles identiques sont toujours en cours d’exécution comme prévu.

  1. Démarrez l’expérience à l’aide d’Azure CLI. Remplacez $SUBSCRIPTION_ID, $RESOURCE_GROUP et $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 d’arrêt de groupe de machines virtuelles identiques ciblée dynamiquement, vous êtes prêt à :