Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 1)
Auf dieser Seite wird beschrieben, wie Sie Datenbank- und Cluster-Failover-Tests für hochverfügbare 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.
Hinweis
Für die Durchführung von 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 vonkubectl-Befehlen im Cluster der Umgebung. Alternativ können Sie Kubernetes RBAC-Rollen direkt in GKE bereitstellen.
Wenn Sie autorisierte Netzwerke verwenden, müssen Sie
kubectlBefehle von einem Computer ausführen, der 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, 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:
Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.
Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.
Rufen Sie den Tab Monitoring auf.
Achten Sie darauf, dass alle Systemdiagnosemesswerte grün sind.
Datenbank-Failover-Test durchführen
Sie können einen Datenbank-Failover-Test durchführen, bei dem ein zonaler Ausfall simuliert wird, indem Sie ihn mit einem Google Cloud CLI-Befehl auslösen. Sie können dies beispielsweise tun, um zu messen, wie viel Zeit es dauert, bis die Datenbank Ihrer Umgebung zu einer anderen Zone wechselt.
So führen Sie einen Datenbank-Failover-Test für Ihre Umgebung durch:
Prüfen Sie, ob Ihre Umgebung fehlerfrei ist.
Rufen Sie die primäre Zone der Datenbank Ihrer Umgebung ab:
gcloud composer environments fetch-database-properties \ ENVIRONMENT_NAME \ --location LOCATIONErsetzen 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-central1Starten Sie den Datenbank-Failover-Test:
gcloud composer environments database-failover \ ENVIRONMENT_NAME \ --location LOCATIONErsetzen 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-central1Warten Sie, bis der Datenbank-Failover-Test abgeschlossen ist. Der Vorgang kann bis zu 3 Minuten dauern.
Prüfen Sie, ob die primäre Zone der Datenbank Ihrer Umgebung geändert wurde:
gcloud composer environments fetch-database-properties \ ENVIRONMENT_NAME \ --location LOCATIONPrüfen Sie die Systemdiagnosemesswerte Ihrer Umgebung, um sicherzustellen, dass sie fehlerfrei ist.
Die Datenbank Ihrer Umgebung ist für ein weiteres Failover bereit, wenn der Umgebungsmesswert Database available for failover (
composer.googleapis.com/environment/database/available_for_failover) den WertTruehat. Weitere Informationen zum Aufrufen 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, bei dem ein zonaler Ausfall simuliert wird. Sie können dies beispielsweise tun, um zu messen, wie viel Zeit es dauert, bis Ihre Umgebung zu einer anderen Zone wechselt.
Prüfen, ob Ihre Umgebung fehlerfrei ist
Prüfen Sie vor dem Start des Tests, ob Ihre Umgebung fehlerfrei ist.
Anmeldedaten für den Cluster Ihrer Umgebung konfigurieren
So rufen Sie Clusteranmeldedaten ab:
Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.
Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.
Rufen Sie den Tab Umgebungskonfiguration auf.
Klicken Sie auf Clusterdetails ansehen.
Klicken Sie auf Verbinden.
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 Ihrer Umgebung prüfen
Prüfen Sie die Zonen und Knoten, in denen die Arbeitslasten im Cluster Ihrer Umgebung ausgeführt werden. Diese Informationen verwenden Sie 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 das Failover ausführt.
Knoten und Zonen prüfen:
kubectl get nodes \ -o=custom-columns=NAME:.metadata.name,NODE:.metadata.labels.topology\\.gke\\.io/zonePods prüfen:
kubectl get pods --all-namespaces \ -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName \ --field-selector metadata.namespace!=kube-systemDetailliertere 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 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 Zone us-central1-a simulieren, indem Sie zuerst den Datenbank-Failover-Test und dann den Cluster-Failover-Test in us-central1-a durchführen.
Mit dem folgenden Befehl wird simuliert, dass eine Reihe von Knoten in einer bestimmten Zone nicht mehr verfügbar ist. Er entfernt Pods gewaltsam 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. Dies hat keine Auswirkungen auf den Failover-Test. Die Knoten in der ausgewählten Zone sind weiterhin als nicht planbar markiert.
So simulieren Sie einen Ausfall der 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 der Clusterzone simulieren möchten.
Umgebungsmesswerte prüfen
Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.
Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.
Rufen Sie den Tab Monitoring auf.
Prüfen Sie, ob die folgenden Messwerte während des Failover-Vorgangs entweder grün sind oder höchstens einige Minuten lang rot bleiben.
- Umgebungsstatus
- Planer-Heartbeat
- Webserverstatus
- Datenbankstatus
- Aktive Worker
- Aktive Planer
- Aktive Webserver
- Aktive Trigger
Der simulierte Ausfall ist als „Clusterwartungsvorgang“ markiert.
Nach dem Test müssen Sie nichts weiter tun, um den Cluster Ihrer Umgebung wieder für das Failover vorzubereiten. Während des Tests fügt der Cluster der Umgebung automatisch neue Knoten hinzu, die die Knoten ersetzen, die vom simulierten Ausfall betroffen sind.