Airflow géré (3e génération) | Airflow géré (2e génération) | Airflow géré (1re génération, version héritée)
Cette page explique comment définir des intervalles de maintenance pour vos environnements.
À propos des intervalles de maintenance
Un intervalle de maintenance est une période pendant laquelle vous autorisez Managed Airflow à effectuer des opérations de maintenance. Par exemple, vous pouvez vous assurer que l'exécution de vos tâches critiques n'est pas interrompue en spécifiant des intervalles de maintenance en dehors des heures de planification des 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, Managed Airflow effectue la maintenance pendant ces périodes.
Si vous ne définissez pas d'intervalles de maintenance pour votre environnement, Managed Airflow effectue la maintenance à tout moment.
Fonctionnement des intervalles de maintenance
Les intervalles de maintenance fonctionnent de la manière suivante :
Les opérations de maintenance nécessitent au moins 12 heures allouées sur une seule semaine.
Vous pouvez utiliser plusieurs plages horaires, mais chacune doit durer au moins quatre heures.
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 nécessaires pour que Managed Airflow dispose de 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 complètes ni qu'elles ont lieu 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 réessayées. Si vous exécutez des DAG pendant les intervalles de maintenance, assurez-vous d'activer les nouvelles tentatives de tâches. Vous pouvez configurer les nouvelles tentatives de tâches au niveau de la configuration Airflow, du DAG ou de la tâche.
Les opérations de maintenance ont les effets suivants sur votre environnement :
L'interface utilisateur d'Airflow peut être temporairement indisponible.
Il peut être temporairement impossible de modifier certains paramètres de votre environnement ou de passer à une version ultérieure.
Les requêtes SQL directes adressées à la base de données Airflow peuvent prendre plus de temps que d'habitude et nécessiter de nouvelles tentatives.
Certaines tâches Airflow peuvent être interrompues. Une fois l'opération de maintenance terminée, Airflow planifie de nouvelles tentatives pour ces tâches (sauf configuration contraire).
Intervalles de maintenance par défaut
Par défaut, les environnements Managed Airflow (1re génération, version héritée) ne comportent pas d'intervalles de maintenance définis si vous les créez à l'aide de la console, de l'API ou de Terraform. Google Cloud 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 gcloud CLI, il comporte des intervalles de maintenance par défaut compris entre 00:00:00 et 04:00:00 (GMT) le vendredi, le samedi et le dimanche de chaque semaine.
Maintenance en dehors des intervalles de maintenance
Airflow géré peut effectuer une maintenance en dehors des intervalles de maintenance configurés dans les cas suivants :
Dans les situations d'urgence, par exemple lors de la correction d'une faille de sécurité critique, certaines opérations de maintenance peuvent être effectuées en dehors des intervalles de maintenance réguliers.
Si Airflow géré n'a pas pu effectuer d'opérations de maintenance régulières pendant les intervalles de maintenance pendant 30 jours, il effectue des opérations de maintenance critiques en dehors des intervalles de maintenance spécifiés. Il s'agit d'un mécanisme de secours pour les cas où les intervalles de maintenance sont mal configurés et où Managed Airflow ne peut pas effectuer de maintenance sur un environnement de manière répétée.
Comment utiliser des intervalles de maintenance
Les opérations de maintenance peuvent avoir un impact sur l'exécution de vos DAG et des tâches Airflow. Nous vous recommandons donc de procéder comme suit :
Définissez des intervalles de maintenance pour vos environnements Airflow géré.
Programmez les exécutions de DAG en dehors des intervalles de maintenance spécifiés en utilisant
start_dateetscheduleparamètres dans vos DAGs.
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 page 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 :
Dans la Google Cloud console, accédez à la page Environnements.
Sélectionnez votre environnement.
Accédez à l'onglet Configuration de l'environnement.
À côté de l'entrée Intervalles de maintenance, cliquez sur Modifier.
Dans la boîte de dialogue Intervalles de maintenance, cochez la case Définir une heure personnalisée pour les intervalles de maintenance.
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.
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-startdéfinit l'heure de début d'un intervalle de maintenance.--maintenance-window-enddéfinit l'heure de fin d'un intervalle de maintenance.--maintenance-window-recurrencedéfinit la récurrence de l'intervalle de maintenance.
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--maintenance-window-start 'DATETIME_START' \
--maintenance-window-end 'DATETIME_END' \
--maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'
Remplacez :
ENVIRONMENT_NAMEpar le nom de l'environnement.DATETIME_STARTpar 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_ENDpar 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_RECURRENCEpar une expression RRULE RFC 5545 pour la récurrence des intervalles de maintenance. Managed Airflow est compatible avec deux formats :Le format
FREQ=DAILYindique une récurrence quotidienne.Le format
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAindique 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 mercredis, samedis et dimanches. La date du 1er janvier 2023 est ignorée.
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
Rédigez une requête API
environments.patch.Dans cette requête :
Dans le paramètre
updateMask, spécifiez le masqueconfig.maintenanceWindow.Dans le corps de la requête, spécifiez les paramètres des intervalles de maintenance.
{
"config": {
"maintenanceWindow": {
"startTime": "DATETIME_START",
"endTime": "DATETIME_END",
"recurrence": "MAINTENANCE_RECURRENCE"
}
}
}
Remplacez :
DATETIME_STARTpar 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_ENDpar 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_RECURRENCEpar une expression RRULE RFC 5545 pour la récurrence des intervalles de maintenance. Managed Airflow est compatible avec deux formats :- Le format
FREQ=DAILYindique une récurrence quotidienne. - Le format
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAindique une récurrence les jours sélectionnés de la semaine.
- Le format
L'exemple suivant spécifie un intervalle de maintenance de six heures entre 01:00 et 07:00 (UTC) les mercredis, samedis et dimanches. La date du 1er janvier 2023 est ignorée.
// 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
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_NAMEpar le nom de l'environnement.LOCATIONpar la région dans laquelle se trouve l'environnement.DATETIME_STARTpar 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_ENDpar 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_RECURRENCEpar une expression RRULE RFC 5545 pour la récurrence des intervalles de maintenance. Managed Airflow est compatible avec deux formats :- Le format
FREQ=DAILYindique une récurrence quotidienne. - Le format
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAindique une récurrence les jours sélectionnés de la semaine.
- Le format
L'exemple suivant spécifie un intervalle de maintenance de six heures entre 01:00 et 07:00 (UTC) les mercredis, samedis et dimanches. La date du 1er janvier 2023 est ignorée.
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"
}
}
}