Especifique períodos de manutenção

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Esta página explica como definir janelas de manutenção para os seus ambientes.

Acerca dos períodos de manutenção

Um período de manutenção é um período durante o qual permite que o Cloud Composer realize operações de manutenção. Por exemplo, pode certificar-se de que as execuções de tarefas críticas não são interrompidas especificando janelas de manutenção fora dos horários da programação do DAG.

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

  • Se definir períodos de manutenção personalizados para o seu ambiente, o Cloud Composer realiza a manutenção durante estes períodos definidos.

  • Se não definir períodos de manutenção personalizados para o seu ambiente ou especificar um valor vazio, o Cloud Composer realiza a manutenção durante os períodos de manutenção predefinidos.

Como funcionam os períodos de manutenção

Os períodos de manutenção funcionam da seguinte forma:

  • As operações de manutenção requerem, pelo menos, 12 horas num período de uma semana.

  • Pode usar vários horários, mas a duração de cada horário tem de ser de, pelo menos, 4 horas.

  • O seu ambiente permanece disponível durante os períodos de manutenção. Alguns componentes do seu ambiente podem ficar temporariamente indisponíveis quando as operações de manutenção estão em curso.

  • As 12 horas são necessárias para que o Cloud Composer tenha tempo suficiente para agendar e realizar todas as operações de manutenção. Isto não significa que as operações de manutenção demorem 12 horas completas ou que ocorram todas as semanas.

Pode continuar a executar os seus DAGs durante os períodos de manutenção, desde que seja aceitável que algumas tarefas possam ser interrompidas e repetidas. Se executar DAGs durante períodos de manutenção, certifique-se de que ativa as novas tentativas de tarefas. Pode configurar as repetições de tarefas na configuração do Airflow, no DAG ou ao nível da tarefa.

Geralmente, as tarefas que demoram menos de 24 horas a executar não são afetadas pelas operações de manutenção, mas continuam a precisar de ter as repetições ativadas para resistir aos reinícios do programador. O Scheduler pode ser reiniciado durante as operações padrão do Cloud Composer, fora dos períodos de manutenção.

O Cloud Composer informa os trabalhadores do Airflow de que vai ocorrer uma operação de manutenção. Um trabalhador do Airflow termina as tarefas já iniciadas e não seleciona novas tarefas. Estas novas tarefas são executadas por trabalhadores do Airflow que não são submetidos a operações de manutenção.

Se usar um ambiente altamente resiliente, é provável que os componentes do Airflow do seu ambiente sejam reiniciados em momentos diferentes durante uma operação de manutenção (isto depende do tipo de operação de manutenção). Em geral, a utilização de um ambiente altamente resiliente reduz o tempo de inatividade do seu ambiente durante as operações de manutenção.

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

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

  • O Cloud Composer pode realizar uma operação de atualização automática da infraestrutura se estiverem disponíveis atualizações.

  • A alteração de alguns parâmetros do seu ambiente pode não ser possível temporariamente.

  • Algumas tarefas do Airflow que demoram mais de 24 horas a executar podem ser interrompidas. Após a conclusão da operação de manutenção, o Airflow agenda novas tentativas para estas tarefas (se não estiver configurado de outra forma).

Períodos de manutenção predefinidos

As janelas de manutenção predefinidas no Cloud Composer 3 são definidas da seguinte forma:

  • Todas as horas estão no fuso horário local da região onde o seu ambiente está localizado, mas o horário de verão é ignorado.
  • Às terças, quartas, quintas e sextas-feiras, as janelas de manutenção são das 00:00:00 às 02:00:00.
  • Aos sábados, domingos e segundas-feiras, as janelas de manutenção são das 00:00:00 às 04:00:00.

Manutenção fora dos períodos de manutenção

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

  • Em situações de emergência, por exemplo, quando corrige uma vulnerabilidade de segurança crítica, algumas operações de manutenção podem ser realizadas fora dos períodos de manutenção normais.

  • Se o Cloud Composer não conseguir realizar operações de manutenção normais durante os períodos de manutenção durante 30 dias, realiza operações de manutenção críticas fora dos períodos de manutenção especificados. Este é um mecanismo de alternativa para os casos em que as janelas de manutenção estão configuradas incorretamente e o Cloud Composer não consegue realizar repetidamente a manutenção num ambiente.

