Managed Airflow (3ª gen.) | Managed Airflow (2ª gen.) | Managed Airflow (1ª gen. heredada)
En esta página, se explica cómo definir los períodos de mantenimiento de tus entornos.
Acerca de los períodos de mantenimiento
Un período de mantenimiento es un período durante el cual permites que Managed Airflow realice operaciones de mantenimiento. Por ejemplo, puedes asegurarte de que las ejecuciones de tareas críticas no se interrumpan si especificas períodos de mantenimiento fuera de los horarios del programa de DAG.
Con los períodos de mantenimiento, tienes control sobre los períodos en los que se puede realizar el mantenimiento de tu entorno:
Si defines períodos de mantenimiento personalizados para tu entorno, Managed Airflow realiza el mantenimiento durante estos períodos definidos.
Si no defines períodos de mantenimiento personalizados para tu entorno, Managed Airflow realiza el mantenimiento durante los períodos de mantenimiento predeterminados.
Cómo funcionan los períodos de mantenimiento
Los períodos de mantenimiento funcionan de la siguiente manera:
Las operaciones de mantenimiento requieren al menos 12 horas asignadas en una sola semana.
Puedes usar varios intervalos de tiempo, pero la duración de cada intervalo debe ser de al menos 4 horas.
El entorno permanece disponible durante los períodos de mantenimiento. Es posible que algunos componentes de tu entorno no estén disponibles temporalmente cuando las operaciones de mantenimiento estén en curso.
Se requieren las 12 horas para que Managed Airflow tenga suficiente tiempo para programar y realizar todas las operaciones de mantenimiento. Esto no significa que las operaciones de mantenimiento tarden 12 horas completas ni que se realicen todas las semanas.
Aun así, puedes ejecutar tus DAG durante los períodos de mantenimiento, siempre que sea aceptable que algunas tareas se interrumpan y se vuelvan a intentar. Si ejecutas DAG durante los períodos de mantenimiento, asegúrate de habilitar los reintentos de tareas. Puedes configurar los reintentos de tareas en la configuración de Airflow, el DAG o el nivel de la tarea.
Por lo general, las tareas que tardan menos de 55 minutos en ejecutarse no se ven afectadas por las operaciones de mantenimiento, pero deben tener habilitados los reintentos para resistir los reinicios del programador. Es posible que el programador se reinicie durante las operaciones estándar de Managed Airflow, fuera de los períodos de mantenimiento.
Managed Airflow informa a los trabajadores de Airflow que está a punto de ocurrir una operación de mantenimiento. Un trabajador de Airflow finaliza las tareas que ya se iniciaron y no elige tareas nuevas. Los trabajadores de Airflow que no se someten a operaciones de mantenimiento ejecutan estas tareas nuevas.
Si usas un entorno altamente resistente, es probable que los componentes de Airflow de tu entorno se reinicien en diferentes momentos durante una operación de mantenimiento (esto depende del tipo de operación de mantenimiento). En general, usar un entorno altamente resistente reduce el tiempo de inactividad de tu entorno durante las operaciones de mantenimiento.
Las operaciones de mantenimiento tienen los siguientes efectos en tu entorno:
Es posible que la IU de Airflow no esté disponible temporalmente.
Es posible que no se puedan cambiar algunos parámetros de tu entorno ni actualizar a una versión posterior de forma temporal.
Es posible que las consultas directas de SQL a la base de datos de Airflow tarden más de lo habitual y requieran reintentos.
Se pueden interrumpir algunas tareas de Airflow que tardan más de 55 minutos en ejecutarse. Una vez que se completa la operación de mantenimiento, Airflow programa reintentos para estas tareas (si no se configura de otra manera).
Períodos de mantenimiento predeterminados
Los períodos de mantenimiento predeterminados en Managed Airflow (2ª gen.) son de 00:00:00 a 04:00:00 (GMT) los viernes, sábados y domingos de cada semana.
Mantenimiento fuera de los períodos de mantenimiento
Es posible que Managed Airflow realice el mantenimiento fuera de los períodos de mantenimiento configurados en los siguientes casos:
En situaciones de emergencia, por ejemplo, cuando se corrige una vulnerabilidad de seguridad crítica, es posible que algunas operaciones de mantenimiento se realicen fuera de los períodos de mantenimiento habituales.
Si Managed Airflow no pudo realizar operaciones de mantenimiento habituales durante los períodos de mantenimiento durante 30 días, realiza operaciones de mantenimiento críticas fuera de los períodos de mantenimiento especificados. Este es un mecanismo de resguardo para los casos en que los períodos de mantenimiento están mal configurados y Managed Airflow no puede realizar el mantenimiento de un entorno de forma repetida.
Cómo usar los períodos de mantenimiento
Las operaciones de mantenimiento pueden afectar la ejecución de tus DAG y las tareas de Airflow, por lo que te recomendamos hacer lo siguiente:
Define períodos de mantenimiento para tus entornos de Managed Airflow.
Programa ejecuciones de DAG por fuera de los períodos de mantenimiento especificados mediante
start_dateyscheduleparámetros en los DAG.
Especifica períodos de mantenimiento para entornos nuevos
Puedes especificar períodos de mantenimiento cuando creas un entorno. Para obtener más información, consulta Crea entornos.
Especifica períodos de mantenimiento para entornos existentes
Console
Para definir o cambiar los períodos de mantenimiento de un entorno existente, actualiza el entorno:
En la Google Cloud consola, ve a la página Entornos.
Selecciona tu entorno.
Ve a la pestaña Configuración del entorno.
Junto a la entrada Períodos de mantenimiento, haz clic en Editar.
En el cuadro de diálogo Períodos de mantenimiento, selecciona la casilla de verificación Configurar tiempo personalizado para el período de mantenimiento.
Establece la Hora de inicio, la Zona horaria, los Días y la Duración, para que la hora combinada del programa especificado sea de al menos 12 horas en un período progresivo de 7 días. Por ejemplo, un período de 4 horas todos los lunes, miércoles y viernes proporciona la cantidad de tiempo requerida.
Haz clic en Guardar y espera a que se actualice tu entorno.
gcloud
Cuando actualizas un entorno, los siguientes argumentos definen los parámetros de períodos de mantenimiento:
--maintenance-window-startestablece la hora de inicio de un período de mantenimiento.--maintenance-window-endestablece la hora de finalización de un período de mantenimiento.--maintenance-window-recurrenceestablece la recurrencia del período de mantenimiento.
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--maintenance-window-start 'DATETIME_START' \
--maintenance-window-end 'DATETIME_END' \
--maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'
Reemplaza lo siguiente:
ENVIRONMENT_NAMEpor el nombre del entorno.DATETIME_STARTpor la fecha y hora de inicio en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, se ignora la fecha especificada.DATETIME_ENDpor la fecha y hora de finalización en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, se ignora la fecha especificada. La fecha y hora especificadas deben ser posteriores a la fecha de inicio.MAINTENANCE_RECURRENCEpor una RRULE RFC 5545 para la recurrencia de los períodos de mantenimiento. Managed Airflow admite dos formatos:El formato
FREQ=DAILYespecifica una recurrencia diaria.El formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAespecifica una recurrencia en los días de la semana seleccionados.
En el siguiente ejemplo, se especifica un período de mantenimiento de 6 horas entre las 1:00 y las 07:00 (UTC) los miércoles, sábados y domingos. Se ignora la fecha del 1 de enero de 2023.
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
Realiza una solicitud a la API de
environments.patch.En esta solicitud, realiza lo siguiente:
En el parámetro
updateMask, especifica la máscaraconfig.maintenanceWindow.En el cuerpo de la solicitud, especifica los parámetros de los períodos de mantenimiento.
{
"config": {
"maintenanceWindow": {
"startTime": "DATETIME_START",
"endTime": "DATETIME_END",
"recurrence": "MAINTENANCE_RECURRENCE"
}
}
}
Reemplaza lo siguiente:
DATETIME_STARTcon la fecha y hora de inicio en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, se ignora la fecha especificada.DATETIME_ENDpor la fecha y hora de finalización en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, se ignora la fecha especificada. La fecha y hora especificadas deben ser posteriores a la fecha de inicio.MAINTENANCE_RECURRENCEpor una RRULE RFC 5545 para la recurrencia de los períodos de mantenimiento. Managed Airflow admite dos formatos:- El formato
FREQ=DAILYespecifica una recurrencia diaria. - El formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAespecifica una recurrencia en los días de la semana seleccionados.
- El formato
En el siguiente ejemplo, se especifica un período de mantenimiento de 6 horas entre las 1:00 y las 07:00 (UTC) los miércoles, sábados y domingos. Se ignora la fecha del 1 de enero de 2023.
// 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
El bloque maintenance_window especifica los períodos de mantenimiento de tu entorno:
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"
}
}
}
Reemplaza lo siguiente:
ENVIRONMENT_NAMEpor el nombre del entorno.LOCATIONpor la región en la que se encuentra el entorno.DATETIME_STARTcon la fecha y hora de inicio en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, se ignora la fecha especificada.DATETIME_ENDpor la fecha y hora de finalización en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, se ignora la fecha especificada. La fecha y hora especificadas deben ser posteriores a la fecha de inicio.MAINTENANCE_RECURRENCEpor una RRULE RFC 5545 para la recurrencia de los períodos de mantenimiento. Managed Airflow admite dos formatos:- El formato
FREQ=DAILYespecifica una recurrencia diaria. - El formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAespecifica una recurrencia en los días de la semana seleccionados.
- El formato
En el siguiente ejemplo, se especifica un período de mantenimiento de 6 horas entre las 1:00 y las 07:00 (UTC) los miércoles, sábados y domingos. Se ignora la fecha del 1 de enero de 2023.
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"
}
}
}