Airflow gerenciado (Geração 3) | Airflow gerenciado (Geração 2) | Airflow gerenciado (Geração 1 legada)
Nesta página, descrevemos como realizar testes de failover de banco de dados e cluster para ambientes altamente resilientes.
Os testes de failover do ambiente simulam uma interrupção completa de uma zona em um data center. Nesse cenário, uma interrupção zonal de um cluster e uma interrupção zonal de um banco de dados podem acontecer ao mesmo tempo. Ao realizar os dois testes de failover, é possível monitorar como o ambiente altamente resiliente realiza um failover e verificar como isso afeta seus DAGs e tarefas.
Antes de começar
Para realizar testes de failover, sua Conta do Google precisa ter os seguintes papéis e permissões:
Permissão
composer.environments.update. Consulte Controle de acesso com o IAM para uma lista de papéis com essa permissão.Papel Administrador de clusters do Kubernetes Engine (
roles/container.clusterAdmin) para executar comandoskubectlno cluster do ambiente. Como alternativa, você pode provisionar papéis do RBAC do Kubernetes diretamente no GKE.
Se você usar redes autorizadas, será necessário executar
kubectlcomandos em uma máquina que possa acessar o endpoint do plano de controle do cluster do GKE. Dependendo de como você configura o acesso ao endpoint do plano de controle do ambiente, é possível usar várias opções. Para mais informações, consulte Como executar comandos em um ambiente de IP particular.
Verificar se o ambiente está íntegro
Realize testes de failover apenas em ambientes íntegros. Para verificar se o ambiente está íntegro:
No Google Cloud console, acesse a página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.
Acesse a guia Monitoramento.
Verifique se todas as métricas de integridade estão verdes.
Realizar um teste de failover de banco de dados
É possível realizar um teste de failover de banco de dados, que simula uma interrupção zonal, acionando-o com um comando da Google Cloud CLI. Por exemplo, você pode fazer isso para medir o tempo necessário para que o banco de dados do ambiente mude para outra zona.
Para realizar um teste de failover de banco de dados no ambiente:
Verifique se o ambiente está íntegro.
Encontre a zona principal do banco de dados do ambiente:
gcloud composer environments fetch-database-properties \ ENVIRONMENT_NAME \ --location LOCATIONSubstitua:
ENVIRONMENT_NAME: o nome do ambiente do Cloud Composer.LOCATION: a região em que o ambiente está localizado.
Exemplo:
gcloud composer environments fetch-database-properties \ example-environment \ --location us-central1Inicie o teste de failover do banco de dados:
gcloud composer environments database-failover \ ENVIRONMENT_NAME \ --location LOCATIONSubstitua:
ENVIRONMENT_NAME: o nome do ambiente do Cloud Composer.LOCATION: a região em que o ambiente está localizado.
Exemplo:
gcloud composer environments database-failover \ example-environment \ --location us-central1Aguarde até que o teste de failover do banco de dados seja concluído. O processo pode levar até 3 minutos.
Verifique se a zona principal do banco de dados do ambiente foi alterada:
gcloud composer environments fetch-database-properties \ ENVIRONMENT_NAME \ --location LOCATIONVerifique as métricas de integridade do ambiente para garantir que ele esteja íntegro.
O banco de dados do ambiente fica pronto para outro failover quando a métrica de ambiente Banco de dados disponível para failover (
composer.googleapis.com/environment/database/available_for_failover) se tornaTrue. Para mais informações sobre como visualizar as métricas do ambiente no Cloud Monitoring, consulte Monitorar ambientes.
Realizar o teste de failover do cluster do ambiente
É possível realizar um teste de failover para o cluster do ambiente, que simula uma interrupção zonal. Por exemplo, você pode fazer isso para medir o tempo necessário para que o ambiente mude para outra zona.
Verificar se o ambiente está íntegro
Antes de iniciar o teste, verifique se o ambiente está íntegro.
Configurar credenciais para o cluster do ambiente
Para receber credenciais do cluster:
No Google Cloud console, acesse a página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.
Acesse a guia Configuração do ambiente.
Clique em Ver detalhes do cluster.
Clique em Conectar.
Copie e execute o comando da Google Cloud CLI exibido.
Exemplo:
gcloud container clusters get-credentials \ us-central1-exam-db23ee12-gke \ --region us-central1 \ --project example-project
Inspecionar o cluster do ambiente
Verifique as zonas e os nós em que as cargas de trabalho são executadas no cluster do ambiente. Use essas informações para simular uma interrupção do serviço zonal mais tarde. Também é possível executar esses comandos novamente durante o teste de failover para conferir como o cluster do ambiente realiza o failover.
Verificar nós e zonas:
kubectl get nodes \ -o=custom-columns=NAME:.metadata.name,NODE:.metadata.labels.topology\\.gke\\.io/zoneVerificar pods:
kubectl get pods --all-namespaces \ -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName \ --field-selector metadata.namespace!=kube-systemVer informações mais detalhadas sobre os pods:
kubectl get pods --all-namespaces -o wide \ --field-selector metadata.namespace!=kube-system
Drenar nós
Escolha uma zona em que você quer simular uma interrupção. Se você realizar o teste de failover do cluster
junto com o teste de failover do banco de dados,
convém escolher a zona principal da instância do Cloud SQL
de alta disponibilidade do ambiente.
Por exemplo, se a instância principal do Cloud SQL for executada em us-central1-a, você poderá simular uma interrupção em toda a zona us-central1-a realizando primeiro o teste de failover do banco de dados e, em seguida, o teste de failover do cluster em us-central1-a.
O comando a seguir simula um conjunto de nós que ficam indisponíveis em uma zona específica. Ele remove à força os pods dos nós na zona especificada e impede o reagendamento de pods nesses nós. Como não é possível programar novos pods, novos nós são adicionados ao cluster.
Esse comando não afeta as cargas de trabalho executadas no namespace composer-system. Você pode encontrar mensagens de erro relacionadas na resposta ao comando. Isso não afeta o teste de failover. Os nós que existem na zona selecionada ainda estão marcados como não programáveis.
Para simular uma falha de zona de cluster na zona selecionada:
kubectl get nodes -o name -l "topology.gke.io/zone=ZONE" | \
xargs kubectl drain \
--ignore-daemonsets --delete-emptydir-data --force --disable-eviction
Substitua:
ZONE: a zona em que você quer simular uma falha de zona de cluster.
Verificar as métricas do ambiente
No Google Cloud console, acesse a página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.
Acesse a guia Monitoramento.
Verifique se as métricas a seguir estão "verdes" durante a operação de failover ou permanecem no status "vermelho" por no máximo alguns minutos.
- Integridade do ambiente
- Sinal de funcionamento do programador
- Integridade do servidor da Web
- Integridade do banco de dados
- Workers ativos
- Programadores ativos
- Servidores da Web ativos
- Acionadores ativos
Observe que a interrupção simulada é marcada como uma "operação de manutenção do cluster".
Não é necessário realizar outras ações para retornar o cluster do ambiente à prontidão de failover após o teste. Durante o teste, o cluster do ambiente adiciona automaticamente novos nós que substituem os afetados pela interrupção simulada.