Erstellen eines Chaos-Experiments, das dynamische Adressierung zum Auswählen von Hosts verwendetauszuwählen
Sie können dynamische Adressierung in einem Chaos-Experiment verwenden, um eine Reihe von Zielen auszuwählen, für die ein Experiment ausgeführt werden soll. In diesem Artikel wird die dynamische Adressierung von VM-Skalierungsgruppen gezeigt, die basierend auf der Verfügbarkeitszone heruntergefahren werden sollen. Mit diesem Experiment können Sie das Failover auf eine Azure Virtual Machine Scale Sets-Instanz in einer anderen Region testen, wenn es zu einem Ausfall kommt.
Sie können dieselben Schritte für die Einrichtung und Durchführung eines Experiments für beliebige Fehler verwenden, das dynamische Adressierung unterstützt. Derzeit wird nur beim Herunterfahren von VM-Skalierungsgruppe die dynamische Adressierung unterstützt.
Voraussetzungen
- Eine Azure-Subscription. Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.
- Eine Azure Virtual Machine Scale Sets-Instanz
Öffnen von Azure Cloud Shell
Azure Cloud Shell ist eine kostenlose interaktive Shell, mit der Sie die Schritte in diesem Artikel ausführen können. Sie verfügt über allgemeine vorinstallierte Tools und ist für die Verwendung mit Ihrem Konto konfiguriert.
Wählen Sie zum Öffnen von Cloud Shell oben rechts in einem Codeblock die Option Ausprobieren aus. Sie können Cloud Shell auch auf einer separaten Browserregisterkarte öffnen, indem Sie zu Bash wechseln. Wählen Sie Kopieren aus, um die Codeblöcke zu kopieren. Fügen Sie die Blöcke anschließend in Cloud Shell ein, und wählen Sie Eingabe, um sie auszuführen.
Wenn Sie die Befehlszeilenschnittstelle lokal installieren und verwenden möchten, benötigen Sie für dieses Tutorial mindestens die Azure CLI-Version 2.0.30. Führen Sie az --version
aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sei bei Bedarf unter Installieren der Azure CLI.
Hinweis
In diesen Anweisungen wird ein Bash-Terminal in Cloud Shell verwendet. Einige Befehle funktionieren möglicherweise nicht wie beschrieben, wenn Sie die CLI lokal oder in einem PowerShell-Terminal ausführen.
Aktivieren Sie Chaos Studio für Ihre Virtual Machine Scale Sets-Instanz.
Azure Chaos Studio kann keine Fehler für eine Ressource einschleusen, wenn diese Ressource nicht zuerst in Chaos Studio hinzugefügt wurde. Um eine Ressource zu Chaos Studio hinzuzufügen, erstellen Sie ein Ziel und Funktionen für die Ressource.
Virtual Machine Scale Sets nur einen Zieltyp (Microsoft-VirtualMachineScaleSet
) und eine Funktion (shutdown
). Andere Ressourcen verfügen möglicherweise über bis zu zwei Zieltypen. Ein Zieltyp ist für dienstspezifische Fehler vorgesehen. Ein weiterer Zieltyp ist für Agent-basierte Fehler bestimmt. Andere Ressourcen verfügen möglicherweise auch über viele andere Funktionen.
Erstellen Sie ein Ziel für die VMSS-Ressource. Ersetzen Sie
$RESOURCE_ID
durch die Ressourcen-ID der VM-Skalierungsgruppe, die Sie hinzufügen:az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet?api-version=2023-11-01" --body "{\"properties\":{}}"
Erstellen Sie die Funktionen für das VM-Skalierungsgruppenziel. Ersetzen Sie
$RESOURCE_ID
durch die Ressourcen-ID der Ressource, die Sie hinzufügen. Geben Sie das ZielVirtualMachineScaleSet
und die FunktionShutdown-2.0
an.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\":{}}"
Sie haben die VM-Skalierungsgruppe jetzt erfolgreich zu Chaos Studio hinzugefügt.
Erstellen eines Experiments
Sie können jetzt Ihr Experiment erstellen. Ein Chaosexperiment definiert die Aktionen, die Sie gegen Zielressourcen ergreifen möchten. Die Aktionen werden in sequenziellen Schritten organisiert und ausgeführt. Das Chaosexperiment definiert auch die Aktionen, die Sie gegen Verzweigungen ausführen möchten, die parallel ausgeführt werden.
Beginnen Sie bei der Erstellung Ihres JSON-Experiments mit dem folgenden JSON-Beispiel für Virtual Machine Scale Sets Shutdown 2.0. Ändern Sie den JSON-Code so, dass er dem Experiment entspricht, das Sie mithilfe der API zum Erstellen von Experimenten und der Fehlerbibliothek durchführen möchten. Zurzeit ist die dynamische Adressierung nur mit dem Fehler „Virtual Machine Scale Sets Shutdown 2.0“ verfügbar und kann nur nach Verfügbarkeitszonen filtern.
- Verwenden Sie das
filter
-Element, um die Liste der Azure-Verfügbarkeitszonen zum Filtern von Zielen zu konfigurieren. Wennfilter
nicht angegeben wird, fährt dieser Fehler alle Instanzen in der VM-Skalierungsgruppe herunter. - Das Experiment zielt auf alle Virtual Machine Scale Sets-Instanzen in den angegebenen Zonen ab.
{ "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" } ] } ] } ] } ] } }
- Verwenden Sie das
Erstellen Sie das Experiment mithilfe der Azure CLI. Ersetzen Sie
$SUBSCRIPTION_ID
,$RESOURCE_GROUP
und$EXPERIMENT_NAME
durch die Eigenschaften für Ihr Experiment. Stellen Sie sicher, dass Sie Ihr JSON-Experiment gespeichert und hochgeladen haben. Aktualisieren Sieexperiment.json
mit Ihrem JSON-Dateinamen.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
Jede Simulation erstellt eine entsprechende systemseitig zugewiesene verwaltete Identität. Notieren Sie sich die Prinzipal-ID für diese Identität in der Antwort für den nächsten Schritt.
Erteilen der Experimentiergenehmigung für Ihre VM-Skalierungsgruppen
Wenn Sie ein Chaosexperiment erstellen, erzeugt Chaos Studio eine dem System zugewiesene verwaltete Identität, die Fehler gegen Ihre Zielressourcen ausführt. Diese Identität muss mit entsprechenden Rechten für die Zielressource ausgestattet sein, damit das Experiment erfolgreich durchgeführt werden kann.
Gewähren Sie dem Experiment mit dem folgenden Befehl Zugriff auf Ihre Ressourcen. Ersetzen Sie $EXPERIMENT_PRINCIPAL_ID
durch die Prinzipal-ID aus dem vorherigen Schritt. Ersetzen Sie $RESOURCE_ID
durch die Ressourcen-ID der Zielressource. Ändern Sie die Rolle in die entsprechende integrierte Rolle für diesen Ressourcentyp. Führen Sie diesen Befehl für jede Ressource aus, die in Ihrer Simulation als Ziel verwendet wird.
az role assignment create --role "Virtual Machine Contributor" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID
Führen Sie Ihr Experiment durch
Sie sind nun bereit, Ihr Experiment durchzuführen. Um die Auswirkung anzuzeigen, sehen Sie im Portal nach, ob die VM-Skalierungsgruppenziele heruntergefahren werden. Wenn sie heruntergefahren werden, überprüfen Sie, ob die in der VM-Skalierungsgruppe ausgeführten Dienste weiterhin wie erwartet ausgeführt werden.
Starten Sie das Experiment mithilfe der Azure CLI. Ersetzen Sie
$SUBSCRIPTION_ID
,$RESOURCE_GROUP
und$EXPERIMENT_NAME
durch die Eigenschaften für Ihr 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
Die Antwort enthält eine Status-URL, mit der Sie den Simulationsstatus während der Ausführung der Simulation abfragen können.
Nächste Schritte
Sie haben ein Experiment zum Herunterfahren von VM-Skalierungsgruppen mit dynamischer Adressierung ausgeführt und sind nun auf Folgendes vorbereitet: