Esegui test di failover per ambienti Cloud Composer altamente resilienti

Cloud Composer 1 | Cloud Composer 2

Questa pagina descrive come eseguire i test di failover di database e cluster per ambienti Cloud Composer altamente resilienti.

I test di failover per il tuo ambiente simulano un'interruzione completa di una zona in un data center. In questo scenario, potrebbero verificarsi contemporaneamente un'interruzione a livello di zona di un cluster e un'interruzione di un database a livello di zona. Eseguendo i due test di failover, puoi monitorare il modo in cui l'ambiente altamente resiliente esegue un failover e controllare in che modo questo influisce sui DAG e sulle attività.

Prima di iniziare

  • Per eseguire test di failover, il tuo account deve avere i ruoli e le autorizzazioni seguenti:

    • Autorizzazione composer.environments.update. Consulta Controllo dell'accesso con IAM per un elenco dei ruoli con questa autorizzazione.

    • Ruolo Amministratore cluster Kubernetes Engine (roles/container.clusterAdmin) per eseguire i comandi kubectl sul cluster dell'ambiente. In alternativa, puoi eseguire il provisioning dei ruoli Kubernetes RBAC direttamente in GKE.

  • Se utilizzi reti autorizzate, devi eseguire i comandi kubectl da una macchina in grado di accedere all'endpoint del piano di controllo del cluster GKE. A seconda di come configuri l'accesso all'endpoint del piano di controllo del tuo ambiente, puoi utilizzare diverse opzioni. Per maggiori informazioni, consulta Esecuzione di comandi in un ambiente con IP privato.

Verifica che l'ambiente sia integro

Assicurati di eseguire i test di failover del cluster e del database dell'ambiente solo in ambienti integri.

Per verificare che il tuo ambiente sia integro:

  1. Nella console Google Cloud, vai alla pagina Ambienti.

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Viene visualizzata la pagina Dettagli ambiente.

  3. Vai alla scheda Monitoring.

  4. Assicurati che tutte le metriche di salute siano verdi.

Esegui un test di failover del database

Puoi eseguire un test di failover del database, che simula un'interruzione a livello di zona, attivandola con un comando Google Cloud CLI. Ad esempio, puoi eseguire questa operazione per misurare il tempo necessario al database del tuo ambiente per passare a un'altra zona.

Per eseguire un test di failover del database per il tuo ambiente:

  1. Assicurati che il tuo ambiente sia integro.

  2. Ottieni la zona principale del database del tuo ambiente:

    gcloud composer environments fetch-database-properties \
        ENVIRONMENT_NAME \
        --location LOCATION
    

    Sostituisci quanto segue:

    • ENVIRONMENT_NAME: il nome del tuo ambiente Cloud Composer.
    • LOCATION: la regione in cui si trova l'ambiente.

    Esempio:

    gcloud composer environments fetch-database-properties \
        example-environment \
        --location us-central1
    
  3. Avvia il test di failover del database:

    gcloud composer environments database-failover \
        ENVIRONMENT_NAME \
        --location LOCATION
    

    Sostituisci quanto segue:

    • ENVIRONMENT_NAME: il nome del tuo ambiente Cloud Composer.
    • LOCATION: la regione in cui si trova l'ambiente.

    Esempio:

    gcloud composer environments database-failover \
        example-environment \
        --location us-central1
    
  4. Attendi il completamento del test di failover del database. Il processo può richiedere fino a 3 minuti.

  5. Verifica che la zona principale del database del tuo ambiente sia modificata:

    gcloud composer environments fetch-database-properties \
        ENVIRONMENT_NAME \
        --location LOCATION
    
  6. Controlla le metriche di integrità dell'ambiente per assicurarti che l'ambiente sia integro.

  7. Il database del tuo ambiente è pronto per un altro failover quando la metrica di ambiente Database disponibile per il failover (composer.googleapis.com/environment/database/available_for_failover) diventa True. Per ulteriori informazioni sulla visualizzazione delle metriche del tuo ambiente in Cloud Monitoring, consulta Monitorare gli ambienti.

Esegui il test di failover del cluster nel tuo ambiente

Puoi eseguire un test di failover per il cluster del tuo ambiente, che simula un'interruzione di zona. Ad esempio, puoi eseguire questa operazione per misurare il tempo impiegato dal tuo ambiente per passare a un'altra zona.

