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 verursachen Sie ein Mehrlese-, Single-Write-Azure Cosmos DB-Failover mithilfe eines Chaosexperiments und Azure Chaos Studio. Die Durchführung dieses Experiments kann Ihnen helfen, sich vor Datenverlusten zu schützen, wenn ein Failover-Ereignis eintritt.

Sie können diese Schritte verwenden, um ein Experiment für jeden dienst direkten Fehler einzurichten und auszufü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

  • Ein Azure-Abonnement. Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.
  • Ein Azure Cosmos DB-Konto. Wenn Sie nicht über ein Azure Cosmos DB-Konto verfügen, können Sie ein Konto 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.

Um Cloud Shell zu öffnen, wählen Sie " Ausprobieren" in der oberen rechten Ecke eines Codeblocks 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 CLI lokal installieren und verwenden möchten, erfordert dieses Lernprogramm Azure CLI, Version 2.0.30 oder höher. 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

Diese Anweisungen verwenden ein Bash-Terminal in Cloud Shell. 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 gegen eine Ressource einfügen, es sei denn, diese Ressource wurde zuerst zu Chaos Studio hinzugefügt. Sie fügen eine Ressource zu Chaos Studio hinzu, indem Sie ein Ziel und eine Funktion für die Ressource erstellen. Azure Cosmos DB-Konten verfügen nur über einen Zieltyp (service-direct) und eine Funktion (Failover). Andere Ressourcen verfügen möglicherweise über bis zu zwei Zieltypen. Ein Zieltyp ist für Dienst-direkte Fehler vorgesehen. Ein weiterer Zieltyp ist für agentbasierte Fehler bestimmt. Andere Ressourcen verfügen möglicherweise über viele andere Funktionen.

  1. Erstellen Sie ein Ziel, indem Sie die Ressourcen-ID der Ressource ersetzen $RESOURCE_ID , die Sie hinzufügen. Ersetzen Sie durch $TARGET_TYPE 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\":{}}"
    

    Wenn Sie beispielsweise einen virtuellen Computer als dienstbasiertes Ziel 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\":{}}"
    
  2. Erstellen Sie die Funktionen für das Ziel, indem Sie die Ressourcen-ID der Ressource ersetzen $RESOURCE_ID , die Sie hinzufügen. Ersetzen Sie den $TARGET_TYPE Zieltyp, den Sie hinzufügen. Ersetzen Sie den $CAPABILITY 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\":{}}"
    

    Wenn Sie beispielsweise die Funktion 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 jetzt Ihr Azure Cosmos DB-Konto erfolgreich zu Chaos Studio hinzugefügt.

Erstellen eines Experiments

Jetzt können Sie Ihr Experiment erstellen. Ein Chaosexperiment definiert die Aktionen, die Sie gegen Zielressourcen ergreifen möchten. Die Aktionen sind organisiert und werden in sequenziellen Schritten ausgeführt. Das Chaos-Experiment definiert auch die Aktionen, die Sie gegen Zweige ausführen möchten, die parallel ausgeführt werden.

  1. Formulieren Sie Ihr Experiment JSON beginnend mit dem folgenden JSON-Beispiel. Ändern Sie den JSON-Code so, dass es dem Experiment entspricht, das Sie ausführen möchten, indem Sie die Create Experiment-API und die Fehlerbibliothek verwenden.

    {
      "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/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB/providers/Microsoft.Chaos/targets/Microsoft-CosmosDB"
              }
            ]
          }
        ]
      }
    }
    
  2. Erstellen Sie das Experiment mithilfe der Azure CLI. Ersetzen Sie , $RESOURCE_GROUPund $EXPERIMENT_NAME verwenden Sie $SUBSCRIPTION_IDdie Eigenschaften für Ihr Experiment. Stellen Sie sicher, dass Sie Ihr Experiment JSON gespeichert und hochgeladen haben. Aktualisieren Sie experiment.json den 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 Experimentberechtigung 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 Zugriff auf Ihre Ressourcen, indem Sie den folgenden Befehl verwenden. Ersetzen Sie $EXPERIMENT_PRINCIPAL_ID die Prinzipal-ID aus dem vorherigen Schritt. Ersetzen Sie diese $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 jetzt bereit, Ihr Experiment auszuführen. Um den Effekt zu sehen, empfehlen wir, dass Sie Ihren Azure Cosmos DB-Kontoübersicht öffnen und global auf einer separaten Browserregisterkarte daten replizieren. Aktualisieren Sie regelmäßig während des Experiments, um den Regionstausch anzuzeigen.

  1. Starten Sie das Experiment mithilfe der Azure CLI. Ersetzen Sie , $RESOURCE_GROUPund $EXPERIMENT_NAME verwenden Sie $SUBSCRIPTION_IDdie 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
    
  2. 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

Nachdem Sie nun ein direktes Azure Cosmos DB-Experiment ausgeführt haben, sind Sie bereit für: