Condividi tramite


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

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.

  1. 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\":{}}"
    
  2. 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 destinazione VirtualMachineScaleSet 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.

  1. 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 specifica filter, 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"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    }
    
  2. 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. Aggiornare experiment.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.

  1. 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
    
  2. 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: