Failover-Tests für Umgebungen mit extrem hoher Ausfallsicherheit durchführen

Cloud Composer 1 Cloud Composer 2

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 den vollständigen Ausfall einer Zone in einem Rechenzentrum. In einem solchen Szenario kann es gleichzeitig zu einem zonalen Ausfall eines Clusters und einem zonalen Ausfall einer Datenbank kommen. Mit den beiden Failover-Tests können Sie beobachten, wie Ihre äußerst stabile Umgebung ein Failover durchführt und wie sich dies auf Ihre DAGs und Aufgaben auswirkt.

Hinweise

  • Zum Ausführen von Failover-Tests muss Ihr Konto die folgenden Rollen und Berechtigungen haben:

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

    • Rolle Kubernetes Engine-Clusteradministrator (roles/container.clusterAdmin), um kubectl-Befehle im Cluster der Umgebung auszuführen. Alternativ können Sie Kubernetes-RBAC-Rollen direkt in GKE bereitstellen.

  • Wenn Sie autorisierte Netzwerke verwenden und kubectl-Befehle auf einer Maschine ausführen, die auf den Endpunkt der Steuerungsebene des GKE-Cluster zugreifen kann. Je nachdem, wie Sie den Zugriff auf den Endpunkt der Steuerungsebene Ihrer Umgebung eingerichtet haben, haben Sie mehrere Möglichkeiten. Weitere Informationen finden Sie unter Befehle in einer privaten IP-Umgebung ausführen.

Prüfen, ob Ihre Umgebung intakt ist

Führen Sie die Cluster-Failover-Tests der Datenbank und der Umgebung nur in fehlerfreien Umgebungen aus.

So prüfen Sie, ob Ihre Umgebung intakt 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 die Zeit messen, die die Datenbank Ihrer Umgebung benötigt, um zu einer anderen Zone zu wechseln.

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

  1. Achten Sie auf eine gesunde Umgebung.

  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: 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. Dieser 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 Statusmesswerte Ihrer Umgebung, um sicherzustellen, dass Ihre Umgebung fehlerfrei ist.

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

Cluster-Failover-Test der 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 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 Befehl der Google Cloud CLI 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. Anhand dieser Informationen können Sie später einen zonalen Ausfall simulieren. Sie können diese Befehle auch noch einmal während des Failover-Tests ausführen, um zu sehen, wie der Cluster Ihrer Umgebung das Failover ausfü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
    

Knoten per Drain beenden

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 beispielsweise die primäre Cloud SQL-Instanz in us-central1-a ausgeführt wird, können Sie einen Ausfall in der gesamten us-central1-a-Zone simulieren. Führen Sie dazu 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. Sie entfernt Pods zwangsweise aus Knoten in der angegebenen Zone und verhindert, dass Pods auf diesen Knoten neu geplant werden. Da neue Pods nicht 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 entsprechende Fehlermeldungen angezeigt. Dies wirkt sich nicht auf den Failover-Test aus. Die in der ausgewählten Zone vorhandenen Knoten sind weiterhin als nicht planbar gekennzeichnet.

So simulieren Sie einen Ausfall einer Clusterzone 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 Ausfall einer Clusterzone 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 im roten Status bleiben.

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

    Der simulierte Ausfall ist als „Clusterwartungsvorgang“ gekennzeichnet.

  5. Sie müssen keine weiteren Aktionen ausführen, um den Cluster der 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