Especificar los períodos de mantenimiento

Cloud Composer 1 | Cloud Composer 2

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 en el que permites que Cloud Composer realice operaciones de mantenimiento. Por ejemplo, para asegurarte de que las ejecuciones de tareas críticas no se interrumpan, especifica períodos de mantenimiento fuera de los tiempos de programación del DAG.

Con los períodos de mantenimiento, tienes control sobre los períodos en los que el mantenimiento puede ocurrir en 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 el entorno, Cloud Composer realizará el mantenimiento en cualquier momento.

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:

  • Tu entorno permanecerá disponible durante los períodos de mantenimiento. Algunos componentes del entorno pueden dejar de estar disponibles de forma temporal cuando las operaciones de mantenimiento están en curso.
  • 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 toman 12 horas completas o incluso ocurren todas las semanas.

Podrás ejecutar tus DAG durante los períodos de mantenimiento, siempre y cuando sea aceptable que algunas tareas se puedan interrumpir y volver 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 a nivel de la tarea, la configuración de DAG o el DAG.

Las operaciones de mantenimiento pueden tener los siguientes efectos en tu entorno:

  • Es posible que algunos parámetros del entorno no sean posibles de forma temporal.
  • Es posible que la conectividad a la base de datos de Airflow se interrumpa temporalmente.

  • Algunas tareas de Airflow pueden interrumpirse. Una vez que se completa la operación de mantenimiento, Airflow programa los reintentos para estas tareas (si no se configuran de otra manera).

Períodos de mantenimiento predeterminados

De forma predeterminada, los entornos de Cloud Composer 1 no tienen períodos de mantenimiento definidos si los creas desde Cloud Console, la API o Terraform. Recomendamos especificar los períodos de mantenimiento para los entornos nuevos y existentes.

Si creas tu entorno con la CLI de gcloud, tu entorno tiene períodos de mantenimiento predeterminados de 00:00:00 a 04:00:00 (GMT) los domingos, viernes y sábados.

Cómo usar los períodos de mantenimiento

Las operaciones de mantenimiento pueden afectar la ejecución de tus tareas de DAG y Airflow, por lo que te recomendamos que hagas lo siguiente:

  1. Define los períodos de mantenimiento para tus entornos de Cloud Composer.

  2. Programa ejecuciones de DAG por fuera de los períodos de mantenimiento especificados mediante los parámetros start_date y schedule_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 Cómo crear 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:

  1. En Google Cloud Console, 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 Períodos de mantenimiento, haz clic en Editar.

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

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

  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 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 beta 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 domingos, miércoles y sábados. Se ignora la fecha del 1 de enero de 2021.

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --maintenance-window-start '2021-01-01T01:00:00Z' \
  --maintenance-window-end '2021-01-01T07:00:00Z' \
  --maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=SU,WE,SA'

API

  1. Realiza una solicitud a la API de environments.patch.

  2. En esta solicitud, realiza lo siguiente:

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

    2. En el cuerpo de la solicitud, especifica los parámetros para 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.

En el siguiente ejemplo, se especifica un período de mantenimiento de 6 horas entre las 1:00 y las 07:00 (UTC) los domingos, miércoles y sábados. Se ignora la fecha del 1 de enero de 2021.

  // PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
  // locations/us-central1/environments/example-environment?updateMask=
  // config.maintenanceWindow

  {
    "config": {
      "maintenanceWindow": {
        "startTime": "2021-01-01T01:00:00Z",
        "endTime": "2021-01-01T07:00:00Z",
        "recurrence": "FREQ=WEEKLY;BYDAY=SU,WE,SA"
      }
    }
  }

Terraform

El bloque maintenance_window especifica los períodos de mantenimiento para 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 donde 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.

En el siguiente ejemplo, se especifica un período de mantenimiento de 6 horas entre las 1:00 y las 07:00 (UTC) los domingos, miércoles y sábados. Se ignora la fecha del 1 de enero de 2021.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    maintenance_window {
      start_time = "2021-01-01T01:00:00Z"
      end_time = "2021-01-01T07:00:00Z"
      recurrence = "FREQ=WEEKLY;BYDAY=SU,WE,SA"
    }
  }
}

¿Qué sigue?