Especificar ventanas de mantenimiento

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 personalizadas para tu entorno, Cloud Composer realizará el mantenimiento durante las ventanas de mantenimiento predeterminadas.

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 tareas que tardan menos de 55 minutos en ejecutarse no suelen verse afectadas por las operaciones de mantenimiento, pero deben tener habilitados los reintentos para resistir los reinicios del programador. Es posible que Scheduler se reinicie durante las operaciones estándar de Cloud Composer, fuera de las ventanas de mantenimiento.

Cloud Composer informa a los trabajadores de Airflow de que va a realizarse una operación de mantenimiento. Un trabajador de Airflow termina las tareas que ya ha iniciado y no elige tareas nuevas. Estas nuevas tareas las ejecutan los trabajadores de Airflow que no se someten a operaciones de mantenimiento.

Si usas un entorno de alta disponibilidad, es probable que los componentes de Airflow de tu entorno se reinicien en momentos diferentes durante una operación de mantenimiento (esto depende del tipo de operación de mantenimiento). En general, el uso de un entorno de alta resiliencia 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 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 que tardan más de 55 minutos en ejecutarse 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

Las ventanas de mantenimiento predeterminadas de Cloud Composer 2 son 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:

  1. Define ventanas de mantenimiento para tus entornos de Cloud Composer.

  2. Programa ejecuciones de DAG fuera de las ventanas de mantenimiento especificadas mediante los parámetros start_date y schedule_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:

  1. En la Google Cloud consola, ve a la página Entornos.

    Ir a Entornos

  2. Selecciona tu entorno.

  3. Ve a la pestaña Configuración del entorno.

  4. Junto a la entrada Ventanas de mantenimiento, haz clic en Editar.

  5. En el cuadro de diálogo Ventanas de mantenimiento, marca la casilla Definir hora personalizada para las ventanas de mantenimiento.

  6. Define Hora de inicio, Zona horaria, Días y 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.

  7. 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

  1. Crea una solicitud de la API environments.patch.

  2. En esta solicitud:

    1. En el parámetro updateMask, especifique la máscara config.maintenanceWindow.

    2. 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.

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.

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"
    }
  }
}

Siguientes pasos