Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Esta página descreve como executar testes de failover de banco de dados e cluster para ambientes altamente resilientes.
Os testes de failover para seu ambiente simulam uma interrupção completa de uma zona em um data center local. Nesse cenário, uma interrupção zonal de um cluster uma interrupção temporária de um banco de dados pode acontecer ao mesmo tempo. Ao realizar as duas você pode monitorar o desempenho do seu ambiente altamente resiliente um failover e verificar como isso afeta seus DAGs e tarefas.
Antes de começar
Para realizar testes de failover, sua conta deve ter os seguintes papéis e permissões:
A permissão
composer.environments.update
. Consulte Controle de acesso com o IAM para conferir uma lista de papéis com essa permissão.Administrador de cluster do Kubernetes Engine (
roles/container.clusterAdmin
) para executar comandoskubectl
no cluster do ambiente. Como como alternativa, é possível provisionar Papéis do RBAC do Kubernetes diretamente no GKE.
Se você usa redes autorizadas, precisa executar comandos
kubectl
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 use várias opções. Para mais informações, consulte Como executar comandos em um ambiente de IP privado.
Verificar se o ambiente está íntegro
Realize os testes de failover do cluster do banco de dados e do ambiente apenas nos ambientes saudáveis.
Para verificar a integridade do seu ambiente:
No console do Google Cloud, acesse a página Ambientes.
Na lista de ambientes, clique no nome do ambiente. A página Detalhes do ambiente é aberta.
Acesse a guia Monitoramento.
Verifique se todas as métricas de integridade estão verdes.
Executar um teste de failover do banco de dados
É possível executar um teste de failover do banco de dados, que simula uma interrupção do serviço zonal, acionando-o com um comando da Google Cloud CLI. Por exemplo, talvez você queira para medir o tempo que leva para o banco de dados do seu ambiente para mudar de zona.
Para executar um teste de failover de banco de dados para seu ambiente:
Verifique se seu ambiente está saudável.
Consiga a zona principal do banco de dados do seu ambiente:
gcloud composer environments fetch-database-properties \ ENVIRONMENT_NAME \ --location LOCATION
Substitua:
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-central1
Inicie o teste de failover do banco de dados:
gcloud composer environments database-failover \ ENVIRONMENT_NAME \ --location LOCATION
Substitua:
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-central1
Aguarde até que o teste de failover do banco de dados seja concluído. O processo pode demorar para 3 minutos.
Verifique se a zona principal do banco de dados do ambiente foi alterada:
gcloud composer environments fetch-database-properties \ ENVIRONMENT_NAME \ --location LOCATION
Verifique as métricas de integridade do seu ambiente para ter certeza de que seu ambiente seja saudável.
O banco de dados do ambiente fica pronto para outro failover quando a seção Banco de dados disponível para failover (
composer.googleapis.com/environment/database/available_for_failover
) se tornarTrue
. Para mais informações sobre como visualizar suas do ambiente de execução no Cloud Monitoring, consulte Monitorar ambientes.
Realize o teste de failover do cluster do seu ambiente
Você pode executar um teste de failover para o cluster do ambiente, o que que simulam uma interrupção de serviço zonal. Por exemplo, você pode querer fazer isso para medir o tempo que leva para seu ambiente mudar para outra zona.
Verificar se o ambiente está íntegro
Antes de iniciar o teste, verifique se seu ambiente seja saudável.
Configurar credenciais para o cluster do ambiente
Para receber as credenciais do cluster:
No console do Google Cloud, acesse a página Ambientes.
Na lista de ambientes, clique no nome do ambiente. A página Detalhes do ambiente é aberta.
Acesse a guia Configuração do ambiente.
Clique em Visualizar 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. Você usa essas informações para simular uma interrupção do serviço zonal mais tarde. Você também pode executar esses comandos novamente enquanto realiza o teste de failover para ver o cluster do ambiente de execução realiza o failover.
Verifique os nós e as zonas:
kubectl get nodes \ -o=custom-columns=NAME:.metadata.name,NODE:.metadata.labels.topology\\.gke\\.io/zone
Verifique os pods:
kubectl get pods --all-namespaces \ -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName \ --field-selector metadata.namespace!=kube-system
Confira informações mais detalhadas sobre pods:
kubectl get pods --all-namespaces -o wide \ --field-selector metadata.namespace!=kube-system
Nós de drenagem
Escolha a zona em que você quer simular uma interrupção do serviço. Se você executar o cluster
teste de failover com o teste de failover do banco de dados,
talvez você queira escolher a zona principal do
instância altamente disponível do Cloud SQL.
Por exemplo, se a instância principal do Cloud SQL for executada em us-central1-a
simule uma interrupção em toda a zona us-central1-a
realizando o teste de failover do banco de dados e, em seguida, o teste de failover do cluster
us-central1-a
:
O comando a seguir simula um conjunto de nós ficando indisponível em um em uma zona específica. Ele elimina à força os pods de nós na zona especificada e impede a reprogramação de pods nesses nós. Como não é possível criar pods novos programados, novos nós são adicionados ao cluster.
Esse comando não afeta as cargas de trabalho executadas no composer-system
. Talvez você veja 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 sã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 do cluster.
Verificar as métricas do ambiente
![Métricas de ambiente durante uma interrupção simulada de uma zona](https://cloud.google.com/static/composer/docs/images/composer-2-failover-metrics.png?authuser=4&hl=pt)
No console do Google Cloud, acesse a página Ambientes.
Na lista de ambientes, clique no nome do ambiente. A página Detalhes do ambiente é aberta.
Acesse a guia Monitoramento.
Verifique se as métricas a seguir são "verdes" durante o failover operação, ou permanecem como "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
- Gatilhos ativos
A interrupção simulada é marcada como "Manutenção do cluster operação".
Você não precisa fazer mais nada para retornar os arquivos para o failover após o teste. Durante o teste, a o cluster do ambiente de nuvem adiciona automaticamente novos nós que substituem que foram afetadas pela interrupção simulada.