Como usar os períodos de manutenção

As operações de manutenção podem afetar a execução dos seus DAGs e tarefas do Airflow, pelo que recomendamos que faça o seguinte:

  1. Defina períodos de manutenção para os seus ambientes do Cloud Composer.

  2. Agende execuções de DAGs fora dos períodos de manutenção especificados usando os parâmetros start_date e schedule_interval nos seus DAGs.

Especifique períodos de manutenção para novos ambientes

Pode especificar períodos de manutenção quando cria um ambiente. Para mais informações, consulte o artigo Crie ambientes.

Especifique períodos de manutenção para ambientes existentes

Consola

Para definir ou alterar os períodos de manutenção de um ambiente existente, atualize o ambiente:

  1. Na Google Cloud consola, aceda à página Ambientes.

    Aceder a Ambientes

  2. Selecione o seu ambiente.

  3. Aceda ao separador Configuração do ambiente.

  4. Junto à entrada Janelas de manutenção, clique em Editar.

  5. Na caixa de diálogo Períodos de manutenção, selecione a caixa de verificação Definir hora personalizada para períodos de manutenção.

  6. Defina a Hora de início, o Fuso horário, os Dias e a Duração, para que a hora combinada para o horário especificado seja, pelo menos, 12 horas num período de 7 dias consecutivos. Por exemplo, um período de 4 horas todas as segundas-feiras, quartas-feiras e sextas-feiras oferece a quantidade de tempo necessária.

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

gcloud

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

  • --maintenance-window-start define a hora de início de um período de manutenção.
  • --maintenance-window-end define a hora de fim de um período de manutenção.
  • --maintenance-window-recurrence define a recorrência do período 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'

Substituir:

  • ENVIRONMENT_NAME com o nome do ambiente.
  • DATETIME_START com a data e a hora de início no formato de introdução de data/hora. Só é usado o horário especificado do dia. A data especificada é ignorada.
  • DATETIME_END com a data e a hora de fim no formato de introdução de data/hora. Só é usado o horário especificado do dia. A data especificada é ignorada. A data e a hora especificadas têm de ser posteriores à data de início.
  • MAINTENANCE_RECURRENCE com uma RRULE RFC 5545 para a recorrência dos períodos de manutenção. O Cloud Composer suporta 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 seguinte especifica um período de manutenção de 6 horas entre as 01:00 e as 07:00 (UTC) às quartas-feiras, 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. Construa um pedido de API environments.patch.

  2. Neste pedido:

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

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

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

Substituir:

  • DATETIME_START com a data e a hora de início no formato de introdução de data/hora. Só é usada a hora especificada do dia. A data especificada é ignorada.
  • DATETIME_END com a data e a hora de fim no formato de introdução de data/hora. Só é usada a hora especificada do dia. A data especificada é ignorada. A data e a hora especificadas têm de ser posteriores à data de início.
  • MAINTENANCE_RECURRENCE com uma RRULE RFC 5545 para a recorrência dos períodos de manutenção. O Cloud Composer suporta 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 seguinte especifica um período de manutenção de 6 horas entre as 01:00 e as 07:00 (UTC) às quartas-feiras, 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 os períodos 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"
    }
  }
}

Substituir:

  • ENVIRONMENT_NAME com o nome do ambiente.
  • LOCATION com a região onde o ambiente está localizado.
  • DATETIME_START com a data e a hora de início no formato de introdução de data/hora. Só é usada a hora especificada do dia. A data especificada é ignorada.
  • DATETIME_END com a data e a hora de fim no formato de introdução de data/hora. Só é usada a hora especificada do dia. A data especificada é ignorada. A data e a hora especificadas têm de ser posteriores à data de início.
  • MAINTENANCE_RECURRENCE com uma RRULE RFC 5545 para a recorrência dos períodos de manutenção. O Cloud Composer suporta 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 seguinte especifica um período de manutenção de 6 horas entre as 01:00 e as 07:00 (UTC) às quartas-feiras, 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"
    }
  }
}

O que se segue?