Notfallwiederherstellung mit Umgebungs-Snapshots

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Auf dieser Seite wird beschrieben, wie Sie Umgebungs-Snapshots für die Notfallwiederherstellung verwenden.

Definitionen

In diesem Leitfaden werden die folgenden Definitionen verwendet:

  • Ein Notfall ist ein Ereignis, bei dem Cloud Composer oder andere für den Betrieb Ihrer Umgebung notwendigen Komponenten nicht verfügbar sind. Dieses Ereignis erfordert einen Failover auf eine andere Region und Cloud Composer-Umgebungen. Die Ursache einer Katastrophe kann natürlich oder von Menschen verursacht worden sein. Dazu gehören sowohl Ausfallzeiten von Google Cloud-Regionen als auch Ausfälle Ihrer eigenen Infrastruktur.
  • Die Notfallwiederherstellung (Disaster Recovery, DR) ist im Kontext von Cloud Composer ein Prozess, bei dem der Betrieb der Umgebung nach einem Notfall wiederhergestellt wird. Der Prozess umfasst die Neuerstellung der Umgebung, möglicherweise in einer anderen Region. Weitere Informationen zur Notfallwiederherstellung finden Sie im Leitfaden zur Planung der Notfallwiederherstellung.
  • Die primäre Umgebung ist eine Cloud Composer-Umgebung, für die Sie eine DR-Funktion aktivieren möchten.
  • Die Failover-Umgebung ist eine Cloud Composer-Umgebung, die dafür vorgesehen ist, Aktivitäten aus der primären Umgebung zu übernehmen.
  • Ein Warm-DR-Szenario ist eine Variante der Notfallwiederherstellung, bei der Sie eine Standby-Failover-Umgebung verwenden, die Sie vor einem Notfall erstellen.
  • Ein Kaltes DR-Szenario ist eine Variante der Notfallwiederherstellung, bei der Sie nach einem Notfall eine Failover-Umgebung erstellen.
  • Die regionenübergreifende Notfallwiederherstellung ist eine Variante der Notfallwiederherstellung mit warmen oder kalten Bedingungen, bei der sich die primäre und die Failover-Umgebung in verschiedenen Regionen befinden.

Informationen zum Notfallwiederherstellungsverfahren

Mit dem Notfallwiederherstellungsverfahren wird das Problem gelöst, wenn Ihre primäre Umgebung aufgrund eines Notfalls nicht funktionsfähig (defekt oder anderweitig nicht zugänglich) ist.

Bei diesem Verfahren wird davon ausgegangen, dass Ihre primäre Umgebung nicht direkt zur Behebung des Notfalls repariert wird. Stattdessen erstellen Sie nebeneinander eine zweite (Failover-)Umgebung. Diese Umgebung wird anstelle der primären Umgebung ausgeführt. Später können Sie sich dafür entscheiden, zur primären Umgebung zurückzukehren oder weiterhin die Failover-Umgebung zu verwenden.

Da das Verfahren eine Failover-Umgebung verwendet, werden Änderungen eingeführt, wenn Sie von der primären Umgebung wechseln. Zu den Änderungen zwischen der primären und der Failover-Umgebung gehören (die Liste ist nicht vollständig):

  • die andere Webserver-URL. Dadurch werden die Adresse der Airflow-UI und des Airflow-REST API-Endpunkt geändert.

  • Die Bucket-URL der Umgebung wird sich unterscheiden.

  • Die Konfiguration der Netzwerk- und Zugriffsberechtigungen muss möglicherweise angepasst werden.

Wenn Sie ein warmes DR-Szenario verwenden, kennen Sie die Werte für den Webserver, die Bucket-Adressen der Umgebung und die Netzwerkkonfiguration im Voraus.

Hinweise

  • Cloud Composer unterstützt geplante Snapshots in Version 2.0.32 und höher. Umgebungs-Snapshots werden in Version 2.0.9 und höher unterstützt.

Vorbereitungsübersicht

Beide DR-Szenarien umfassen die folgenden Vorbereitungsschritte:

  1. Failover-Umgebung erstellen

    • Beim Warm-DR-Szenario halten Sie diese Umgebung verfügbar.
    • Im kalten DR-Szenario erstellen Sie diese Umgebung nur, um das Verfahren zur Notfallwiederherstellung zu testen. Nachdem Sie die Vorbereitung abgeschlossen haben, löschen Sie diese Umgebung und erstellen sie nach einem Notfall neu.
  2. Bucket für Snapshots erstellen

    • Der Bucket muss in der DR-Region verfügbar sein. Für die regionsübergreifende Notfallwiederherstellung muss der Snapshot-Bucket entweder multiregional sein oder sich in einer anderen Region als die primäre Umgebung befinden.

    • Prüfen Sie, ob DAGs auf regionale Ressourcen zugreifen können.

  3. Datenbankwartung einrichten

  4. Geplante Snapshots einrichten

  5. Testen Sie Ihr Notfallwiederherstellungsverfahren.

