Failover-Tests für äußerst robuste Umgebungen durchführen

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Auf dieser Seite wird beschrieben, wie Datenbank- und Cluster-Failover-Tests für äußerst robuste Umgebungen durchgeführt werden.

Failover-Tests für Ihre Umgebung simulieren einen vollständigen Ausfall einer Zone in einem Rechenzentrum. In einem solchen Szenario kann ein zonaler Ausfall eines Clusters und ein zonaler Ausfall einer Datenbank gleichzeitig auftreten. Durch die Ausführung der beiden Failover-Tests können Sie überwachen, wie Ihre äußerst robuste Umgebung ein Failover ausführt und wie sich dies auf Ihre DAGs und Aufgaben auswirkt.

Hinweise

  • Zum Durchführen von Failover-Tests benötigt Ihr Konto die folgenden Rollen und Berechtigungen:

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

    • 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 und Ihre kubectl-Befehle auf einem Computer ausführen, der Zugriff auf den Endpunkt der Steuerungsebene des GKE-Cluster hat. Je nachdem, wie Sie den Zugriff auf den Endpunkt der Steuerungsebene Ihrer Umgebung eingerichtet haben, können Sie verschiedene Optionen verwenden. Weitere Informationen finden Sie unter Befehle in einer privaten IP-Umgebung ausführen.

Prüfen, ob Ihre Umgebung intakt ist

Achten Sie darauf, die Failover-Tests für Datenbank und Umgebungscluster nur in fehlerfreien Umgebungen durchzuführen.

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. Achte darauf, dass alle Gesundheitsmesswerte 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. Sie können damit beispielsweise messen, wie lange die Datenbank Ihrer Umgebung für den Wechsel in eine andere Zone benötigt.

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

  1. Achten Sie darauf, dass Ihre Umgebung gesund ist.

  2. Rufen Sie die primäre Zone der Datenbank Ihrer Umgebung ab:

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

    Ersetzen Sie Folgendes:

    • ENVIRONMENT_NAME: der Name Ihrer Cloud Composer-Umgebung.
    • LOCATION: 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: 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 anhand der Messwerte zum Zustand Ihrer Umgebung, ob Ihre Umgebung gesund ist.

  7. Die Datenbank Ihrer Umgebung ist für einen weiteren Failover bereit, wenn der Umgebungsmesswert Für Failover verfügbarer Datenbank (composer.googleapis.com/environment/database/available_for_failover) den Wert True hat. Weitere Informationen zum Aufrufen der Umgebungsmesswerte in Cloud Monitoring finden Sie unter Umgebungen überwachen.

Cluster-Failover-Test Ihrer Umgebung ausführen

Sie können einen Failover-Test für den Cluster Ihrer Umgebung durchführen, der einen zonalen Ausfall simuliert. Sie können damit beispielsweise messen, wie lange es dauert, bis Ihre Umgebung zu einer anderen Zone wechselt.

Prüfen, ob Ihre Umgebung intakt ist

Prüfen Sie vor dem Starten des Tests, ob Ihre Umgebung fehlerfrei ist.

Anmeldedaten für den Cluster der 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, in denen die Arbeitslasten im Cluster Ihrer Umgebung ausgeführt werden. Mit diesen Informationen simulieren Sie später einen Zonenausfall. Sie können diese Befehle auch noch einmal ausführen, während Sie den Failover-Test durchführen, um zu sehen, wie der Cluster Ihrer Umgebung das Failover durchführt.

  1. Prüfen Sie Knoten und Zonen:

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

    kubectl get pods --all-namespaces \
    -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName \
    --field-selector metadata.namespace!=kube-system
    
  3. Sehen Sie sich ausführlichere Informationen zu Pods an:

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

Drain-Knoten

Wählen Sie eine Zone aus, in der Sie einen Ausfall simulieren möchten. Wenn Sie den Cluster-Failover-Test zusammen mit dem Datenbank-Failover-Test durchführen, sollten Sie die primäre Zone der hochverfügbaren Cloud SQL-Instanz 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 us-central1-a-Zone simulieren. Dazu führen Sie zuerst den Datenbank-Failover-Test und dann den Failover-Test des Clusters in us-central1-a aus.

Der folgende Befehl simuliert, dass eine Reihe von Knoten in einer bestimmten Zone nicht mehr verfügbar ist. Damit werden Pods aus Knoten in der angegebenen Zone erzwungen und es wird 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 wirkt sich nicht auf Arbeitslasten aus, die im Namespace composer-system ausgeführt werden. In der Befehlsausgabe werden möglicherweise zugehörige Fehlermeldungen angezeigt. Dies wirkt sich nicht auf den Failover-Test aus. Die Knoten, die in der ausgewählten Zone vorhanden sind, 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 mehrere Minuten lang den Status "rot" haben.

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

    Der simulierte Ausfall ist als „Clusterwartungsvorgang“ gekennzeichnet.

  5. Sie müssen nichts weiter tun, um den Cluster Ihrer Umgebung nach dem Test wieder in die Failover-Bereitschaft zu bringen. Während des Tests fügt der Cluster der Umgebung automatisch neue Knoten hinzu, die die vom simulierten Ausfall betroffenen Knoten ersetzen.

Nächste Schritte