Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
En esta página, se explica cómo definir los períodos de mantenimiento de tus entornos.
Información acerca de los períodos de mantenimiento
Un período de mantenimiento es un período en el que 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 de programación del DAG.
Con los períodos de mantenimiento, puedes controlar los períodos en los que el mantenimiento de tu entorno puede ocurrir:
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 personalizados para tu entorno, Cloud Composer realiza el mantenimiento durante la configuración períodos de mantenimiento.
Qué sucede durante los períodos de mantenimiento
Cuando especificas períodos de mantenimiento, proporcionas al menos 12 horas en una sola semana para las operaciones de mantenimiento:
El entorno permanece disponible durante los períodos de mantenimiento. Algunos componentes de tu entorno pueden dejar de estar disponibles de forma temporal cuando se agregan las operaciones están en curso.
Se requieren las 12 horas para que Cloud Composer tenga tiempo suficiente programar y realizar todas las operaciones de mantenimiento. Esto no significa que las operaciones de mantenimiento tardan 12 horas o incluso ocurren todas las semanas.
Puedes seguir ejecutando tus DAG durante los períodos de mantenimiento, siempre que es aceptable que algunas tareas se puedan interrumpir y reintentar. Si ejecutas DAG durante los períodos de mantenimiento, asegúrate de habilitar los reintentos de tareas. Puedes configurar reintentos de tareas a nivel de configuración de Airflow, DAG o tarea.
Las tareas que tardan menos de 55 minutos en ejecutarse son generalmente no se ven afectadas por las operaciones de mantenimiento, pero aún deben tener reintentos habilitados para resistir los reinicios del programador. Es posible que el programador se reinicie durante las operaciones estándar de Cloud Composer, fuera de los períodos de mantenimiento.
Cloud Composer informa a los trabajadores de Airflow que una operación de mantenimiento está por suceder. Un trabajador de Airflow finaliza las tareas que ya se iniciaron y no elige tareas nuevas. Trabajadores de Airflow que no tienen la capacidad de ejecutar estas tareas se someten a operaciones de mantenimiento.
Si usas un entorno muy resiliente, es probable que los componentes de Airflow de tu entorno se reinicien en diferentes tiempos durante una operación de mantenimiento (esto depende del tipo de o una operación de mantenimiento). En general, usar un entorno altamente resiliente reduce el tiempo de inactividad de tu entorno durante las operaciones de mantenimiento.
Las operaciones de mantenimiento tienen los siguientes efectos en el entorno:
Es posible que la IU de Airflow no esté disponible temporalmente.
Cambia algunos parámetros de tu entorno o actualiza a una versión posterior. puede que no sea posible temporalmente.
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 que tardan más de 55 minutos en ejecutarse se pueden interrumpir. 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 Cloud Composer 2 son de De 00:00:00 a 04:00:00 (GMT) los viernes, sábados y domingos cada semana
Cómo usar los períodos de mantenimiento
Las operaciones de mantenimiento pueden afectar la ejecución de tus DAG y Airflow tareas, por lo que te recomendamos que hagas 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 mediante los parámetros
start_date
yschedule_interval
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 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-start
establece la hora de inicio de un período de mantenimiento.--maintenance-window-end
establece la hora de finalización de un período de mantenimiento.--maintenance-window-recurrence
establece 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_NAME
por el nombre del entorno.DATETIME_START
por 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_END
por 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_RECURRENCE
por una RRULE RFC 5545 para la recurrencia de los períodos de mantenimiento. Cloud Composer admite dos formatos:El formato
FREQ=DAILY
especifica una recurrencia diaria.El formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
especifica 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_START
por 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_END
por 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_RECURRENCE
por una RRULE RFC 5545 para la recurrencia de los períodos de mantenimiento. Cloud Composer admite dos formatos:- El formato
FREQ=DAILY
especifica una recurrencia diaria. - El formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
especifica 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 la 1:00 y 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_NAME
por el nombre del entorno.LOCATION
por la región en la que se encuentra el entorno.DATETIME_START
por 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_END
por 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_RECURRENCE
por una RRULE RFC 5545 para la recurrencia de los períodos de mantenimiento. Cloud Composer admite dos formatos:- El formato
FREQ=DAILY
especifica una recurrencia diaria. - El formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
especifica 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 la 1:00 y 07:00 (UTC) los miércoles, sábados y domingos El 1 de enero de 2023 se ignora la fecha.
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"
}
}
}