Esegui test di failover per ambienti altamente resilienti

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

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

I test di failover per l'ambiente simulano l'interruzione completa di una zona in un data center. In uno scenario di questo tipo, si verifica un'interruzione del servizio potrebbe verificarsi un'interruzione del servizio di un database contemporaneamente. Eseguendo i due test di failover, puoi monitorare le prestazioni dell'ambiente altamente resiliente un failover e verificane l'impatto sui DAG e sulle attività.

Prima di iniziare

  • Per eseguire i test di failover, l'account deve disporre dei ruoli e delle autorizzazioni seguenti:

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

    • Amministratore cluster Kubernetes Engine (roles/container.clusterAdmin) per eseguire comandi kubectl sul cluster dell'ambiente. Come puoi eseguire il provisioning Ruoli RBAC di Kubernetes direttamente in con GKE.

  • Se utilizzi reti autorizzate e eseguire comandi kubectl da una macchina in grado di accedere Endpoint del piano di controllo del cluster GKE. In base a come configuri l'accesso all'endpoint del piano di controllo dell'ambiente, puoi utilizzare diverse opzioni. Per ulteriori informazioni, vedi Esecuzione di comandi su un ambiente IP privato.

Verifica che il tuo ambiente sia integro

Assicurati di eseguire i test di failover del cluster del database e dell'ambiente solo su 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 dell'ambiente. Si apre 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 del servizio a livello di zona, tramite un comando Google Cloud CLI. Ad esempio, potresti voler puoi farlo per misurare la quantità di tempo necessaria per il 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 ai 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 salute dell'ambiente per assicurarti il tuo ambiente sia integro.

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

Esegui il test di failover del cluster del tuo ambiente

Puoi eseguire un test di failover per il cluster del tuo ambiente, simula un'interruzione a livello di zona. Ad esempio, potresti voler misurare il tempo necessario al tuo ambiente per passare a un'altra zona.

Verifica che il tuo 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 dell'ambiente. Si apre 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 dell'ambiente

Controlla le zone e i nodi in cui vengono eseguiti i carichi di lavoro nel cluster dell'ambiente. Potrai utilizzare queste informazioni per simulare un'interruzione del servizio a livello di zona in un secondo momento. Puoi anche eseguire questi comandi di nuovo durante l'esecuzione del test di failover per vedere cluster dell'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
    

Nodi di drenaggio

Scegli una zona in cui vuoi simulare un'interruzione del servizio. Se esegui il cluster il test di failover insieme al test di failover del database, potresti voler scegliere la zona principale un'istanza Cloud SQL a disponibilità elevata. 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 il test di failover del database e poi il test di failover us-central1-a.

Il seguente comando simula un set di nodi che non sono più disponibili in un una zona specifica. Rimuove con forza i pod dai nodi nella zona specificata impedisce la ripianificazione dei pod su questi nodi. Poiché i nuovi pod non possono vengono aggiunti nuovi nodi al cluster.

Questo comando non influisce sui carichi di lavoro eseguiti nell'composer-system nello spazio dei nomi. Potresti visualizzare messaggi di errore correlati nell'output comando. Questo non influisce sul test di failover. I nodi esistenti nella zona selezionata sono ancora 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 di una zona simulata
Figura 1. Metriche di ambiente durante l'interruzione di una zona simulata (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 dell'ambiente. Si apre la pagina Dettagli ambiente.

  3. Vai alla scheda Monitoring.

  4. Verifica che le seguenti metriche siano verdi durante il failover operativa o rimanere il "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
    • Trigger attivi

    Tieni presente che l'interruzione simulata è contrassegnata come "Manutenzione del cluster" operativa".

  5. Non devi eseguire altre azioni per restituire l'infrastruttura per l'idoneità al failover dopo il test. Durante il test, aggiunge automaticamente nuovi nodi che sostituiscono quelli interessata dall'interruzione simulata.

Passaggi successivi