Especificar janelas de manutenção

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

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

Sobre janelas de manutenção

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

Com as janelas de manutenção, você tem controle sobre os períodos em que a manutenção pode ocorrer no seu ambiente:

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

  • Se você não definir janelas de manutenção personalizadas para seu ambiente, o Cloud Composer fará a manutenção durante as janelas padrão.

Como as janelas de manutenção funcionam

As janelas de manutenção funcionam da seguinte maneira:

  • As operações de manutenção exigem pelo menos 12 horas alocadas em uma única semana.

  • Você pode usar vários períodos, mas cada um precisa durar pelo menos 4 horas.

  • O ambiente permanece disponível durante as janelas de manutenção. Alguns componentes do seu 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 realizar todas as operações de manutenção. Isso não significa que as operações de manutenção levam 12 horas completas ou acontecem todas as semanas.

Você ainda pode executar seus DAGs durante as janelas de manutenção, desde que seja aceitável que algumas tarefas sejam interrompidas e repetidas. Se você executar DAGs durante janelas de manutenção, ative as novas tentativas de tarefa. É possível configurar novas tentativas de tarefas no nível da configuração do Airflow, do DAG ou da tarefa.

As tarefas que levam menos de 55 minutos para serem executadas geralmente não são afetadas por operações de manutenção, mas ainda precisam ter novas tentativas ativadas para resistir a reinicializações do programador. O programador pode ser reiniciado durante as operações padrão do Cloud Composer, fora das janelas de manutenção.

O Cloud Composer informa aos workers do Airflow que uma operação de manutenção está prestes a acontecer. Um worker do Airflow conclui as tarefas já iniciadas e não escolhe novas. Essas novas tarefas são executadas por workers do Airflow que não passam por operações de manutenção.

Se você usar um ambiente altamente resiliente, os componentes do Airflow no ambiente provavelmente serão reiniciados em momentos diferentes durante uma operação de manutenção (isso depende do tipo de operação de manutenção). No geral, usar um ambiente altamente resiliente reduz o tempo de inatividade do ambiente durante as operações de manutenção.

As operações de manutenção têm os seguintes efeitos no seu ambiente:

  • A interface do Airflow pode estar temporariamente indisponível.

  • Mudar alguns parâmetros do ambiente ou fazer upgrade para uma versão mais recente pode não ser possível temporariamente.

  • Consultas SQL diretas ao banco de dados do Airflow podem levar mais tempo do que o normal e exigir novas tentativas.

  • Algumas tarefas do Airflow que levam mais de 55 minutos para serem executadas podem ser interrompidas. Depois que a operação de manutenção for concluída, o Airflow vai programar novas tentativas para essas tarefas, a menos que esteja configurado de outra forma.

Janelas de manutenção padrão

As janelas de manutenção padrão no Cloud Composer 2 são de 00:00:00 a 04:00:00 (GMT) às sextas, sábados e domingos de todas as semanas.

Manutenção fora das janelas de manutenção

O Cloud Composer pode realizar a manutenção fora das janelas de manutenção configuradas nos seguintes casos:

  • Em situações de emergência, por exemplo, ao corrigir uma vulnerabilidade crítica de segurança, algumas operações de manutenção podem ser realizadas fora das janelas de manutenção regulares.

  • Se o Cloud Composer não puder realizar operações de manutenção regulares durante as janelas de manutenção por 30 dias, ele vai realizar operações de manutenção críticas fora das janelas especificadas. Esse é um mecanismo de substituição para casos em que as janelas de manutenção estão mal configuradas e o Cloud Composer não consegue realizar a manutenção de um ambiente repetidamente.

Como usar janelas de manutenção

As operações de manutenção podem afetar a execução dos DAGs e das tarefas do Airflow. Por isso, 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 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 01:00 e 07:00 (UTC) às quartas, sábados e domingos. A data de 1º de janeiro de 2023 é 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 01:00 e 07:00 (UTC) às quartas, sábados e domingos. A data de 1º de janeiro de 2023 é 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 seu 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 01:00 e 07:00 (UTC) às quartas, sábados e domingos. A data de 1º de janeiro de 2023 é 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