Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Esta página descreve como usar snapshots de ambiente para recuperação de desastres.
Definições
Este guia usa as seguintes definições:
- Desastre é um evento em que o Cloud Composer ou outros componentes essenciais para a operação do ambiente estão indisponíveis. Esse evento exige um failover para uma região e ambientes do Cloud Composer diferentes. A causa de um desastre pode ser natural ou causada pelo homem, incluindo inatividade de Google Cloud regiões e falhas na sua própria infraestrutura.
- A recuperação de desastres (DR), no contexto do Cloud Composer, é um processo de restauração da operação do ambiente após um desastre. O processo envolve recriar o ambiente, possivelmente em outra região. Para mais informações sobre a recuperação de desastres, consulte o Guia de planejamento de recuperação de desastres.
- Ambiente principal é um ambiente do Cloud Composer para o qual você quer ativar um recurso de DR.
- O ambiente de failover é um ambiente do Cloud Composer designado para assumir as atividades do ambiente principal.
- O cenário de DR aquecido é uma variante da recuperação de desastres, em que você usa um ambiente de failover em espera, criado antes que um desastre ocorra.
- O cenário de DR frio é uma variante da recuperação de desastres, em que você cria um ambiente de failover após um desastre.
- A recuperação de desastres entre regiões é uma variante da recuperação de desastres morna ou fria em que o ambiente principal e o de failover estão localizados em regiões diferentes.
Sobre o procedimento de recuperação de desastres
O procedimento de recuperação de desastres resolve o problema quando o ambiente principal fica inoperante (quebrado ou não acessível) devido a um desastre.
Este procedimento pressupõe que o ambiente principal não será corrigido no local para resolver o desastre. Em vez disso, você cria um segundo ambiente (failover) lado a lado. Esse ambiente opera em vez do ambiente principal. Em uma fase posterior, você pode decidir voltar ao ambiente principal ou continuar usando o ambiente de failover.
Como o procedimento usa um ambiente de failover, as mudanças serão introduzidas quando você mudar do ambiente principal. As mudanças entre o ambiente principal e o de failover incluem (a lista não é abrangente):
O URL do servidor da Web será diferente. Isso muda o endereço da interface do Airflow e o endpoint da API REST do Airflow.
O URL do bucket do ambiente será diferente.
A configuração de permissões de rede e acesso pode precisar de ajustes.
Se você usar o cenário de DR aquecido, vai conhecer os valores do servidor da Web, os endereços de bucket do ambiente e a configuração de rede com antecedência.
Antes de começar
O banco de dados do Airflow precisa ter menos de 20 GB de dados para criar snapshots.
O número total de objetos nas pastas
/dags
,/plugins
e/data
no bucket do ambiente precisa ser menor que 100.000 para criar snapshots.Se você usar o mecanismo XCom para transferir arquivos, use-o de acordo com as diretrizes do Airflow. A transferência de arquivos grandes ou de um grande número de arquivos usando o XCom afeta a performance do banco de dados do Airflow e pode causar falhas ao carregar instantâneos ou fazer upgrade do seu ambiente. Considere usar alternativas, como o Cloud Storage, para transferir grandes volumes de dados.
Visão geral da preparação
Ambos os cenários de DR incluem as seguintes etapas de preparação:
-
- No cenário de DR morno, você mantém esse ambiente disponível.
- No cenário de DR frio, você cria esse ambiente apenas para testar seu procedimento de recuperação de desastres. Depois de concluir a preparação, você exclui esse ambiente e o cria novamente após um desastre.
Crie um bucket para snapshots.
O bucket precisa estar disponível na região de DR. Para DR entre regiões, o bucket de snapshots precisa ser multirregional ou estar localizado em uma região diferente do ambiente principal.
Verifique se os DAGs podem acessar recursos regionais.
Visão geral da recuperação de desastres
Depois de um desastre:
- (Somente DR a frio) Crie um ambiente de failover.
- Se possível, impeça que o ambiente principal execute DAGs.
- Carregue um snapshot do bucket de snapshots para o ambiente de failover.
- Se necessário, ajuste a configuração do ambiente de failover.
- Decidir o que fazer com o ambiente principal.
Etapas de preparação
Siga as etapas descritas abaixo para configurar a recuperação de desastres no seu ambiente.
Criar um ambiente de failover
Crie um ambiente que funcione como um ambiente de failover.
Siga estas diretrizes:
-
O ambiente principal e de failover precisa usar a mesma versão e build do Airflow.
No cenário de DR quente, atualize e faça upgrade dos dois ambientes em sincronia. Por exemplo, se você atualizar o ambiente principal para um build mais recente do Airflow ou instalar pacotes PyPI, o ambiente de failover também precisa ter essas mudanças.
Recomendamos criar o ambiente de failover em uma região diferente do ambiente principal. Como resultado, uma gama mais ampla de possíveis cenários de desastre pode ser coberta, como um desastre que afeta a disponibilidade de toda a região.
Recomendamos usar o Terraform para criar ambientes principais e de failover para que ambos tenham uma configuração consistente. Verifique se as definições do Terraform para os ambientes principal e de failover estão sincronizadas.
A configuração do ambiente de failover (como o tamanho do ambiente, o número de programadores e as permissões do IAM) é recomendada para se conformar à configuração do ambiente principal. As permissões do IAM para os dois ambientes precisam dar acesso adequado aos usuários e snapshots.
Verificar a disponibilidade do recurso
Os DAGs podem operar em recursos externos, e o acesso a esses recursos pode depender da configuração do ambiente (como permissões concedidas à conta de serviço, configuração de rede ou projeto do ambiente). Verifique se esses recursos estão disponíveis para o ambiente de failover.
Um ambiente pode interagir com alguns recursos externos por meio de conexões armazenadas no Airflow. Verifique se esses recursos precisam ser ajustados no ambiente de failover em comparação com o ambiente principal.
Criar um bucket de armazenamento para snapshots
Crie um novo bucket de armazenamento para snapshots do ambiente. Não use buckets de ambiente para recuperação de desastres, já que a configuração da política de retenção e do ciclo de vida é aplicada no nível do bucket.
Verifique se esse bucket de armazenamento tem permissões do IAM, uma política de retenção e uma configuração de ciclo de vida definidas de forma a impedir a exclusão acidental ou o acesso não autorizado. Para mais informações sobre como configurar um bucket para snapshots, consulte Configurar snapshots agendados.
Você pode:
- Crie um bucket em uma região diferente.
- Crie um bucket multirregional.
Configurar a manutenção do banco de dados
Mantenha o banco de dados do Airflow pequeno e dentro do limite de tamanho configurando a limpeza do banco de dados. Isso acelera o processo de salvar e carregar snapshots. O banco de dados do Airflow precisa ter menos de 20 GB de dados para criar snapshots.
Configurar snapshots programados
Configure snapshots programados para o ambiente principal.
Os snapshots só podem ser criados em um ambiente saudável, portanto, eles precisam ser salvos antes que o desastre ocorra.
Para mais informações sobre como os snapshots funcionam, consulte Salvar e carregar snapshots do ambiente. Consulte a seção Salvar um snapshot de ambiente da documentação para saber onde encontrar os snapshots salvos.
(Opcional) Configurar o monitoramento para operações de snapshot programadas
Para snapshots programados com uma frequência de pelo menos uma vez a cada 12 horas, use o Cloud Monitoring para receber alertas quando um snapshot não for criado automaticamente.
Para programações de menor frequência, use a CLI do Google Cloud para verificar os resultados das operações de snapshot. Consulte Verificar as operações de salvamento de snapshots.
- No Console do Google Cloud, acesse a página Monitoring.
- No painel de navegação do Monitoring, selecione notifications Alertas:
- Se você não tiver criado seus canais de notificação e quiser receber uma notificação, clique em Editar canais de notificação e adicione-os. Volte para a página Alertas depois de adicionar seus canais.
- Na página Alertas, clique em Criar política.
- Para selecionar a métrica, expanda o menu Selecionar uma métrica e faça isto:
- Para limitar o menu a entradas relevantes, insira
Composer Snapshot
na barra de filtro. Se não houver resultados depois de filtrar o menu, desative a opção Mostrar somente recursos e métricas ativos. - Em Tipo de recurso, selecione Ambiente do Cloud Composer.
- Em Categoria da métrica, selecione Ambiente.
- Em Métrica, selecione Contagem de criação de snapshots.
- Selecione Apply.
- Para limitar o menu a entradas relevantes, insira
-
Clique em Adicionar filtro e use os menus suspensos para adicionar os seguintes filtros:
Filtro Comparador Valor Rótulo do recurso > environment_name = O nome do ambiente em que você quer monitorar os snapshots programados. Rótulo do monitor > resultado = SUCCEEDED
- Na seção Transformar dados, defina os seguintes atributos:
- Em Janela contínua, selecione a janela de monitoramento para esse alerta.
Esse valor afeta a configuração do limite na próxima etapa.
Valor recomendado para o monitoramento programado de snapshots: 1 dia.
- Em Função de janela contínua, selecione delta.
- Em Janela contínua, selecione a janela de monitoramento para esse alerta.
Esse valor afeta a configuração do limite na próxima etapa.
- Clique em Próxima.
- As configurações da página Configurar acionador de alertas determinam quando o alerta é acionado.
Preencha esta página com as configurações na tabela a seguir.
Campo Valor Condition type
Threshold
Alert trigger
Any time series violates
Threshold position
Below threshold
Threshold value
O número de snapshots programados que você espera que sejam salvos no período configurado como janela móvel do alerta. Calcule esse valor usando a seguinte fórmula:
(rolling window in hours / schedule frequency in hours) - 1
Observação:deduzir a hora
1
na fórmula é para considerar os diferentes tempos de conclusão do snapshot. Isso ajuda a evitar a geração de falsos positivos se o snapshot mais recente ainda estiver em execução durante uma verificação de monitoramento.Exemplo:
Se você usar a janela móvel recomendada de um dia e a frequência da programação for uma vez a cada duas horas, defina esse valor como11
(conforme o cálculo:24 / 2 - 1 = 11
).Se a programação for executada corretamente, você terá pelo menos 11 snapshots em um período de 24 horas. Se não for o caso, significa que uma operação de snapshot não foi concluída corretamente e o Cloud Monitoring aciona esse alerta.
Condition name
Seu nome personalizado para a condição. - Clique em Próxima.
- Opcional: para adicionar notificações à sua política de alertas, clique em Canais de notificação. Na caixa de diálogo, selecione um ou mais canais de notificação no menu e clique em OK.
- Opcional: Atualize a Duração do fechamento automático do incidente. Este campo determina quando o Monitoring fecha incidentes na ausência de dados de métrica.
- Opcional: clique em Documentação e adicione as informações que quer incluir em uma mensagem de notificação.
- Clique em Nome e digite um nome para a política de alertas.
- Clique em Criar política.
Testar o procedimento de recuperação de desastres
Teste o procedimento de recuperação de desastres depois de configurá-lo e periodicamente depois. Isso permite que você resolva possíveis problemas que possam afetar o processo de recuperação de desastres.
No cenário de DR frio, é possível excluir o ambiente de failover depois de terminar de testar o procedimento de recuperação de desastres.
Verificar operações de salvamento de snapshots
É possível usar a CLI do Google Cloud para extrair a lista de operações de snapshot de salvamento e verificar se os snapshots estão prontos para cenários de recuperação de desastres.
Esse método é útil se você salvar snapshots com menos frequência do que pelo menos uma vez a cada 12 horas. Para verificar os snapshots salvos com mais frequência, é melhor configurar os alertas do Cloud Monitoring. Consulte Configurar o monitoramento para operações de snapshot programadas.
gcloud
Liste todas as operações de snapshots de um ambiente específico.
Para conferir a referência completa do comando, consulte
gcloud composer operations list
.
gcloud composer operations list \
--locations LOCATION \
--filter="metadata.operationType=SAVE_SNAPSHOT AND
metadata.resource=projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_ID"
--format yaml
Substitua:
LOCATIONS
pela lista de identificadores de região em que o ambiente está localizado;PROJECT_ID
pelo identificador do projeto em que o ambiente está localizadoENVIRONMENT_ID
com o identificador do ambiente em que você quer verificar as operações de snapshot
Exemplo:
gcloud composer operations list \
--locations us-central1 \
--filter="metadata.operationType=SAVE_SNAPSHOT AND
metadata.resource=projects/my-project/locations/us-central1/environments/my-environment"
--format yaml
Após um desastre
Siga as etapas descritas abaixo após um desastre para recuperar o ambiente principal.
(Somente DR a frio) Criar um ambiente de failover
Siga as instruções na seção Criar um ambiente de failover.
Impedir que o ambiente principal execute DAGs
Se possível, impeça que o ambiente principal execute DAGs:
- Se o ambiente principal ainda estiver acessível, interrompa todos os DAGs.
- Se o bucket do ambiente principal estiver acessível, mova todos os DAGs do bucket do ambiente ou para uma pasta fora de
/dags
no bucket do ambiente principal.
Carregar um snapshot no ambiente de failover
Carregue um snapshot do ambiente principal no ambiente de failover.
Depois que o snapshot é carregado no ambiente de failover, ele programa e executa tarefas como se nada tivesse sido executado pelo ambiente principal após a criação de um snapshot. No entanto, algumas dessas tarefas podem já ter sido executadas pelo ambiente principal. O ambiente de failover não tem nenhuma maneira de reconhecer quais tarefas foram executadas após a criação do snapshot e antes de um desastre. Como resultado, algumas tarefas podem ser executadas duas vezes (no ambiente principal e no de failover). Recomendamos que todas as tarefas sejam idempotentes e que os snapshots programados sejam criados a cada duas horas.
(Se necessário) Ajuste a configuração do ambiente de failover.
Em alguns casos, talvez seja necessário mudar a configuração do ambiente de failover depois de carregar o snapshot do ambiente principal nele.
Por exemplo, em um cenário de DR a frio, talvez seja necessário usar um conjunto diferente de variáveis de ambiente do Airflow no ambiente de failover. Como outro exemplo, em um cenário de DR aquecido, talvez seja necessário conceder permissões aos usuários na interface do Airflow para que eles possam acessar o ambiente de failover.
É possível realizar essas mudanças manualmente ou preparar um script de shell com
comandos que mudam a configuração do ambiente de failover executando
comandos gcloud composer environment update
.
Decidir o que fazer com o ambiente principal
Alguns desastres podem acontecer porque o ambiente principal não está acessível, mas ainda está operacional ou não funciona corretamente. Por exemplo, não é possível acessar o ambiente principal pela rede devido a uma falha na infraestrutura. Como outro exemplo, o ambiente opera com alguns erros ou com capacidade reduzida, mas alguns DAGs ainda são executados.
Se o ambiente original ainda estiver em execução, ele poderá gerar custos diretamente relacionados ao Cloud Composer ou a outros serviços acessados pelos DAGs, mesmo que um novo ambiente tenha sido criado como substituto. Esse ambiente ainda pode executar alguns DAGs. Como resultado, algumas operações podem ser executadas duas vezes: no ambiente principal que ainda está em execução e no ambiente de failover após o carregamento do snapshot.
Se o ambiente principal existe, mas não funciona corretamente
O ambiente principal pode ser excluído se todos os dados relevantes forem recuperados. Por
exemplo, talvez você queira recuperar
dados que não estão incluídos nos snapshots do ambiente,
como a configuração de rede ou o conteúdo do bucket do
ambiente fora das pastas /dags
e /plugins
.
Se o ambiente principal ficar acessível e saudável novamente
Se o ambiente principal ficou inacessível apenas temporariamente e voltou a ficar acessível e íntegro, você pode escolher uma abordagem:
- Continue usando o ambiente de failover.
- Retorne ao ambiente principal.
Para continuar usando o ambiente de failover:
- Se o ambiente principal ainda executar DAGs, interrompa-os assim que possível.
- Confirme se todos os dados relevantes foram recuperados e exclua o ambiente principal.
- Repita as etapas de preparação de DR para o ambiente de failover, como a configuração de snapshots programados.
Para retornar ao ambiente principal:
- Pause todos os DAGs no ambiente de failover.
- Aguarde a conclusão de todas as execuções do DAG no ambiente de failover ou interrompa-as.
- Salve um snapshot do ambiente de failover.
- Carregue esse snapshot para o ambiente principal.
- Retome as atividades dos DAGs no ambiente principal.
- Se necessário, exclua o ambiente de failover.