Especificar janelas de manutenção

Cloud Composer 1 | Cloud Composer 2

Nesta página, você aprenderá como definir janelas de manutenção para seus ambientes.

Sobre as janelas de manutenção

Uma janela de manutenção é um período em que você permite que o Cloud Composer execute operações de manutenção. Por exemplo, para garantir que as execuções de tarefas críticas não sejam interrompidas, especifique janelas de manutenção fora dos horários de programação do DAG.

Com as janelas de manutenção, você controla os períodos em que a manutenção pode acontecer no ambiente:

  • Se você definir janelas de manutenção personalizadas para o ambiente, o Cloud Composer realizará a manutenção durante esses períodos definidos.

  • Se você não definir janelas de manutenção para o ambiente, o Cloud Composer realizará a manutenção a qualquer momento.

O que acontece durante as janelas de manutenção

Ao especificar janelas de manutenção, você fornece pelo menos 12 horas em uma única semana para operações de manutenção:

  • Seu ambiente permanece disponível durante as janelas de manutenção. Alguns componentes do ambiente podem ficar temporariamente indisponíveis durante as operações de manutenção.
  • As 12 horas são necessárias para que o Cloud Composer tenha tempo suficiente para programar e executar todas as operações de manutenção. Isso não significa que as operações de manutenção levem 12 horas completas ou até mesmo aconteçam todas as semanas.

Ainda é possível executar os DAGs durante as janelas de manutenção, desde que seja aceitável que algumas tarefas possam ser interrompidas e repetidas. Se você executar DAGs durante as janelas de manutenção, ative as novas tentativas da tarefa. É possível definir novas tentativas de tarefas no nível da configuração, do DAG ou da tarefa do Airflow.

As operações de manutenção podem ter os seguintes efeitos no ambiente:

  • Talvez não seja possível alterar alguns parâmetros do seu ambiente ou fazer upgrade para uma versão mais recente temporariamente.

  • As consultas SQL diretas ao banco de dados do Airflow podem demorar mais do que o normal e exigir uma nova tentativa.

  • A interface do Airflow pode estar temporariamente indisponível

  • Algumas tarefas do Airflow podem ser interrompidas. Após a conclusão da operação de manutenção, o Airflow programa novas tentativas para essas tarefas (se elas não forem configuradas de outra forma).

Janelas de manutenção padrão

Por padrão, os ambientes do Cloud Composer 1 não têm janelas de manutenção definidas se você os cria no console do Google Cloud, na API ou no Terraform. Recomendamos especificar janelas de manutenção para os ambientes novos e atuais.

Se você criar o ambiente usando a CLI gcloud, ele terá janelas de manutenção padrão das 00:00:00 às 04:00:00 (GMT) às sextas, sábados e domingos, todas as semanas.

Como usar janelas de manutenção

Como as operações de manutenção podem afetar a execução dos DAGs e das tarefas do Airflow, recomendamos que você faça o seguinte:

  1. Defina janelas de manutenção para seus ambientes do Cloud Composer.

  2. Programe a execução do DAG fora das janelas de manutenção especificadas usando os parâmetros start_date e schedule_interval nos DAGs.

Especificar janelas de manutenção para novos ambientes

É possível especificar janelas de manutenção ao criar um ambiente. Para mais informações, consulte Criar ambientes.

Especificar janelas de manutenção para ambientes atuais

Console

Para definir ou alterar janelas de manutenção de um ambiente atual, atualize o ambiente:

  1. No console do Google Cloud, acesse a página Ambientes.

    Acessar "Ambientes"

  2. Selecione o ambiente.

  3. Acesse a guia Configuração do ambiente.

  4. Ao lado da entrada Janelas de manutenção, clique em Editar.

  5. Na caixa de diálogo Janelas de manutenção, marque a caixa de seleção Definir horários personalizados para janelas de manutenção.

  6. Defina o Horário de início, o Fuso horário, os Dias e a Duração para que o horário combinado para a programação especificada seja de pelo menos 12 horas em uma janela de 7 dias. Por exemplo, um período de quatro horas toda segunda, quarta e sexta-feira fornece o tempo necessário.

  7. Clique em Salvar e aguarde até que o ambiente seja atualizado.

