Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
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 Cloud Composer realice operaciones de mantenimiento. Por ejemplo, puedes asegurarte de que las ejecuciones de tareas críticas no se interrumpan especificando períodos de mantenimiento fuera de los horarios programados del 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, Cloud Composer realizará el mantenimiento durante estos períodos definidos.
Si no defines períodos de mantenimiento para tu entorno, Cloud Composer realizará el mantenimiento en cualquier momento.
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 uno 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 mientras se realizan las operaciones de mantenimiento.
Las 12 horas son necesarias para que Cloud Composer tenga tiempo suficiente para programar y realizar todas las operaciones de mantenimiento. Esto no significa que las operaciones de mantenimiento duren 12 horas completas ni que se realicen todas las semanas.
Aun así, puedes ejecutar tus DAG durante los períodos de mantenimiento, siempre y cuando 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 reintentos de tareas en la configuración de Airflow, el DAG o el nivel de la tarea.
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 puedas cambiar algunos parámetros de tu entorno o actualizar a una versión posterior de forma temporal.
Las consultas de SQL directas a la base de datos de Airflow pueden tardar más de lo habitual y es posible que debas volver a intentarlo.
Algunas tareas de Airflow se pueden interrumpir. Una vez que se completa la operación de mantenimiento, Airflow programa reintentos para estas tareas (a menos que se configure lo contrario).
Períodos de mantenimiento predeterminados
De forma predeterminada, los entornos de Cloud Composer 1 no tienen ventanas de mantenimiento definidas si los creas con la Google Cloud consola, la API o Terraform. Te recomendamos que especifiques períodos de mantenimiento para tus entornos nuevos y existentes.
Si creas tu entorno con gcloud CLI, este tendrá períodos de mantenimiento predeterminados 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
En los siguientes casos, Cloud Composer puede realizar tareas de mantenimiento fuera de los períodos de mantenimiento configurados:
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 Cloud Composer no pudo realizar operaciones de mantenimiento regulares durante los períodos de mantenimiento durante 30 días, realizará 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 Cloud Composer 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 los períodos de mantenimiento para tus entornos de Cloud Composer.
Programa ejecuciones de DAG por fuera de los períodos de mantenimiento especificados con los parámetros
start_dateyscheduleen tus 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 consola de Google Cloud , 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. Cloud Composer 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 7: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_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. Cloud Composer 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 7: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_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. Cloud Composer 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 7: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"
}
}
}