Erstellen Sie eine Chaos-Simulation, die einen Service-Direktfehler mit der Azure CLI verwendet
Sie können ein Chaos-Experiment verwenden, um zu überprüfen, ob Ihre Anwendung fehlerresistent ist, indem Sie diese Fehler in einer kontrollierten Umgebung verursachen. In diesem Artikel lösen Sie ein Azure Cosmos DB-Failover mit mehreren Lesevorgängen und einem einzelnen Schreibvorgang mithilfe eines Chaos-Experiments und Azure Chaos Studio aus. Die Durchführung dieses Experiments kann Ihnen helfen, sich vor Datenverlusten zu schützen, wenn ein Failover-Ereignis eintritt.
Sie können dieselben Schritte auch für die Einrichtung und Ausführung eines Experiments für einen beliebigen dienstbezogenen Fehler ausführen. Ein service-direct-Fehler wird direkt gegen eine Azure-Ressource ausgeführt, ohne dass eine Instrumentierung erforderlich ist, im Gegensatz zu agentenbasierten Fehlern, die die Installation des Chaosagenten erfordern.
Voraussetzungen
- Eine Azure-Subscription. Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.
- Ein Azure Cosmos DB-Konto. Falls Sie kein Azure Cosmos DB-Konto besitzen, können Sie eines erstellen.
- Mindestens eine Lese- und eine Schreibregion für Ihr Azure Cosmos DB-Konto eingerichtet.
Ö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 auf Ihrem Azure Cosmos DB-Konto
Chaos Studio kann keine Fehler für eine Ressource einschleusen, wenn diese Ressource nicht zuerst in Chaos Studio hinzugefügt wurde. Sie fügen eine Ressource in Chaos Studio hinzu, indem Sie ein Ziel und Fähigkeiten für die Ressource erstellen. Azure Cosmos DB-Konten verfügen nur über einen Zieltyp (dienstbezogen) und eine Funktion (Failover). 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, indem Sie
$RESOURCE_ID
durch die Ressourcen-ID der Ressource ersetzen, die Sie hinzufügen. Ersetzen Sie$TARGET_TYPE
durch den Zieltyp, den Sie hinzufügen:az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/$TARGET_TYPE?api-version=2023-11-01" --body "{\"properties\":{}}"
Zum Beispiel, wenn Sie eine virtuelle Maschine als direktes Ziel für einen Dienst hinzufügen:
az rest --method put --url "https://management.azure.com/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine?api-version=2023-11-01" --body "{\"properties\":{}}"
Erstellen Sie die Funktionen auf dem Ziel, indem Sie
$RESOURCE_ID
durch die Ressourcen-ID der Ressource ersetzen, die Sie hinzufügen. Ersetzen Sie$TARGET_TYPE
durch den Zieltyp, den Sie hinzufügen. Ersetzen Sie$CAPABILITY
durch den Namen der Fehlerfunktion, die Sie aktivieren.az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/$TARGET_TYPE/capabilities/$CAPABILITY?api-version=2023-11-01" --body "{\"properties\":{}}"
Zum Beispiel, wenn Sie die Fähigkeit zum Herunterfahren des virtuellen Computers aktivieren:
az rest --method put --url "https://management.azure.com/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0?api-version=2023-11-01" --body "{\"properties\":{}}"
Sie haben nun Ihr Azure Cosmos DB-Konto 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 Branches ausführen möchten, die parallel ausgeführt werden.
Erstellen Sie Ihr JSON-Experiment-Datenformat, beginnend mit dem folgenden JSON-Beispiel. Ändern Sie das JSON-Datenformat so, dass es dem Experiment entspricht, das Sie mithilfe der API zum Erstellen von Experimenten und der Fehlerbibliothek durchführen möchten.
{ "location": "eastus", "identity": { "type": "SystemAssigned" }, "properties": { "steps": [ { "name": "Step1", "branches": [ { "name": "Branch1", "actions": [ { "type": "continuous", "selectorId": "Selector1", "duration": "PT10M", "parameters": [ { "key": "readRegion", "value": "East US 2" } ], "name": "urn:csci:microsoft:cosmosDB:failover/1.0" } ] } ] } ], "selectors": [ { "id": "Selector1", "type": "List", "targets": [ { "type": "ChaosTarget", "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB/providers/Microsoft.Chaos/targets/Microsoft-CosmosDB" } ] } ] } }
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 einer Experimentierberechtigung für Ihr Azure Cosmos DB-Konto
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. In diesem Fall handelt es sich um die Ressourcen-ID der Azure Cosmos DB-Instanz. Ä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 "Cosmos DB Operator" --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, empfehlen wir Ihnen, Ihre Azure Cosmos DB-Kontoübersicht zu öffnen und auf einer separaten Browserregisterkarte zu Daten global replizieren zu wechseln. Aktualisieren Sie während des Experiments regelmäßig, um den Regionstausch anzuzeigen.
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 dienstbezogenes Azure Cosmos DB-Experiment ausgeführt und sind nun bereit für Folgendes: