Failover-Tests für hochgradig resiliente Umgebungen durchführen

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Auf dieser Seite wird beschrieben, wie Sie Failover-Tests für Datenbanken und Cluster für hochgradig resiliente Umgebungen durchführen.

Bei Failover-Tests für Ihre Umgebung wird ein vollständiger Ausfall einer Zone in einem Rechenzentrum simuliert. In einem solchen Szenario kann es gleichzeitig zu einem zonalen Ausfall eines Clusters und einem zonalen Ausfall einer Datenbank kommen. Durch die Durchführung der beiden Failover-Tests können Sie beobachten, wie Ihre hochverfügbare Umgebung ein Failover ausführt, und prüfen, wie sich dies auf Ihre DAGs und Aufgaben auswirkt.

Hinweise

  • Für Failover-Tests muss Ihr Google-Konto die folgenden Rollen und Berechtigungen haben:

    • Berechtigung composer.environments.update. Eine Liste der Rollen mit dieser Berechtigung finden Sie unter Zugriffssteuerung mit IAM.

    • Die Rolle Kubernetes Engine-Clusteradministrator (roles/container.clusterAdmin) zum Ausführen von kubectl-Befehlen im Cluster der Umgebung. Alternativ können Sie Kubernetes RBAC-Rollen direkt in GKE bereitstellen.

  • Wenn Sie autorisierte Netzwerke verwenden, müssen Sie kubectl-Befehle auf einem Computer ausführen, der auf den Steuerungsebenenendpunkt des GKE-Cluster zugreifen kann. Je nachdem, wie Sie den Zugriff auf den Endpunkt der Steuerungsebene Ihrer Umgebung einrichten, können Sie verschiedene Optionen verwenden. Weitere Informationen finden Sie unter Befehle in einer privaten IP-Umgebung ausführen.

Prüfen, ob Ihre Umgebung fehlerfrei ist

Führen Sie Failover-Tests nur in fehlerfreien Umgebungen durch. So prüfen Sie, ob Ihre Umgebung fehlerfrei ist:

  1. Rufen Sie in der Google Cloud -Console die Seite Umgebungen auf.

    Zur Seite Umgebungen

  2. Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.

  3. Rufen Sie den Tab Monitoring auf.

  4. Achten Sie darauf, dass alle Systemdiagnosemesswerte grün sind.

Datenbank-Failover-Test durchführen

Sie können einen Datenbank-Failover-Test durchführen, der einen zonalen Ausfall simuliert, indem Sie ihn mit einem Google Cloud CLI-Befehl auslösen. Das kann beispielsweise sinnvoll sein, um zu messen, wie lange es dauert, bis die Datenbank Ihrer Umgebung in eine andere Zone wechselt.

So führen Sie einen Datenbank-Failover-Test für Ihre Umgebung durch:

  1. Prüfen Sie, ob Ihre Umgebung fehlerfrei ist.

  2. Primäre Zone der Datenbank Ihrer Umgebung abrufen:

    gcloud composer environments fetch-database-properties \
        ENVIRONMENT_NAME \
        --location LOCATION
    

    Ersetzen Sie Folgendes:

    • ENVIRONMENT_NAME: Der Name Ihrer Cloud Composer-Umgebung.
    • LOCATION: die Region, in der sich die Umgebung befindet.

    Beispiel:

    gcloud composer environments fetch-database-properties \
        example-environment \
        --location us-central1
    
  3. Starten Sie den Datenbank-Failover-Test:

    gcloud composer environments database-failover \
        ENVIRONMENT_NAME \
        --location LOCATION
    

    Ersetzen Sie Folgendes:

    • ENVIRONMENT_NAME: Der Name Ihrer Cloud Composer-Umgebung.
    • LOCATION: die Region, in der sich die Umgebung befindet.

    Beispiel:

    gcloud composer environments database-failover \
        example-environment \
        --location us-central1
    
  4. Warten Sie, bis der Datenbank-Failover-Test abgeschlossen ist. Der Vorgang kann bis zu 3 Minuten dauern.

  5. Prüfen Sie, ob die primäre Zone der Datenbank Ihrer Umgebung geändert wurde:

    gcloud composer environments fetch-database-properties \
        ENVIRONMENT_NAME \
        --location LOCATION
    
  6. Prüfen Sie die Gesundheitsmesswerte Ihrer Umgebung, um sicherzustellen, dass Ihre Umgebung in gutem Zustand ist.

  7. Die Datenbank Ihrer Umgebung ist bereit für ein weiteres Failover, wenn der Umgebungs-Messwert Database available for failover (composer.googleapis.com/environment/database/available_for_failover) den Wert True hat. Weitere Informationen zum Ansehen der Messwerte Ihrer Umgebung in Cloud Monitoring finden Sie unter Umgebungen überwachen.

Cluster-Failover-Test für Ihre Umgebung durchführen

Sie können einen Failover-Test für den Cluster Ihrer Umgebung durchführen, um einen Zonenausfall zu simulieren. Das kann beispielsweise sinnvoll sein, um zu messen, wie lange es dauert, bis Ihre Umgebung in eine andere Zone wechselt.

Prüfen, ob Ihre Umgebung fehlerfrei ist

Bevor Sie mit dem Test beginnen, müssen Sie Ihre Umgebung einrichten.

Anmeldedaten für den Cluster Ihrer Umgebung konfigurieren

So rufen Sie Clusteranmeldedaten ab:

  1. Rufen Sie in der Google Cloud -Console die Seite Umgebungen auf.

    Zur Seite Umgebungen

  2. Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.

  3. Rufen Sie den Tab Umgebungskonfiguration auf.

  4. Klicken Sie auf Clusterdetails ansehen.

  5. Klicken Sie auf Verbinden.

  6. Kopieren Sie den angezeigten Google Cloud CLI-Befehl und führen Sie ihn aus.

    Beispiel:

    gcloud container clusters get-credentials \
      us-central1-exam-db23ee12-gke \
      --region us-central1 \
      --project example-project
    

Cluster der Umgebung prüfen

Prüfen Sie die Zonen und Knoten, auf denen die Arbeitslasten im Cluster Ihrer Umgebung ausgeführt werden. Sie verwenden diese Informationen später, um einen zonalen Ausfall zu simulieren. Sie können diese Befehle auch während des Failover-Tests noch einmal ausführen, um zu sehen, wie der Cluster Ihrer Umgebung den Failover ausführt.

  1. Knoten und Zonen prüfen:

    kubectl get nodes \
      -o=custom-columns=NAME:.metadata.name,NODE:.metadata.labels.topology\\.gke\\.io/zone
    
  2. Pods prüfen:

    kubectl get pods --all-namespaces \
    -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName \
    --field-selector metadata.namespace!=kube-system
    
  3. Detailliertere Informationen zu Pods ansehen:

    kubectl get pods --all-namespaces -o wide \
    --field-selector metadata.namespace!=kube-system
    

Knoten leeren

Wählen Sie eine Zone aus, in der Sie einen Stromausfall simulieren möchten. Wenn Sie den Cluster-Failover-Test zusammen mit dem Datenbank-Failover-Test durchführen, sollten Sie die primäre Zone der Cloud SQL-Instanz mit hoher Verfügbarkeit Ihrer Umgebung auswählen. Wenn die primäre Cloud SQL-Instanz beispielsweise in us-central1-a ausgeführt wird, können Sie einen Ausfall in der gesamten Zone us-central1-a simulieren, indem Sie zuerst den Datenbank-Failover-Test und dann den Cluster-Failover-Test in us-central1-a ausführen.

Mit dem folgenden Befehl wird simuliert, dass eine Reihe von Knoten in einer bestimmten Zone nicht mehr verfügbar ist. Sie erzwingt das Entfernen von Pods von Knoten in der angegebenen Zone und verhindert, dass Pods auf diesen Knoten neu geplant werden. Da keine neuen Pods geplant werden können, werden dem Cluster neue Knoten hinzugefügt.

Dieser Befehl hat keine Auswirkungen auf Arbeitslasten, die im Namespace composer-system ausgeführt werden. Möglicherweise werden in der Befehlsausgabe entsprechende Fehlermeldungen angezeigt. Das hat keine Auswirkungen auf den Failover-Test. Die Knoten in der ausgewählten Zone sind weiterhin als nicht planbar markiert.

So simulieren Sie einen Clusterzonenfehler in der ausgewählten Zone:

kubectl get nodes -o name -l "topology.gke.io/zone=ZONE" | \
xargs kubectl drain \
--ignore-daemonsets --delete-emptydir-data --force --disable-eviction

Ersetzen Sie Folgendes:

  • ZONE: die Zone, in der Sie einen Clusterzonenfehler simulieren möchten.

Umgebungsmesswerte prüfen

Umgebungsmesswerte während eines simulierten Zonenausfalls
Abbildung 1. Umgebungsmesswerte während eines simulierten Zonenausfalls (zum Vergrößern klicken)
  1. Rufen Sie in der Google Cloud -Console die Seite Umgebungen auf.

    Zur Seite Umgebungen

  2. Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.

  3. Rufen Sie den Tab Monitoring auf.

  4. Prüfen Sie, ob die folgenden Messwerte während des Failover-Vorgangs entweder „grün“ sind oder höchstens einige Minuten lang den Status „rot“ beibehalten.

    • Umgebungsstatus
    • Planer-Heartbeat
    • Webserverstatus
    • Datenbankstatus
    • Aktive Worker
    • Aktive Planer
    • Aktive Webserver
    • Aktive Trigger

    Die simulierte Unterbrechung ist als „Clusterwartungsvorgang“ gekennzeichnet.

  5. Sie müssen keine zusätzlichen Maßnahmen ergreifen, um den Cluster Ihrer Umgebung nach dem Test wieder in den Failover-Bereitschaftsmodus zu versetzen. Während des Tests werden dem Cluster der Umgebung automatisch neue Knoten hinzugefügt, die die von dem simulierten Ausfall betroffenen Knoten ersetzen.

Nächste Schritte