Esta página descreve o que acontece durante um experimento com um tipo de falha do Cloud SQL de failover.
Como funciona a falha do Cloud SQL de failover
A falha do Cloud SQL de failover aciona um failover de alta disponibilidade (HA) para uma instância do Cloud SQL chamando o método failover na API Cloud SQL Admin. O objetivo dessa falha é permitir que você teste o comportamento e a resiliência do serviço quando a instância principal do Cloud SQL faz a transição para a instância de espera em outra zona na mesma região.
O destino dessa falha é uma instância do Cloud SQL.
O que acontece durante a execução do experimento
À medida que o experimento avança pelos estados, os recursos envolvidos passam pelas seguintes mudanças.
Recurso |
|
|
|
instância |
Nenhum |
Promover instância de espera de HA |
Não relevante |
Validação e novas tentativas de failover de HA
O back-end do Fault Injection Testing realiza verificações de validação antes de iniciar o failover para garantir que o ambiente seja adequado. Esse processo ocorre durante a fase INJECTING, antes de enviar a chamada de API sqladmin.instances.failover para o plano de controle do Cloud SQL:
- O sistema verifica se o estado da instância do Cloud SQL
é
RUNNABLE. Se a instância estiver em qualquer outro estado durante um experimento em execução, o Fault Injection Testing vai notificar você. - Ele verifica se a métrica
cloudsql.googleapis.com/database/available_for_failoveréTRUE.
Se essas condições não forem atendidas, a solicitação de failover será enfileirada para nova tentativa.
Gerenciamento de falhas
Se o failover já estiver em andamento ou encontrar um erro:
- Durante a injeção:se a chamada de failover for rejeitada pelo plano de controle do Cloud SQL (por exemplo, se a instância de espera não estiver íntegra), o experimento vai passar para o estado
STOPPING. - Monitoramento pós-failover:se a operação de failover não atingir o status
DONEem um período predeterminado de 10 minutos, o back-end do Fault Injection Testing vai consultar os erros de operação, mover o experimento para o estadoSTOPPINGe marcá-lo como tendo encontrado um erro.
O Fault Injection Testing depende do plano de controle do Cloud SQL como a fonte da verdade. O plano de controle rejeita qualquer tentativa de failover se a instância de espera não estiver íntegra. O Fault Injection Testing usa verificações de pré-voo e monitoramento de status para evitar ou informar essas falhas, em vez de tentar novas tentativas automatizadas após uma rejeição.
Failback manual
Como o failover é uma mudança com estado, interromper o experimento não faz o failback automático para a instância principal original (conforme indicado por "Não relevante" na fase REVERTING). O banco de dados vai continuar sendo executado na zona secundária.
Para retornar a instância à zona original após a conclusão do experimento, é necessário iniciar manualmente outro failover usando o Google Cloud console ou a
gcloud CLI.