Notfallwiederherstellung

Nach einem Notfall:

  1. (Nur kalte Notfallwiederherstellung) Erstellen Sie eine Failover-Umgebung.
  2. Beenden Sie nach Möglichkeit die Ausführung von DAGs in der primären Umgebung.
  3. Laden Sie einen Snapshot vom Snapshot-Bucket in die Failover-Umgebung.
  4. Passen Sie bei Bedarf die Konfiguration der Failover-Umgebung an.
  5. Entscheiden Sie, was mit der primären Umgebung geschehen soll.

Vorbereitungsschritte

Führen Sie die unten beschriebenen Schritte aus, um die Notfallwiederherstellung für Ihre Umgebung einzurichten.

Failover-Umgebung erstellen

Umgebung erstellen, die als Failover-Umgebung dient

Beachten Sie folgende Richtlinien:

  • Die primäre und die Failover-Umgebung müssen dieselbe Version von Cloud Composer und Airflow verwenden.

  • Achten Sie bei einem warmen DR-Szenario darauf, dass Sie beide Umgebungen synchron aktualisieren und aktualisieren. Wenn Sie beispielsweise die primäre Umgebung auf eine höhere Cloud Composer-Version upgraden oder PyPI-Pakete installieren, müssen diese Änderungen auch für Ihre Failover-Umgebung gelten.

  • Wir empfehlen, die Failover-Umgebung in einer anderen Region als der primären Umgebung zu erstellen. Dadurch kann eine Vielzahl möglicher Katastrophenszenarien abgedeckt werden, z. B. eine Katastrophe, die sich auf die Verfügbarkeit der gesamten Region auswirkt.

  • Wir empfehlen, mit Terraform eine primäre und Failover-Umgebung zu erstellen, damit beide eine konsistente Konfiguration haben. Achten Sie darauf, dass die Terraform-Definitionen sowohl für die primäre als auch für die Failover-Umgebung synchronisiert sind.

  • Die Konfiguration der Failover-Umgebung (z. B. Umgebungsgröße, Anzahl der Planer und IAM-Berechtigungen) wird so empfohlen, dass sie der Konfiguration der primären Umgebung entspricht. IAM-Berechtigungen für beide Umgebungen müssen den entsprechenden Zugriff auf Nutzer und Snapshots gewähren.

Ressourcenverfügbarkeit prüfen

DAGs können auf externen Ressourcen ausgeführt werden. Der Zugriff auf diese Ressourcen kann von der Konfiguration der Umgebung abhängen, z. B. von den Berechtigungen, die dem Dienstkonto, der Netzwerkkonfiguration oder dem Projekt der Umgebung gewährt wurden. Achten Sie darauf, dass diese Ressourcen für die Failover-Umgebung verfügbar sind.

Eine Umgebung kann mit einigen externen Ressourcen über in Airflow gespeicherte Verbindungen interagieren. Prüfen Sie, ob diese Ressourcen in der Failover-Umgebung im Vergleich zur primären Umgebung angepasst werden sollten.

Storage-Bucket für Snapshots erstellen

Erstellen Sie einen neuen Storage-Bucket für Umgebungs-Snapshots. Verwenden Sie keine Umgebungs-Buckets für die Notfallwiederherstellung, da die Konfiguration für die Aufbewahrungsrichtlinie und den Lebenszyklus auf Bucket-Ebene angewendet wird.

Achten Sie darauf, dass dieser Storage-Bucket IAM-Berechtigungen, eine Aufbewahrungsrichtlinie und eine Lebenszykluskonfiguration hat, die so festgelegt sind, dass ein versehentliches Löschen oder nicht autorisierter Zugriff verhindert wird. Weitere Informationen zum Konfigurieren eines Buckets für Snapshots finden Sie unter Geplante Snapshots konfigurieren.

Sie können:

  • Erstellen Sie einen Bucket in einer anderen Region.
  • Erstellen Sie einen multiregionalen Bucket.

Datenbankwartung einrichten

Halten Sie die Airflow-Metadatendatenbank klein, indem Sie den Datenbankwartungs-DAG ausführen. Dadurch können Snapshots schneller gespeichert und geladen werden. Die Airflow-Metadatendatenbank muss weniger als 20 GB an Daten enthalten, um Snapshots zu unterstützen.

Geplante Snapshots einrichten

Richten Sie geplante Snapshots für die primäre Umgebung ein.

Snapshots können nur in einer fehlerfreien Umgebung erstellt werden. Daher müssen Snapshots gespeichert werden, bevor der Notfall eintritt.

Weitere Informationen zur Funktionsweise von Snapshots finden Sie unter Umgebungs-Snapshots speichern und laden. Im Abschnitt Umgebungs-Snapshot speichern der Dokumentation erfahren Sie, wo Sie die gespeicherten Snapshots finden.

(Optional) Monitoring für geplante Snapshot-Vorgänge einrichten

Bei geplanten Snapshots mit einer Häufigkeit von mindestens einmal alle zwölf Stunden können Sie sich mit Cloud Monitoring benachrichtigen lassen, wenn ein Snapshot nicht automatisch erstellt wird.

Bei Zeitplänen mit geringerer Häufigkeit verwenden Sie die Google Cloud CLI, um die Ergebnisse von Snapshot-Vorgängen zu prüfen. Siehe Speichern von Snapshot-Vorgängen überprüfen.

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

    Zu Monitoring

  2. Wählen Sie im Navigationsbereich „Monitoring“ die Option Benachrichtigungen aus.
  3. Wenn Sie keine Benachrichtigungskanäle erstellt haben und Benachrichtigungen erhalten möchten, klicken Sie auf Benachrichtigungskanäle bearbeiten und fügen Sie Benachrichtigungskanäle hinzu. Kehren Sie nach dem Hinzufügen der Kanäle zur Seite Benachrichtigungen zurück.
  4. Klicken Sie auf der Seite Benachrichtigungen auf Richtlinie erstellen.
  5. Maximieren Sie zum Auswählen des Messwerts das Menü Messwert auswählen und gehen Sie dann so vor:
    1. Um das Menü auf relevante Einträge zu beschränken, geben Sie in die Filterleiste Composer Snapshot ein. Wenn nach dem Filtern des Menüs keine Ergebnisse angezeigt werden, deaktivieren Sie die Option Nur aktive Ressourcen und Messwerte anzeigen.
    2. Wählen Sie als Ressourcentyp die Option Cloud Composer-Umgebung aus.
    3. Wählen Sie unter Messwertkategorie die Option Umgebung aus.
    4. Wählen Sie als Messwert die Option Anzahl der Snapshot-Erstellung aus.
    5. Klicken Sie auf Apply (Anwenden).
  6. Klicken Sie auf Filter hinzufügen und fügen Sie über die Drop-down-Menüs die folgenden Filter hinzu:
    Filtern Vergleichsoperator Wert
    Ressourcenlabel > Umgebungsname = Der Name der Umgebung, in der Sie geplante Snapshots überwachen möchten.
    Label überwachen > Ergebnis = SUCCEEDED
  7. Legen Sie im Abschnitt Daten transformieren die folgenden Attribute fest:
    • Wählen Sie unter Rollierendes Zeitfenster das Monitoringfenster für diese Benachrichtigung aus. Dieser Wert wirkt sich auf die Konfiguration des Grenzwerts im nächsten Schritt aus.

      Empfohlener Wert für das geplante Snapshot-Monitoring: 1 Tag.

    • Wählen Sie für Funktion für rollierendes Fenster die Option Delta aus.
  8. Klicken Sie auf Weiter.
  9. Die Einstellungen auf der Seite Benachrichtigungstrigger konfigurieren bestimmen, wann die Benachrichtigung ausgelöst wird. Vervollständigen Sie diese Seite mit den Einstellungen aus der folgenden Tabelle.
    Feld Wert
    Condition type Threshold
    Alert trigger Any time series violates
    Threshold position Below threshold
    Threshold value Die Anzahl der geplanten Snapshots, die innerhalb des Zeitraums gespeichert werden, der als Rollierendes Fenster für die Benachrichtigung konfiguriert ist.

    Berechnen Sie diesen Wert mithilfe der folgenden Formel:

    (rolling window in hours / schedule frequency in hours) - 1

    Hinweis: Wenn Sie 1 Stunde in der Formel abziehen, werden abweichende Snapshot-Abschlusszeiten berücksichtigt. Dadurch wird verhindert, dass falsch positive Ergebnisse ausgegeben werden, wenn der neueste Snapshot während einer Monitoring-Prüfung noch ausgeführt wird.

    Beispiel:
    Wenn Sie das empfohlene rollierende Zeitfenster von 1 Tag verwenden und die Zeitplanhäufigkeit einmal alle 2 Stunden beträgt, legen Sie diesen Wert auf 11 fest (Berechnung: 24 / 2 - 1 = 11).

    Wenn Ihr Zeitplan korrekt ausgeführt wird, sollten Sie innerhalb eines 24-Stunden-Fensters mindestens 11 Snapshots haben. Andernfalls wurde ein Snapshot-Vorgang nicht erfolgreich abgeschlossen und Cloud Monitoring löst diese Benachrichtigung aus.

    Condition name Ihr benutzerdefinierter Name für die Bedingung.
  10. Klicken Sie auf Weiter.
  11. Optional: Klicken Sie auf Benachrichtigungskanäle, um Benachrichtigungen zu Ihrer Benachrichtigungsrichtlinie hinzuzufügen. Wählen Sie im Dialogfeld einen oder mehrere Benachrichtigungskanäle aus dem Menü aus und klicken Sie dann auf OK.
  12. Optional: Aktualisieren Sie die Dauer bis zur automatischen Schließung von Vorfällen. Dieses Feld bestimmt, wann Monitoring Vorfälle ohne Messwertdaten schließt.
  13. Optional: Klicken Sie auf Dokumentation und geben Sie alle Informationen ein, die in einer Benachrichtigung angezeigt werden sollen.
  14. Klicken Sie auf Name der Benachrichtigung und geben Sie einen Namen für die Benachrichtigungsrichtlinie ein.
  15. Klicken Sie auf Richtlinie erstellen.
Weitere Informationen finden Sie unter Benachrichtigungsrichtlinien.

Notfallwiederherstellung testen

Testen Sie die Notfallwiederherstellung nach der Einrichtung und danach regelmäßig. Auf diese Weise können Sie potenzielle Probleme angehen, die sich auf den eigentlichen Notfallwiederherstellungsprozess auswirken können.

Im kalten DR-Szenario können Sie die Failover-Umgebung löschen, nachdem Sie den Test der Notfallwiederherstellung abgeschlossen haben.

Snapshot-Speichervorgänge prüfen

Mit der Google Cloud CLI können Sie die Liste der Vorgänge zum Speichern von Snapshots abrufen und prüfen, ob Ihre Snapshots für Notfallwiederherstellungsszenarien bereit sind.

Diese Methode ist nützlich, wenn Sie Snapshots seltener als mindestens einmal alle 12 Stunden speichern. Wenn Sie regelmäßig gespeicherte Snapshots prüfen, sollten Sie Cloud Monitoring-Benachrichtigungen konfigurieren. Siehe Monitoring für geplante Snapshot-Vorgänge einrichten.

gcloud

Listen Sie alle Snapshot-Vorgänge für eine bestimmte Umgebung auf. Die vollständige Befehlsreferenz finden Sie unter gcloud composer operations list.

gcloud composer operations list \
    --locations LOCATION \
    --filter="metadata.operationType=SAVE_SNAPSHOT AND 
    metadata.resource=projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_ID"
    --format yaml

Ersetzen Sie:

  • LOCATIONS durch die Liste der Regionskennungen, in denen sich die Umgebung befindet
  • PROJECT_ID durch die ID des Projekts, in dem sich die Umgebung befindet.
  • ENVIRONMENT_ID durch die ID der Umgebung, in der Sie Snapshot-Vorgänge prüfen möchten

Beispiel:

gcloud composer operations list \
    --locations us-central1 \
    --filter="metadata.operationType=SAVE_SNAPSHOT AND 
    metadata.resource=projects/my-project/locations/us-central1/environments/my-environment"
    --format yaml

Nach einem Notfall

Führen Sie nach einem Notfall die unten beschriebenen Schritte aus, um Ihre primäre Umgebung wiederherzustellen.

(Nur kalte Notfallwiederherstellung) Failover-Umgebung erstellen

Folgen Sie der Anleitung im Abschnitt Failover-Umgebung erstellen.

Ausführung von DAGs in der primären Umgebung beenden

Beenden Sie nach Möglichkeit die Ausführung von DAGs in der primären Umgebung:

  • Wenn die primäre Umgebung noch zugänglich ist, pausieren Sie alle DAGs.
  • Wenn auf den Bucket der primären Umgebung zugegriffen werden kann, verschieben Sie alle DAGs aus dem Bucket der Umgebung oder in einen Ordner außerhalb von /dags im Bucket der primären Umgebung.

Snapshot in die Failover-Umgebung laden

Laden Sie einen Snapshot aus der primären Umgebung in die Failover-Umgebung.

Nachdem der Snapshot in die Failover-Umgebung geladen wurde, werden die Aufgaben so geplant und ausgeführt, als würde nach dem Erstellen eines Snapshots in der primären Umgebung nichts ausgeführt. Einige dieser Aufgaben wurden jedoch möglicherweise bereits von der primären Umgebung ausgeführt. Die Failover-Umgebung hat keine Möglichkeit zu erkennen, welche Aufgaben nach dem Erstellen des Snapshots und vor einem Notfall ausgeführt wurden. Daher werden einige Aufgaben möglicherweise zweimal ausgeführt (sowohl in der primären als auch in der Failover-Umgebung). Es wird empfohlen, dass alle Aufgaben idempotent sind und die geplanten Snapshots alle zwei Stunden erstellt werden.

(Falls erforderlich) Konfiguration der Failover-Umgebung anpassen

In einigen Fällen möchten Sie möglicherweise die Konfiguration der Failover-Umgebung ändern, nachdem Sie den Snapshot der primären Umgebung in die Umgebung geladen haben.

Bei einem kalten DR-Szenario müssen Sie beispielsweise möglicherweise einen anderen Satz von Airflow-Umgebungsvariablen in der Failover-Umgebung verwenden. Ein weiteres Beispiel: Bei einem warmen DR-Szenario müssen Sie Nutzern möglicherweise in der Airflow-UI Berechtigungen erteilen, damit sie auf die Failover-Umgebung zugreifen können.

Sie können diese Änderungen entweder manuell vornehmen oder ein Shell-Skript mit Befehlen vorbereiten, die die Konfiguration der Failover-Umgebung ändern. Dazu führen Sie gcloud composer environment update-Befehle aus.

Entscheiden Sie, was mit der primären Umgebung geschehen soll

Zu Notfällen kann es kommen, wenn die primäre Umgebung nicht erreichbar ist, aber noch funktioniert oder nicht ordnungsgemäß funktioniert. Beispielsweise können Sie aufgrund eines Infrastrukturfehlers nicht über das Netzwerk auf die primäre Umgebung zugreifen. Ein weiteres Beispiel: Die Umgebung arbeitet mit einigen Fehlern oder mit reduzierter Kapazität, aber einige DAGs werden weiterhin ausgeführt.

Wenn die ursprüngliche Umgebung noch ausgeführt wird, können Kosten entstehen, die direkt mit Cloud Composer oder anderen Diensten zusammenhängen, auf die über die DAGs zugegriffen wird, obwohl als Ersatz eine neue Umgebung erstellt wurde. Diese Umgebung kann weiterhin einige DAGs ausführen. Daher werden einige Vorgänge möglicherweise zweimal ausgeführt: in der primären Umgebung, die noch ausgeführt wird, und in der Failover-Umgebung nach dem Laden des Snapshots.

Wenn die primäre Umgebung vorhanden ist, aber nicht ordnungsgemäß funktioniert

Die primäre Umgebung kann gelöscht werden, wenn alle relevanten Daten wiederhergestellt wurden. Beispielsweise möchten Sie möglicherweise Daten wiederherstellen, die nicht in den Umgebungs-Snapshots enthalten sind, z. B. die Netzwerkkonfiguration oder Inhalte des Buckets der Umgebung außerhalb der Ordner /dags und /plugins.

Wenn die primäre Umgebung wieder zugänglich und fehlerfrei wird

Wenn die primäre Umgebung nur vorübergehend nicht zugänglich war und wieder erreichbar und fehlerfrei ist, können Sie einen Ansatz wählen:

  • Failover-Umgebung weiterhin verwenden
  • Kehren Sie zur primären Umgebung zurück.

So verwenden Sie die Failover-Umgebung weiterhin:

  1. Wenn die primäre Umgebung DAGs weiterhin ausführt, pausieren Sie sie so schnell wie möglich.
  2. Achten Sie darauf, dass alle relevanten Daten wiederhergestellt wurden, und löschen Sie dann die primäre Umgebung.
  3. Wiederholen Sie die Schritte zur Vorbereitung der Notfallwiederherstellung für die Failover-Umgebung, z. B. das Einrichten geplanter Snapshots.

So kehren Sie zur primären Umgebung zurück:

  1. Halten Sie alle DAGs in der Failover-Umgebung an.
  2. Warten Sie, bis alle DAG-Ausführungen in der Failover-Umgebung abgeschlossen sind, oder beenden Sie sie.
  3. Snapshot der Failover-Umgebung speichern
  4. Laden Sie diesen Snapshot in die primäre Umgebung.
  5. Heben Sie die Pausierung der DAGs in der primären Umgebung auf.
  6. Löschen Sie bei Bedarf die Failover-Umgebung.

Nächste Schritte