gcloud

Quando você atualiza um ambiente, os seguintes argumentos definem os parâmetros das janelas de manutenção:

  • --maintenance-window-start define o horário de início de uma janela de manutenção.
  • --maintenance-window-end define o horário de término de uma janela de manutenção.
  • --maintenance-window-recurrence define a recorrência da janela de manutenção.
gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --maintenance-window-start 'DATETIME_START' \
    --maintenance-window-end 'DATETIME_END' \
    --maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'

Substitua:

  • ENVIRONMENT_NAME pelo nome do ambiente;
  • DATETIME_START pela data e hora de início no formato de entrada de data/hora. Somente a hora especificada do dia é usada, a data especificada é ignorada.
  • DATETIME_END pela data e hora de término no formato de entrada de data/hora. Somente a hora especificada do dia é usada, a data especificada é ignorada. A data e a hora especificadas precisam ser posteriores à data de início.
  • MAINTENANCE_RECURRENCE por um RFC 5545 RRULE para a recorrência de janelas de manutenção. O Cloud Composer é compatível com dois formatos:

  • O formato FREQ=DAILY especifica uma recorrência diária.

  • O formato FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA especifica uma recorrência nos dias da semana selecionados.

O exemplo a seguir especifica uma janela de manutenção de seis horas entre 1h e 7h (UTC) às quartas-feiras, sábados e domingos. A data de 1o de janeiro de 2023 será ignorada.

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. Crie uma solicitação de API environments.patch.

  2. Nesta solicitação:

    1. No parâmetro updateMask, especifique a máscara config.maintenanceWindow.

    2. No corpo da solicitação, especifique os parâmetros das janelas de manutenção.

{
  "config": {
    "maintenanceWindow": {
      "startTime": "DATETIME_START",
      "endTime": "DATETIME_END",
      "recurrence": "MAINTENANCE_RECURRENCE"
    }
  }
}

Substitua:

  • DATETIME_START pela data e hora de início no formato de entrada de data/hora. Somente a hora especificada do dia é usada, a data especificada é ignorada.
  • DATETIME_END pela data e hora de término no formato de entrada de data/hora. Somente a hora especificada do dia é usada, a data especificada é ignorada. A data e hora especificadas precisam ser posteriores à data de início.
  • MAINTENANCE_RECURRENCE por um RFC 5545 RRULE para a recorrência de janelas de manutenção. O Cloud Composer é compatível com dois formatos:

    • O formato FREQ=DAILY especifica uma recorrência diária.
    • O formato FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA especifica uma recorrência nos dias da semana selecionados.

O exemplo a seguir especifica uma janela de manutenção de seis horas entre 1h e 7h (UTC) às quartas-feiras, sábados e domingos. A data de 1o de janeiro de 2023 será ignorada.

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

O bloco maintenance_window especifica as janelas de manutenção do ambiente:

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

Substitua:

  • ENVIRONMENT_NAME pelo nome do ambiente
  • LOCATION pela região em que o ambiente está localizado;
  • DATETIME_START pela data e hora de início no formato de entrada de data/hora. Somente a hora especificada do dia é usada, a data especificada é ignorada.
  • DATETIME_END pela data e hora de término no formato de entrada de data/hora. Somente a hora especificada do dia é usada, a data especificada é ignorada. A data e hora especificadas precisam ser posteriores à data de início.
  • MAINTENANCE_RECURRENCE por um RFC 5545 RRULE para a recorrência de janelas de manutenção. O Cloud Composer é compatível com dois formatos:

    • O formato FREQ=DAILY especifica uma recorrência diária.
    • O formato FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA especifica uma recorrência nos dias da semana selecionados.

O exemplo a seguir especifica uma janela de manutenção de seis horas entre 1h e 7h (UTC) às quartas-feiras, sábados e domingos. A data de 1o de janeiro de 2023 será ignorada.

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

A seguir