Delen via


Een chaos-experiment maken dat gebruikmaakt van dynamische targeting om hosts te selecteren

U kunt dynamische doelen gebruiken in een chaos-experiment om een set doelen te kiezen waarop een experiment moet worden uitgevoerd. In dit artikel laten we u zien hoe u dynamisch virtuele-machineschaalsets kunt instellen om af te sluiten op basis van de beschikbaarheidszone. Door dit experiment uit te voeren, kunt u een failover testen naar een exemplaar van Azure Virtual Machine Scale Sets in een andere regio als er een storing is.

U kunt dezelfde stappen gebruiken om een experiment in te stellen en uit te voeren voor elke fout die dynamische targeting ondersteunt. Op dit moment ondersteunt alleen het afsluiten van virtuele-machineschaalsets dynamische targeting.

Vereisten

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 op uw exemplaar van virtuele-machineschaalsets

Azure Chaos Studio kan geen fouten injecteren voor een resource, tenzij die resource eerst is toegevoegd aan Chaos Studio. Als u een resource wilt toevoegen aan Chaos Studio, maakt u een doel en mogelijkheden voor de resource.

Virtuele-machineschaalsets hebben slechts één doeltype (Microsoft-VirtualMachineScaleSet) en één mogelijkheid (shutdown). 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 ook veel andere mogelijkheden.

  1. Maak een doel voor uw virtuele-machineschaalsetresource . Vervang $RESOURCE_ID door de resource-id van de virtuele-machineschaalset die u toevoegt:

    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. Maak de mogelijkheden op het doel van de virtuele-machineschaalset. Vervang $RESOURCE_ID door de resource-id van de resource die u toevoegt. Geef het VirtualMachineScaleSet doel en de Shutdown-2.0 mogelijkheid op.

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

U hebt nu uw virtuele-machineschaalset 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, te beginnen met het volgende JSON-voorbeeld van virtuele-machineschaalsets afsluiten 2.0 . Wijzig de JSON zodat deze overeenkomt met het experiment dat u wilt uitvoeren met behulp van de Create Experiment-API en de foutbibliotheek. Op dit moment is dynamische targeting alleen beschikbaar met de fout virtual machine scale sets shutdown 2.0 en kan alleen filteren op beschikbaarheidszones.

    • Gebruik het filter element om de lijst met Azure-beschikbaarheidszones te configureren om doelen te filteren. Als u geen fout opgeeft filter, worden alle exemplaren in de virtuele-machineschaalset afgesloten.
    • Het experiment is gericht op alle instanties van virtuele-machineschaalsets in de opgegeven zones.
     {
        "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. 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.

Experimentmachtigingen verlenen aan uw virtuele-machineschaalsets

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. 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 "Virtual Machine Contributor" --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, controleert u de portal om te zien of uw virtuele-machineschaalsets zijn afgesloten. Als ze worden afgesloten, controleert u of de services die worden uitgevoerd op uw virtuele-machineschaalsets nog steeds worden uitgevoerd zoals verwacht.

  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 dynamisch doelexperiment voor het afsluiten van een virtuele-machineschaalset hebt uitgevoerd, kunt u het volgende doen: