Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
En esta página se explica cómo definir ventanas de mantenimiento para tus entornos.
Acerca de las ventanas de mantenimiento
Una ventana de mantenimiento es un periodo 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 ventanas de mantenimiento fuera de los horarios de programación de los DAG.
Con las ventanas de mantenimiento, puedes controlar los periodos en los que se puede llevar a cabo el mantenimiento de tu entorno:
Si defines ventanas de mantenimiento personalizadas para tu entorno, Cloud Composer realizará el mantenimiento durante los periodos definidos.
Si no defines ventanas de mantenimiento para tu entorno, Cloud Composer realizará el mantenimiento en cualquier momento.
Cómo funcionan las ventanas de mantenimiento
Las ventanas de mantenimiento funcionan de la siguiente manera:
Las operaciones de mantenimiento requieren al menos 12 horas asignadas en una sola semana.
Puedes usar varias franjas horarias, pero cada una debe durar al menos 4 horas.
Tu entorno seguirá estando disponible durante las ventanas de mantenimiento. Es posible que algunos componentes de tu entorno no estén disponibles temporalmente mientras se realizan operaciones de mantenimiento.
Se necesitan 12 horas 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 o que se realicen todas las semanas.
Puedes seguir ejecutando tus DAGs durante las ventanas de mantenimiento, siempre que aceptes que algunas tareas se puedan interrumpir y volver a intentar. Si ejecutas DAGs durante las ventanas de mantenimiento, asegúrate de habilitar los reintentos de tareas. Puedes configurar los reintentos de tareas en la configuración de Airflow, en el DAG o en la tarea.
Las operaciones de mantenimiento tienen los siguientes efectos en tu entorno:
Es posible que la interfaz de usuario 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 temporalmente.
Las consultas SQL directas a la base de datos de Airflow pueden tardar más de lo habitual y es posible que tengas que volver a intentarlo.
Algunas tareas de Airflow se pueden interrumpir. Una vez que se haya completado la operación de mantenimiento, Airflow programará reintentos para estas tareas (si no se ha configurado de otra forma).
Ventanas de mantenimiento predeterminadas
De forma predeterminada, los entornos de Cloud Composer 1 no tienen definidas ventanas de mantenimiento si los creas con la Google Cloud consola, la API o Terraform. Te recomendamos que especifiques ventanas de mantenimiento para tus entornos nuevos y actuales.
Si creas tu entorno con la CLI de gcloud, tendrá ventanas de mantenimiento predeterminadas de 00:00:00 a 04:00:00 (GMT) los viernes, sábados y domingos de cada semana.
Mantenimiento fuera de las ventanas de mantenimiento
Cloud Composer puede realizar tareas de mantenimiento fuera de las ventanas de mantenimiento configuradas en los siguientes casos:
En situaciones de emergencia, por ejemplo, cuando se corrige una vulnerabilidad de seguridad crítica, es posible que se realicen algunas operaciones de mantenimiento fuera de las ventanas de mantenimiento habituales.
Si Cloud Composer no ha podido realizar operaciones de mantenimiento periódicas durante las ventanas de mantenimiento durante 30 días, realizará operaciones de mantenimiento críticas fuera de las ventanas de mantenimiento especificadas. Este es un mecanismo de respaldo para los casos en los que las ventanas de mantenimiento estén mal configuradas y Cloud Composer no pueda realizar el mantenimiento de un entorno repetidamente.
Cómo usar las ventanas de mantenimiento
Las operaciones de mantenimiento pueden afectar a la ejecución de tus DAGs y tareas de Airflow, por lo que te recomendamos que hagas lo siguiente:
Define ventanas de mantenimiento para tus entornos de Cloud Composer.
Programa ejecuciones de DAG fuera de las ventanas de mantenimiento especificadas mediante los parámetros
start_date
yschedule_interval
en tus DAGs.
Especificar ventanas de mantenimiento para entornos nuevos
Puedes especificar ventanas de mantenimiento al crear un entorno. Para obtener más información, consulta Crear entornos.
Especificar ventanas de mantenimiento para entornos
Consola
Para definir o cambiar las ventanas de mantenimiento de un entorno, 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 Ventanas de mantenimiento, haz clic en Editar.
En el cuadro de diálogo Ventanas de mantenimiento, marca la casilla Definir hora personalizada para las ventanas de mantenimiento.
Define la hora de inicio, la zona horaria, los días y la duración para que el tiempo combinado de la programación especificada sea de al menos 12 horas en un periodo de 7 días. Por ejemplo, un periodo de 4 horas todos los lunes, miércoles y viernes proporciona la cantidad de tiempo necesaria.
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 las ventanas de mantenimiento:
--maintenance-window-start
define la hora de inicio de una ventana de mantenimiento.--maintenance-window-end
define la hora de finalización de una ventana de mantenimiento.--maintenance-window-recurrence
define la periodicidad de la ventana 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'
Sustituye:
ENVIRONMENT_NAME
con el nombre del entorno.DATETIME_START
con la fecha y la hora de inicio en el formato de entrada de fecha y hora. Solo se usa la hora del día especificada, la fecha se ignora.DATETIME_END
con la fecha y la hora de finalización en el formato de entrada de fecha y hora. Solo se usa la hora del día especificada, la fecha se ignora. La fecha y la hora especificadas deben ser posteriores a la fecha de inicio.MAINTENANCE_RECURRENCE
con una RRULE RFC 5545 para la periodicidad de las ventanas de mantenimiento. Cloud Composer admite dos formatos:El formato
FREQ=DAILY
especifica una repetición diaria.El formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
especifica una repetición en los días de la semana seleccionados.
En el siguiente ejemplo se especifica un periodo de mantenimiento de 6 horas entre las 01:00 y las 07:00 (UTC) los miércoles, sábados y domingos. La fecha del 1 de enero del 2023 se ignora.
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
Crea una solicitud de la API
environments.patch
.En esta solicitud:
En el parámetro
updateMask
, especifique la máscaraconfig.maintenanceWindow
.En el cuerpo de la solicitud, especifica los parámetros de las ventanas de mantenimiento.
{
"config": {
"maintenanceWindow": {
"startTime": "DATETIME_START",
"endTime": "DATETIME_END",
"recurrence": "MAINTENANCE_RECURRENCE"
}
}
}
Sustituye:
DATETIME_START
con la fecha y la hora de inicio en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, la fecha especificada se ignora.DATETIME_END
con la fecha y la hora de finalización en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, la fecha especificada se ignora. La fecha y la hora especificadas deben ser posteriores a la fecha de inicio.MAINTENANCE_RECURRENCE
con una RRULE RFC 5545 para la periodicidad de las ventanas de mantenimiento. Cloud Composer admite dos formatos:- El formato
FREQ=DAILY
especifica una repetición diaria. - El formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
especifica una repetición en los días de la semana seleccionados.
- El formato
En el siguiente ejemplo se especifica una ventana de mantenimiento de 6 horas entre las 01:00 y las 07:00 (UTC) los miércoles, sábados y domingos. La fecha del 1 de enero del 2023 se ignora.
// 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 las ventanas 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"
}
}
}
Sustituye:
ENVIRONMENT_NAME
con el nombre del entorno.LOCATION
con la región en la que se encuentra el entorno.DATETIME_START
con la fecha y la hora de inicio en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, la fecha especificada se ignora.DATETIME_END
con la fecha y la hora de finalización en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, la fecha especificada se ignora. La fecha y la hora especificadas deben ser posteriores a la fecha de inicio.MAINTENANCE_RECURRENCE
con una RRULE RFC 5545 para la periodicidad de las ventanas de mantenimiento. Cloud Composer admite dos formatos:- El formato
FREQ=DAILY
especifica una repetición diaria. - El formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
especifica una repetición en los días de la semana seleccionados.
- El formato
En el siguiente ejemplo se especifica un periodo de mantenimiento de 6 horas entre las 01:00 y las 07:00 (UTC) los miércoles, sábados y domingos. La fecha del 1 de enero del 2023 se ignora.
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"
}
}
}