Wartungsfenster angeben

Cloud Composer 1 Cloud Composer 2

Auf dieser Seite wird erläutert, wie Sie Wartungsfenster für Ihre Umgebungen definieren.

Wartungsfenster

Ein Wartungsfenster ist ein Zeitraum, in dem Sie Cloud Composer erlauben, Wartungsvorgänge auszuführen. Sie können beispielsweise dafür sorgen, dass die Ausführung kritischer Aufgaben nicht unterbrochen wird, indem Sie Wartungsfenster außerhalb der DAG-Zeitplanzeiten angeben.

Mit Wartungsfenstern haben Sie die Kontrolle über die Zeiträume, in denen Wartungsarbeiten für Ihre Umgebung erfolgen können:

  • Wenn Sie benutzerdefinierte Wartungsfenster für Ihre Umgebung definieren, führt Cloud Composer während dieser definierten Zeiträume Wartungen aus.

  • Wenn Sie keine benutzerdefinierten Wartungsfenster für Ihre Umgebung definieren, führt Cloud Composer während der Standardwartungsfenster Wartungsarbeiten durch.

Was passiert in Wartungsfenstern?

Wenn Sie Wartungsfenster angeben, stellen Sie in einer Woche mindestens 12 Stunden für Wartungsvorgänge bereit:

  • Ihre Umgebung bleibt während Wartungsfenstern verfügbar. Einige Komponenten Ihrer Umgebung sind während Wartungsvorgängen möglicherweise vorübergehend nicht verfügbar.
  • Diese 12 Stunden sind erforderlich, damit Cloud Composer genügend Zeit hat, alle Wartungsvorgänge zu planen und auszuführen. Das bedeutet nicht, dass Wartungsarbeiten volle 12 Stunden in Anspruch nehmen oder sogar wöchentlich stattfinden.

Sie können Ihre DAGs dennoch während Wartungsfenstern ausführen, solange es akzeptabel ist, dass einige Aufgaben unterbrochen und wiederholt werden können. Wenn Sie DAGs während Wartungsfenstern ausführen, müssen Sie das Wiederholen von Aufgaben aktivieren. Sie können Aufgabenwiederholungen auf Airflow-Konfigurations-, DAG- oder Aufgabenebene konfigurieren.

In Cloud Composer 2 werden Aufgaben, deren Ausführung weniger als 55 Minuten dauert, im Allgemeinen nicht von Wartungsvorgängen beeinträchtigt. Es müssen jedoch Wiederholungsversuche aktiviert sein, damit Planerneustarts standhalten können. Der Planer wird möglicherweise bei standardmäßigen Composer-Vorgängen und außerhalb von Wartungsfenstern neu gestartet.

Cloud Composer informiert Airflow-Worker darüber, dass ein Wartungsvorgang bevorsteht. Ein Airflow-Worker beendet bereits gestartete Aufgaben und wählt keine neuen Aufgaben aus. Diese neuen Aufgaben werden von Airflow-Workern ausgeführt, die keinen Wartungsvorgängen unterzogen werden.

Wenn Sie eine äußerst stabile Umgebung verwenden, werden Airflow-Komponenten Ihrer Umgebung während eines Wartungsvorgangs wahrscheinlich zu unterschiedlichen Zeiten neu gestartet. Dies hängt von der Art des Wartungsvorgangs ab. Insgesamt reduziert die Verwendung einer extrem robusten Umgebung die Ausfallzeiten Ihrer Umgebung bei Wartungsarbeiten.

Wartungsvorgänge können die folgenden Auswirkungen auf Ihre Umgebung haben:

  • Das Ändern einiger Parameter Ihrer Umgebung oder ein Upgrade auf eine neuere Version ist möglicherweise vorübergehend nicht möglich.

  • Direkte SQL-Abfragen an die Airflow-Datenbank können länger als gewöhnlich dauern und Wiederholungsversuche erfordern.

  • Die Airflow-UI ist möglicherweise vorübergehend nicht verfügbar

  • Einige Airflow-Tasks, deren Ausführung länger als 55 Minuten dauert, können unterbrochen werden. Nach Abschluss der Wartung plant Airflow Wiederholungsversuche für diese Aufgaben (falls nicht anders konfiguriert).

Standardwartungsfenster

Standardmäßig liegen Wartungsfenster immer freitags, samstags und sonntags zwischen 00:00:00 und 04:00:00 Uhr (GMT).

Wartungsfenster einsetzen

Wartungsvorgänge können sich auf die Ausführung Ihrer DAGs und Airflow-Aufgaben auswirken. Daher empfehlen wir Folgendes:

  1. Definieren Sie Wartungsfenster für Ihre Cloud Composer-Umgebungen.

  2. Planen Sie DAG-Ausführungen für außerhalb der angegebenen Wartungsfenster indem Sie die Parametern start_date und schedule_interval in Ihren DAGs verwenden.

Wartungsfenster für neue Umgebungen angeben

Sie können Wartungsfenster beim Erstellen einer Umgebung angeben. Weitere Informationen finden Sie unter Umgebungen erstellen.

Wartungsfenster für vorhandene Umgebungen angeben

Console

Wenn Sie Wartungsfenster für eine vorhandene Umgebung definieren oder ändern möchten, aktualisieren Sie die Umgebung:

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

    Zur Seite Umgebungen“

  2. Wählen Sie Ihre Umgebung aus.

  3. Rufen Sie den Tab Umgebungskonfiguration auf.

  4. Klicken Sie neben dem Eintrag Wartungsfenster auf Bearbeiten.

  5. Klicken Sie im Kästchen Wartungsfenster das Kästchen Benutzerdefinierte Zeit für Wartungsfenster festlegen an.

  6. Legen Sie Startzeit, Zeitzone, Tage und Länge fest, sodass die kombinierte Zeit für den angegebenen Zeitplan beträgt mindestens 12 Stunden in einem 7-tägigen rollierenden Zeitfenster. Zum Beispiel bietet ein Zeitraum von vier Stunden jeden Montag, Mittwoch und Freitag die erforderliche Zeitmenge.

  7. Klicken Sie auf Speichern und warten Sie, bis die Umgebung aktualisiert wurde.

gcloud

Beim Aktualisieren einer Umgebung definieren die folgenden Argumente Wartungsfensterparameter:

  • --maintenance-window-start legt den Beginn eines Wartungsfensters fest.
  • --maintenance-window-end legt das Ende eines Wartungsfensters fest.
  • Mit --maintenance-window-recurrence wird die Wiederholung des Wartungsfensters festgelegt.
gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --maintenance-window-start 'DATETIME_START' \
    --maintenance-window-end 'DATETIME_END' \
    --maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'

Ersetzen Sie:

  • ENVIRONMENT_NAME durch den Namen der Umgebung.
  • DATETIME_START durch das Startdatum und die Uhrzeit im Eingabeformat Datum/Uhrzeit. Es wird nur die angegebene Uhrzeit verwendet. Das angegebene Datum wird ignoriert.
  • DATETIME_END durch das Enddatum und die Uhrzeit im Eingabeformat Datum/Uhrzeit. Es wird nur die angegebene Uhrzeit verwendet. Das angegebene Datum wird ignoriert. Das angegebene Datum und die angegebene Uhrzeit müssen nach dem Startdatum liegen.
  • MAINTENANCE_RECURRENCE mit einer RFC 5545 RRULE für Wiederholungsversuche von Wartungsfenstern. Cloud Composer unterstützt zwei Formate:

  • Das Format FREQ=DAILY gibt eine tägliche Wiederholung an.

  • Das Format FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA gibt eine Wiederholung an ausgewählten Wochentagen an.

Im folgenden Beispiel wird ein sechsstündiges Wartungsfenster zwischen 01:00 und 07:00 Uhr (UTC) mittwochs, samstags und sonntags angegeben. Das Datum 1. Januar 2023 wird ignoriert.

gcloud composer environments update example-environment \
  --location us-central1 \
  --maintenance-window-start '2023-01-01T01:00:00Z' \
  --maintenance-window-end '2023-01-01T07:00:00Z' \
  --maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=SU,WE,SA'

API

  1. Erstellen Sie eine API-Anfrage environments.patch.

  2. In dieser Anfrage:

    1. Geben Sie im updateMask-Parameter die config.maintenanceWindow-Maske an.

    2. Geben Sie im Anfragetext die Parameter für Wartungsfenster an.

{
  "config": {
    "maintenanceWindow": {
      "startTime": "DATETIME_START",
      "endTime": "DATETIME_END",
      "recurrence": "MAINTENANCE_RECURRENCE"
    }
  }
}

Ersetzen Sie:

  • DATETIME_START durch das Startdatum und die Uhrzeit im Eingabeformat Datum/Uhrzeit. Es wird nur die angegebene Uhrzeit verwendet. Das angegebene Datum wird ignoriert.
  • DATETIME_END durch das Enddatum und die Uhrzeit im Eingabeformat Datum/Uhrzeit. Es wird nur die angegebene Uhrzeit verwendet. Das angegebene Datum wird ignoriert. Das angegebene Datum und die angegebene Uhrzeit müssen nach dem Startdatum liegen.
  • MAINTENANCE_RECURRENCE mit einer RFC 5545 RRULE für Wiederholungsversuche von Wartungsfenstern. Cloud Composer unterstützt zwei Formate:

    • Das Format FREQ=DAILY gibt eine tägliche Wiederholung an.
    • Das Format FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA gibt eine Wiederholung an ausgewählten Wochentagen an.

Im folgenden Beispiel wird ein sechsstündiges Wartungsfenster zwischen 01:00 und 07:00 Uhr (UTC) mittwochs, samstags und sonntags angegeben. Das Datum 1. Januar 2023 wird ignoriert.

  // PATCH https://composer.googleapis.com/v1/projects/example-project/
  // locations/us-central1/environments/example-environment?updateMask=
  // config.maintenanceWindow

  {
    "config": {
      "maintenanceWindow": {
        "startTime": "2023-01-01T01:00:00Z",
        "endTime": "2023-01-01T07:00:00Z",
        "recurrence": "FREQ=WEEKLY;BYDAY=SU,WE,SA"
      }
    }
  }

Terraform

Der Block maintenance_window gibt die Wartungsfenster für Ihre Umgebung an:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    maintenance_window {
      start_time = "DATETIME_START"
      end_time = "DATETIME_END"
      recurrence = "MAINTENANCE_RECURRENCE"
    }
  }
}

Ersetzen Sie:

  • ENVIRONMENT_NAME durch den Namen der Umgebung.
  • LOCATION durch die Region, in der sich die Umgebung befindet.
  • DATETIME_START durch das Startdatum und die Uhrzeit im Eingabeformat Datum/Uhrzeit. Es wird nur die angegebene Uhrzeit verwendet. Das angegebene Datum wird ignoriert.
  • DATETIME_END durch das Enddatum und die Uhrzeit im Eingabeformat Datum/Uhrzeit. Es wird nur die angegebene Uhrzeit verwendet. Das angegebene Datum wird ignoriert. Das angegebene Datum und die angegebene Uhrzeit müssen nach dem Startdatum liegen.
  • MAINTENANCE_RECURRENCE mit einer RFC 5545 RRULE für Wiederholungsversuche von Wartungsfenstern. Cloud Composer unterstützt zwei Formate:

    • Das Format FREQ=DAILY gibt eine tägliche Wiederholung an.
    • Das Format FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA gibt eine Wiederholung an ausgewählten Wochentagen an.

Im folgenden Beispiel wird ein sechsstündiges Wartungsfenster zwischen 01:00 und 07:00 Uhr (UTC) mittwochs, samstags und sonntags angegeben. Das Datum 1. Januar 2023 wird ignoriert.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    maintenance_window {
      start_time = "2023-01-01T01:00:00Z"
      end_time = "2023-01-01T07:00:00Z"
      recurrence = "FREQ=WEEKLY;BYDAY=SU,WE,SA"
    }
  }
}

Nächste Schritte