Airflow gerenciado (geração 3) | Airflow gerenciado (geração 2) | Airflow gerenciado (geração 1 legada)
Esta página descreve como configurar ambientes do Airflow gerenciado altamente resilientes (de alta disponibilidade).
Sobre ambientes altamente resilientes (de alta disponibilidade)
Um ambiente altamente resiliente é multizonal e é executado em pelo menos duas zonas de uma região selecionada. O Airflow gerenciado distribui automaticamente os componentes do ambiente entre as zonas.
Por exemplo, uma interrupção zonal interrompe as tarefas do Airflow executadas em uma zona específica. Depois disso, um ambiente altamente resiliente se recupera, reinicia os componentes afetados em uma zona diferente e alterna o banco de dados para uma zona secundária. Assim, as tarefas com falha do Airflow podem ser reagendadas e reiniciadas pelo Airflow, preservando ao mesmo tempo o histórico de execuções de DAG e outras configurações.
Sobre o banco de dados de alta disponibilidade do ambiente
Em ambientes do Airflow gerenciado de alta disponibilidade, o componente do Cloud SQL que armazena o banco de dados do ambiente é executado no modo de alta disponibilidade. Uma instância principal e uma instância em espera do Cloud SQL são distribuídas entre as zonas.
Em caso de interrupção, a instância do Cloud SQL do ambiente realiza o failover automático do banco de dados para a instância do Cloud SQL em espera. Não é necessário realizar outras ações no ambiente do Airflow gerenciado. Quando a zona principal estiver operacional novamente, o ambiente voltará a ter duas zonas (principal e secundária). As zonas principal e secundária podem ser trocadas em alguns casos. A instância do Cloud SQL no modo de alta disponibilidade usa o mesmo endereço IP após um failover.
Sobre componentes do Airflow de alta disponibilidade
Um ambiente altamente resiliente é multizonal e é executado em pelo menos duas zonas de uma região selecionada. Os componentes a seguir são executados em zonas separadas:
Exatamente dois programadores do Airflow
Pelo menos dois acionadores (se o número de acionadores não estiver definido como zero)
Pelo menos dois processadores de DAG
Dois servidores da Web
O número mínimo de workers é definido como dois, e o cluster do ambiente distribui instâncias de worker entre as zonas. Em caso de interrupção zonal, as instâncias de worker afetadas são reagendadas em uma zona diferente.
Para mais informações sobre a arquitetura de ambientes altamente resilientes, consulte Arquitetura de ambiente altamente resiliente.
Antes de começar
-
No Airflow gerenciado (geração 3), a alta resiliência está disponível para ambientes de IP particular e IP público.
No Airflow gerenciado (geração 3), ambientes altamente resilientes estão disponíveis a partir dos builds do Airflow composer-3-airflow-2.10.2-build.13 e composer-3-airflow-2.9.3-build.20.
Ambientes altamente resilientes executam componentes de ambiente extras. Isso resulta em aumento de custos em comparação com ambientes normais.
Se você quiser atualizar um ambiente padrão para um altamente resiliente, verifique se ele atende aos seguintes requisitos de configuração. Se o ambiente não atender a esses requisitos, você pode atualizar os parâmetros de escalonamento e desempenho.
- O número mínimo de workers do Airflow é dois ou mais.
O número de programadores do Airflow é exatamente dois.
Pelo menos dois processadores de DAG.
Se você usa operadores adiáveis nos DAGs, então pelo menos dois acionadores.
Criar um ambiente altamente resiliente
Para criar um ambiente altamente resiliente, ative o modo de alta resiliência ao criar um ambiente.
Atualizar um ambiente padrão para o modo de alta resiliência
Console
No Google Cloud console, acesse a página Ambientes.
Na lista de ambientes, clique no nome do ambiente. A página Detalhes do ambiente será aberta.
Selecione a guia Configuração do ambiente.
Na seção Modo de resiliência, clique em Editar.
Selecione Alta resiliência e clique em Salvar.
gcloud
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--enable-high-resilience
Substitua:
ENVIRONMENT_NAME: o nome do ambiente;LOCATION: a região em que o ambiente está localizado.
API
Crie uma solicitação de API
environments.patch.Nesta solicitação:
No parâmetro
updateMask, especifique a máscaraconfig.resilienceMode.No corpo da solicitação, especifique
HIGH_RESILIENCEpara mudar para o modo de alta resiliência.
Exemplo:
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.resilienceMode
{
"config": {
"resilience_mode": { "HIGH_RESILIENCE" }
}
}
Terraform
O campo resilience_mode no bloco config especifica o modo de resiliência. Para usar o modo de alta resiliência, defina esse valor como HIGH_RESILIENCE.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
resilience_mode = "HIGH_RESILIENCE"
}
}
Substitua:
ENVIRONMENT_NAME: o nome do ambiente;LOCATION: a região em que o ambiente está localizado.
Exemplo:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
resilience_mode = "HIGH_RESILIENCE"
}
Mudar um ambiente altamente resiliente para o modo de resiliência padrão
É possível mudar o ambiente para o modo de resiliência padrão a qualquer momento. Esta operação:
- Reduz o número de servidores da Web no ambiente para um.
- Desativa o modo de alta disponibilidade do banco de dados do Airflow do ambiente.
Não altera as configurações do número mínimo de workers, programadores ou acionadores do Airflow.
Console
No Google Cloud console, acesse a página Ambientes.
Na lista de ambientes, clique no nome do ambiente. A página Detalhes do ambiente será aberta.
Selecione a guia Configuração do ambiente.
Na seção Modo de resiliência, clique em Editar.
Selecione Resiliência padrão (padrão) e clique em Salvar.
gcloud
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--disable-high-resilience
Substitua:
ENVIRONMENT_NAME: o nome do ambiente do Cloud Composer;LOCATION: a região em que o ambiente está localizado.
API
Crie uma solicitação de API
environments.patch.Nesta solicitação:
No parâmetro
updateMask, especifique a máscaraconfig.resilienceMode.No corpo da solicitação, especifique
RESILIENCE_MODE_UNSPECIFIEDpara mudar para o modo de resiliência padrão.
Exemplo:
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.resilienceMode
{
"config": {
"resilience_mode": { "RESILIENCE_MODE_UNSPECIFIED" }
}
}
Terraform
O campo resilience_mode no bloco config especifica o modo de resiliência. Para usar o modo de resiliência padrão, defina esse valor como STANDARD_RESILIENCE.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
resilience_mode = "STANDARD_RESILIENCE"
}
}
Substitua:
ENVIRONMENT_NAME: o nome do ambiente;LOCATION: a região em que o ambiente está localizado.
Exemplo:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
resilience_mode = "STANDARD_RESILIENCE"
}
Verificar se o ambiente é executado no modo de alta resiliência
Console
No Google Cloud console, acesse a página Ambientes.
Na lista de ambientes, clique no nome do ambiente. A página Detalhes do ambiente será aberta.
Selecione a guia Configuração do ambiente.
Na seção Modo de resiliência, confira o modo de resiliência do ambiente.
gcloud
Para verificar se o modo de alta resiliência está ativado no ambiente, execute o seguinte comando da Google Cloud CLI. O valor de True significa que o modo de alta resiliência está ativado no ambiente.
gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION \
--format="value(config.resilienceMode)"
Substitua:
ENVIRONMENT_NAME: o nome do ambiente do Cloud Composer;LOCATION: a região em que o ambiente está localizado.
A seguir
- Realize testes de failover para o ambiente altamente resiliente.
- Recuperação de desastres com snapshots de ambiente