Realize testes de failover para ambientes altamente resilientes

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Nesta página, descrevemos 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. Nesse cenário, uma interrupção zonal de um cluster e uma interrupção de zona 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 executa um failover e verificar como isso afeta os DAGs e as 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.

    • Papel de administrador de cluster do Kubernetes Engine (roles/container.clusterAdmin) para executar comandos kubectl no cluster do ambiente. Como alternativa, é possível provisionar papéis RBAC do Kubernetes diretamente no GKE.

  • Se você usa redes autorizadas e 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 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

Execute os testes de failover de cluster do banco de dados e do ambiente somente em ambientes íntegros.

Para verificar a integridade do seu ambiente:

  1. No console do Google Cloud, acesse a página Ambientes.

    Acessar "Ambientes"

  2. Na lista de ambientes, clique no nome do ambiente. A página Detalhes do ambiente é aberta.

  3. Acesse a guia Monitoramento.

  4. 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, é possível fazer isso para medir a quantidade de tempo que leva para o banco de dados do ambiente mudar para outra zona.

Para executar um teste de failover de banco de dados para seu ambiente:

  1. Verifique se seu ambiente está saudável.

  2. 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
    
  3. 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
    
  4. Aguarde até que o teste de failover do banco de dados seja concluído. O processo pode levar até três minutos.

  5. Verifique se a zona principal do banco de dados do ambiente foi alterada:

    gcloud composer environments fetch-database-properties \
        ENVIRONMENT_NAME \
        --location LOCATION
    
  6. Verifique as métricas de integridade do ambiente para garantir que ele esteja íntegro.

  7. O banco de dados do ambiente estará 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 tornar True. Para mais informações sobre como visualizar as métricas do ambiente no Cloud Monitoring, consulte Monitorar ambientes.

Realize o teste de failover do cluster do seu ambiente

É possível executar um teste de failover no cluster do ambiente, o que simula uma interrupção de zona. Por exemplo, você pode 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 o ambiente está íntegro.

Configurar credenciais para o cluster do ambiente

Para receber as credenciais do cluster:

  1. No console do Google Cloud, acesse a página Ambientes.

    Acessar "Ambientes"

  2. Na lista de ambientes, clique no nome do ambiente. A página Detalhes do ambiente é aberta.

  3. Acesse a guia Configuração do ambiente.

  4. Clique em Visualizar detalhes do cluster.

  5. Clique em Conectar.

  6. 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. Também é possível executar esses comandos novamente durante o teste de failover para ver como o cluster do ambiente executa o failover.

  1. Verifique os nós e as zonas:

    kubectl get nodes \
      -o=custom-columns=NAME:.metadata.name,NODE:.metadata.labels.topology\\.gke\\.io/zone
    
  2. 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
    
  3. 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 teste de failover do cluster com o teste de failover do banco de dados, talvez seja necessário escolher a zona principal da instância do Cloud SQL altamente disponível do seu ambiente. 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. Para isso, primeiro execute 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 elimina à força os pods dos nós na zona especificada e impede a reprogramação de pods nesses nós. Como novos pods não podem ser programados, novos nós são adicionados ao cluster.

Esse comando não afeta cargas de trabalho executadas no namespace 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
Figura 1. Métricas de ambiente durante uma interrupção de zona simulada (clique para ampliar)
  1. No console do Google Cloud, acesse a página Ambientes.

    Acessar "Ambientes"

  2. Na lista de ambientes, clique no nome do ambiente. A página Detalhes do ambiente é aberta.

  3. Acesse a guia Monitoramento.

  4. Verifique se as métricas a seguir ficam "verdes" durante a operação de failover ou permanecem com o 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
    • Gatilhos ativos

    Observe que a interrupção simulada é marcada como uma "operação de manutenção do cluster".

  5. Não é preciso fazer mais nada 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.

A seguir