Verifica che l'ambiente sia integro

Prima di iniziare il test, assicurati che il tuo ambiente sia integro.

Configura le credenziali per il cluster del tuo ambiente

Per ottenere le credenziali del cluster:

  1. Nella console Google Cloud, vai alla pagina Ambienti.

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Viene visualizzata la pagina Dettagli ambiente.

  3. Vai alla scheda Configurazione dell'ambiente.

  4. Fai clic su Visualizza i dettagli del cluster.

  5. Fai clic su Connetti.

  6. Copia ed esegui il comando Google Cloud CLI visualizzato.

    Ad esempio:

    gcloud container clusters get-credentials \
      us-central1-exam-db23ee12-gke \
      --region us-central1 \
      --project example-project
    

Ispeziona il cluster del tuo ambiente

Controlla le zone e i nodi in cui vengono eseguiti i carichi di lavoro nel cluster del tuo ambiente. Potrai utilizzare queste informazioni per simulare un'interruzione a livello di zona in un secondo momento. Puoi anche eseguire di nuovo questi comandi mentre esegui il test di failover per vedere in che modo il cluster del tuo ambiente esegue il failover.

  1. Controlla nodi e zone:

    kubectl get nodes \
      -o=custom-columns=NAME:.metadata.name,NODE:.metadata.labels.topology\\.gke\\.io/zone
    
  2. Controlla i pod:

    kubectl get pods --all-namespaces \
    -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName \
    --field-selector metadata.namespace!=kube-system
    
  3. Visualizza informazioni più dettagliate sui pod:

    kubectl get pods --all-namespaces -o wide \
    --field-selector metadata.namespace!=kube-system
    

Svuota i nodi

Scegli una zona in cui vuoi simulare un'interruzione. Se esegui il test di failover del cluster insieme al test di failover del database, ti consigliamo di scegliere la zona principale dell'istanza Cloud SQL ad alta disponibilità del tuo ambiente. Ad esempio, se l'istanza Cloud SQL principale viene eseguita in us-central1-a, puoi simulare un'interruzione nell'intera zona us-central1-a eseguendo prima il test di failover del database e poi il test di failover del cluster in us-central1-a.

Il seguente comando simula un insieme di nodi che diventano non disponibili in una zona specifica. Rimuove forzatamente i pod dai nodi nella zona specificata e impedisce di ripianificare i pod su questi nodi. Poiché i nuovi pod non possono essere pianificati, al cluster vengono aggiunti nuovi nodi.

Questo comando non influisce sui carichi di lavoro eseguiti nello spazio dei nomi composer-system. Potresti visualizzare messaggi di errore correlati nell'output comando. Ciò non influisce sul test di failover. I nodi esistenti nella zona selezionata sono comunque contrassegnati come non pianificabili.

Per simulare un errore di una zona del cluster nella zona selezionata:

kubectl get nodes -o name -l "topology.gke.io/zone=ZONE" | \
xargs kubectl drain \
--ignore-daemonsets --delete-emptydir-data --force --disable-eviction

Sostituisci quanto segue:

  • ZONE: la zona in cui vuoi simulare un errore della zona del cluster.

Controlla le metriche di ambiente

Metriche di ambiente durante un'interruzione simulata della zona
Figura 1. Metriche di ambiente durante un'interruzione simulata della zona (fai clic per ingrandire)
  1. Nella console Google Cloud, vai alla pagina Ambienti.

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Viene visualizzata la pagina Dettagli ambiente.

  3. Vai alla scheda Monitoring.

  4. Verifica che le metriche seguenti siano "verdi" durante l'operazione di failover o rimangano lo stato "rosso" per alcuni minuti al massimo.

    • Integrità dell'ambiente
    • Heartbeat dello scheduler
    • Integrità del server web
    • Integrità del database
    • Worker attivi
    • Scheduler attivi
    • Server web attivi
    • Attivatori attivi

    Tieni presente che l'interruzione simulata è contrassegnata come "Operazione di manutenzione del cluster".

  5. Non devi eseguire altre azioni per restituire il cluster dell'ambiente all'idoneità al failover dopo il test. Durante il test, il cluster dell'ambiente aggiunge automaticamente nuovi nodi che sostituiscono quelli interessati dall'interruzione simulata.

Passaggi successivi