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
- Een Azure-abonnement. Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
- Een exemplaar van virtuele-machineschaalsets van Azure.
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.
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\":{}}"
Maak de mogelijkheden op het doel van de virtuele-machineschaalset. Vervang
$RESOURCE_ID
door de resource-id van de resource die u toevoegt. Geef hetVirtualMachineScaleSet
doel en deShutdown-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.
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 opgeeftfilter
, 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" } ] } ] } ] } ] } }
- Gebruik het
Maak het experiment met behulp van de Azure CLI. Vervang ,
$RESOURCE_GROUP
en$EXPERIMENT_NAME
door$SUBSCRIPTION_ID
de eigenschappen voor uw experiment. Zorg ervoor dat u de JSON van uw experiment hebt opgeslagen en geüpload. Werkexperiment.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.
Start het experiment met behulp van de Azure CLI. Vervang ,
$RESOURCE_GROUP
en$EXPERIMENT_NAME
door$SUBSCRIPTION_ID
de 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
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: