Spécifier des intervalles de maintenance

Cloud Composer 1 | Cloud Composer 2

Cette page explique comment définir des intervalles de maintenance pour vos environnements.

À propos des intervalles de maintenance

Un intervalle de maintenance correspond à une période pendant laquelle Cloud Composer effectue des opérations de maintenance. Par exemple, vous pouvez vous assurer que vos exécutions de tâches critiques ne sont pas interrompues en spécifiant des intervalles de maintenance en dehors des heures de planification du DAG.

Les intervalles de maintenance vous permettent de contrôler les périodes pendant lesquelles la maintenance peut avoir lieu pour votre environnement:

  • Si vous définissez des intervalles de maintenance personnalisés pour votre environnement, Cloud Composer effectue la maintenance pendant ces périodes.

  • Si vous ne définissez pas d'intervalles de maintenance pour votre environnement, Cloud Composer effectue des opérations de maintenance à tout moment.

Que se passe-t-il pendant les intervalles de maintenance ?

Lorsque vous spécifiez des intervalles de maintenance, vous devez fournir au moins 12 heures sur une semaine pour les opérations de maintenance:

  • Votre environnement reste disponible pendant les intervalles de maintenance. Certains composants de votre environnement peuvent devenir temporairement indisponibles lorsque des opérations de maintenance sont en cours.
  • Les 12 heures sont requises pour que Cloud Composer ait suffisamment de temps pour planifier et effectuer toutes les opérations de maintenance. Cela ne signifie pas que les opérations de maintenance durent 12 heures ou même qu'elles se produisent toutes les semaines.

Vous pouvez toujours exécuter vos DAG pendant les intervalles de maintenance, à condition qu'il soit acceptable que certaines tâches soient interrompues et relancées. Si vous exécutez des DAG pendant les intervalles de maintenance, veillez à activer les tentatives répétées. Vous pouvez définir de nouvelles tentatives au niveau de la configuration Airflow, du DAG ou de la tâche.

Les opérations de maintenance peuvent avoir les effets suivants sur votre environnement:

  • La modification de certains paramètres de votre environnement ou une mise à niveau vers une version plus récente peuvent ne pas être temporaires.

  • Les requêtes SQL directes vers la base de données Airflow peuvent prendre plus de temps que d'habitude et nécessiter un nouvel essai.

  • L'interface utilisateur d'Airflow peut être temporairement indisponible.

  • Certaines tâches Airflow peuvent être interrompues. Une fois l'opération de maintenance terminée, Airflow exécute de nouvelles tentatives pour ces tâches (s'il n'est pas configuré autrement).

Intervalles de maintenance par défaut

Par défaut, les environnements de maintenance Cloud Composer 1 ne disposent pas d'intervalles de maintenance définis si vous les créez depuis Cloud Console, l'API ou Terraform. Nous vous recommandons de spécifier des intervalles de maintenance pour vos environnements nouveaux et existants.

Si vous créez votre environnement à l'aide de la CLI gcloud, les fenêtres de maintenance par défaut sont comprises entre 00:00:00 et 04:00:00 (GMT) le dimanche, le vendredi et le samedi de chaque semaine.

Comment utiliser des intervalles de maintenance

Les opérations de maintenance peuvent avoir une incidence sur l'exécution des DAG et des tâches Airflow. Nous vous recommandons donc d'effectuer les opérations suivantes:

  1. Définissez des intervalles de maintenance pour vos environnements Cloud Composer.

  2. Programmez les exécutions de DAG en dehors des intervalles de maintenance spécifiés en utilisant les paramètres start_date et schedule_interval dans vos DAG.

Spécifier des intervalles de maintenance pour les nouveaux environnements

Vous pouvez spécifier des intervalles de maintenance lorsque vous créez un environnement. Pour en savoir plus, consultez la section Créer des environnements.

Spécifier des intervalles de maintenance pour les environnements existants

Console

Pour définir ou modifier des intervalles de maintenance pour un environnement existant, mettez à jour l'environnement :

  1. Dans Google Cloud Console, accédez à la page Environnements.

    Accéder à la page Environnements

  2. Sélectionnez votre environnement.

  3. Accédez à l'onglet Configuration de l'environnement.

  4. À côté de l'entrée Intervalles de maintenance, cliquez sur Modifier.

  5. Dans la boîte de dialogue Intervalles de maintenance, cochez la case Définir une heure personnalisée pour les intervalles de maintenance.

  6. Définissez l'heure de début, le fuseau horaire, les jours et la durée de manière à obtenir une planification équivalant au minimum à 12 heures sur une période glissante de sept jours. Par exemple, une périodicité de 4 heures tous les lundis, mercredis et vendredis fournit bien la durée requise.

  7. Cliquez sur Enregistrer et attendez la mise à jour de votre environnement.

gcloud

Lorsque vous mettez à jour un environnement, les arguments suivants définissent les paramètres des intervalles de maintenance :

  • --maintenance-window-start définit l'heure de début d'un intervalle de maintenance.
  • --maintenance-window-end définit l'heure de fin d'un intervalle de maintenance.
  • --maintenance-window-recurrence définit la récurrence de l'intervalle de maintenance.
gcloud beta composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --maintenance-window-start 'DATETIME_START' \
    --maintenance-window-end 'DATETIME_END' \
    --maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'

Remplacez :

  • ENVIRONMENT_NAME par le nom de l'environnement.
  • DATETIME_START par la date et l'heure de début au format "date/heure". Seule l'heure spécifiée est utilisée, la date est ignorée.
  • DATETIME_END par la date et l'heure de fin au format "date/heure". Seule l'heure spécifiée est utilisée, la date est ignorée. La date et l'heure spécifiées doivent être postérieures à la date de début.
  • MAINTENANCE_RECURRENCE par une expression RRULE RFC 5545 pour la récurrence des intervalles de maintenance. Cloud Composer est compatible avec deux formats :

  • Le format FREQ=DAILY indique une récurrence quotidienne.

  • Le format FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA indique une récurrence les jours sélectionnés de la semaine.

L'exemple suivant spécifie un intervalle de maintenance de six heures entre 01:00 et 07:00 (UTC) les dimanches, mercredis et samedis. La date du 1er janvier 2021 est ignorée.

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

API

  1. Rédigez une requête API environments.patch.

  2. Dans cette requête :

    1. Dans le paramètre updateMask, spécifiez le masque config.maintenanceWindow.

    2. Dans le corps de la requête, spécifiez les paramètres pour les intervalles de maintenance.

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

Remplacez :

  • DATETIME_START par la date et l'heure de début au format "date/heure". Seule l'heure spécifiée est utilisée, la date est ignorée.
  • DATETIME_END par la date et l'heure de fin au format "date/heure". Seule l'heure spécifiée est utilisée, la date est ignorée. La date et l'heure spécifiées doivent être postérieures à la date de début.
  • MAINTENANCE_RECURRENCE par une expression RRULE RFC 5545 pour la récurrence des intervalles de maintenance. Cloud Composer est compatible avec deux formats :

    • Le format FREQ=DAILY indique une récurrence quotidienne.
    • Le format FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA indique une récurrence les jours sélectionnés de la semaine.

L'exemple suivant spécifie un intervalle de maintenance de six heures entre 01:00 et 07:00 (UTC) les dimanches, mercredis et samedis. La date du 1er janvier 2021 est ignorée.

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

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

Terraform

Le bloc maintenance_window spécifie les intervalles de maintenance pour votre environnement:

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"
    }
  }
}

Remplacez :

  • ENVIRONMENT_NAME par le nom de l'environnement.
  • LOCATION par la région où se trouve l'environnement.
  • DATETIME_START par la date et l'heure de début au format "date/heure". Seule l'heure spécifiée est utilisée, la date est ignorée.
  • DATETIME_END par la date et l'heure de fin au format "date/heure". Seule l'heure spécifiée est utilisée, la date est ignorée. La date et l'heure spécifiées doivent être postérieures à la date de début.
  • MAINTENANCE_RECURRENCE par une expression RRULE RFC 5545 pour la récurrence des intervalles de maintenance. Cloud Composer est compatible avec deux formats :

    • Le format FREQ=DAILY indique une récurrence quotidienne.
    • Le format FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA indique une récurrence les jours sélectionnés de la semaine.

L'exemple suivant spécifie un intervalle de maintenance de six heures entre 01:00 et 07:00 (UTC) les dimanches, mercredis et samedis. La date du 1er janvier 2021 est ignorée.

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

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

Étapes suivantes