Creare un esperimento Chaos che usa la selezione della destinazione dinamica per selezionare gli host
È possibile usare la selezione della destinazione dinamica in un esperimento Chaos per scegliere un set di destinazioni su cui eseguire un esperimento. In questo articolo viene illustrato come impostare come destinazione in modo dinamico i set di scalabilità di macchine virtuali per l'arresto in base alla zona di disponibilità. L'esecuzione di questo esperimento consente di testare il failover in un'istanza di set di scalabilità di macchine virtuali di Azure in un'area diversa in caso di interruzione.
È possibile usare questi stessi passaggi per configurare ed eseguire un esperimento per qualsiasi errore che supporti la selezione dinamica della destinazione. Attualmente, solo l'arresto del set di scalabilità di macchine virtuali supporta la selezione dinamica della destinazione.
Prerequisiti
- Una sottoscrizione di Azure. Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
- Un'istanza di set di scalabilità di macchine virtuali di Azure.
Aprire Azure Cloud Shell
Azure Cloud Shell è una shell interattiva gratuita che può essere usata per eseguire la procedura di questo articolo. Include strumenti comuni di Azure preinstallati e configurati per l'uso con l'account.
Per aprire Cloud Shell, selezionare Prova nell'angolo in alto a destra di un blocco di codice. È anche possibile aprire Cloud Shell in una scheda separata del browser visitando Bash. Selezionare Copia per copiare i blocchi di codice, incollarli in Cloud Shell e selezionare Invio per eseguirli.
Se si desidera installare e usare l'interfaccia della riga di comando in locale, per questa esercitazione è richiesta l'interfaccia della riga di comando di Azure versione 2.0.30 o successiva. Eseguire az --version
per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.
Nota
Queste istruzioni usano un terminale Bash in Cloud Shell. Alcuni comandi potrebbero non funzionare come descritto se si esegue l'interfaccia della riga di comando in locale o in un terminale di PowerShell.
Abilitare Chaos Studio nell'istanza dei set di scalabilità di macchine virtuali
Azure Chaos Studio non può inserire errori per una risorsa, a meno che tale risorsa non sia stata aggiunta prima a Chaos Studio. Per aggiungere una risorsa a Chaos Studio, creare una destinazione e funzionalità nella risorsa.
I set di scalabilità di macchine virtuali hanno un solo tipo di destinazione (Microsoft-VirtualMachineScaleSet
) e una sola funzionalità (shutdown
). Altre risorse potrebbero avere fino a due tipi di destinazione. Un tipo di destinazione è per gli errori diretti al servizio. Un altro tipo di destinazione è per gli errori basati su agente. Altre risorse potrebbero avere anche molte altre funzionalità aggiuntive.
Creare una destinazione per la risorsa del set di scalabilità di macchine virtuali. Sostituire
$RESOURCE_ID
con l'ID risorsa del set di scalabilità di macchine virtuali che si sta aggiungendo:az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet?api-version=2023-11-01" --body "{\"properties\":{}}"
Creare le funzionalità nella destinazione del set di scalabilità di macchine virtuali. Sostituire
$RESOURCE_ID
con l'ID risorsa della risorsa che si sta aggiungendo. Specificare la destinazioneVirtualMachineScaleSet
e la funzionalità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\":{}}"
A questo punto, il set di scalabilità di macchine virtuali è stato aggiunto a Chaos Studio.
Creare un esperimento
È ora possibile creare l'esperimento. Un esperimento chaos definisce le azioni da eseguire sulle risorse di destinazione. Le azioni sono organizzate ed eseguite in passaggi sequenziali. L'esperimento chaos definisce anche le azioni che si desidera eseguire sui rami, che vengono eseguite in parallelo.
Formulare il codice JSON dell'esperimento a partire dall'esempio JSON seguente di arresto 2.0 dei set di scalabilità di macchine virtuali seguenti. Modificare il codice JSON in modo che corrisponda all'esperimento che si desidera eseguire usando l'API Creare un esperimento e la libreria di errori. Al momento, la selezione della destinazione dinamica è disponibile solo con l'errore arresto 2.0 dei set di scalabilità di macchine virtuali ed è in grado di filtrare solo le zone di disponibilità.
- Usare l'elemento
filter
per configurare l'elenco delle zone di disponibilità di Azure per filtrare le destinazioni. Se non si specificafilter
, l'errore arresta tutte le istanze nel set di scalabilità di macchine virtuali. - L'esperimento è destinato a tutte le istanze dei set di scalabilità di macchine virtuali nelle zone specificate.
{ "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" } ] } ] } ] } ] } }
- Usare l'elemento
Creare l'esperimento usando l'interfaccia della riga di comando di Azure. Sostituire
$SUBSCRIPTION_ID
,$RESOURCE_GROUP
e$EXPERIMENT_NAME
con le proprietà per l'esperimento. Assicurarsi di aver salvato e caricato il codice JSON dell'esperimento. Aggiornareexperiment.json
con il nome file 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
Ogni esperimento crea un'identità gestita assegnata dal sistema corrispondente. Prendere nota dell'ID entità per questa identità nella risposta per il passaggio successivo.
Concedere l'autorizzazione dell'esperimento ai set di scalabilità di macchine virtuali
Quando si crea un esperimento chaos, Chaos Studio crea un'identità gestita assegnata dal sistema che esegue errori sulle risorse di destinazione. Questa identità deve avere le autorizzazioni appropriate per la risorsa di destinazione affinché l'esperimento venga eseguito correttamente.
Concedere all'esperimento l'accesso alle risorse usando il comando seguente. Sostituire $EXPERIMENT_PRINCIPAL_ID
con l'ID entità del passaggio precedente. Sostituire $RESOURCE_ID
con l'ID risorsa della risorsa di destinazione. Modificare il ruolo in base al ruolo predefinito appropriato per tale tipo di risorsa. Eseguire questo comando per ogni risorsa di destinazione nell'esperimento.
az role assignment create --role "Virtual Machine Contributor" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID
Eseguire l'esperimento
Adesso è possibile eseguire l'esperimento. Per visualizzare l'effetto, controllare il portale per verificare se le destinazioni dei set di scalabilità di macchine virtuali sono arrestate. Se vengono arrestate, verificare che i servizi in esecuzione nei set di scalabilità di macchine virtuali siano ancora in esecuzione come previsto.
Avviare l'esperimento usando l'interfaccia della riga di comando di Azure. Sostituire
$SUBSCRIPTION_ID
,$RESOURCE_GROUP
e$EXPERIMENT_NAME
con le proprietà per l'esperimento.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
La risposta include un URL di stato che è possibile usare per eseguire una query sullo stato dell'esperimento durante l'esecuzione dell'esperimento.
Passaggi successivi
Ora che è stato eseguito un esperimento di arresto del set di scalabilità di macchine virtuali con selezione dinamica della destinazione, è possibile: