Ripristino di emergenza con snapshot di ambiente

Cloud Composer 1 | Cloud Composer 2

Questa pagina descrive come utilizzare gli snapshot di ambiente per il ripristino di emergenza.

Definizioni

Questa guida utilizza le seguenti definizioni:

  • Disaster è un evento in cui Cloud Composer o altri componenti essenziali per il funzionamento dell'ambiente non sono disponibili. Questo evento richiede un failover a un'altra regione e a diversi ambienti Cloud Composer. La causa di una calamità può essere naturale o provocata dall'uomo, compresi i tempi di inattività delle regioni di Google Cloud e le interruzioni della tua infrastruttura.
  • Il ripristino di emergenza (RE), nel contesto di Cloud Composer, è un processo di ripristino dell'operazione dell'ambiente dopo un'emergenza. Il processo prevede la nuova creazione dell'ambiente, possibilmente in un'altra regione. Per ulteriori informazioni sul ripristino di emergenza, consulta la Guida alla pianificazione del ripristino di emergenza.
  • L'ambiente principale è un ambiente Cloud Composer per il quale vuoi abilitare una funzionalità di RE.
  • L'ambiente di failover è un ambiente Cloud Composer progettato per assumere il controllo delle attività dall'ambiente principale.
  • Lo scenario di ripristino di emergenza a caldo è una variante del ripristino di emergenza, in cui si utilizza un ambiente di failover in standby, creato prima che si verifichi un'emergenza.
  • Lo scenario di ripristino di emergenza è una variante del ripristino di emergenza, in cui viene creato un ambiente di failover dopo un'emergenza.
  • Il RE tra regioni è una variante del ripristino di emergenza a freddo o a caldo in cui l'ambiente principale e l'ambiente di failover si trovano in regioni diverse.

Informazioni sulla procedura di ripristino di emergenza

La procedura di ripristino di emergenza risolve il problema quando l'ambiente principale diventa non operativo (non funzionante o in altro modo non accessibile) a causa di un'emergenza.

Questa procedura presuppone che il tuo ambiente principale non venga risolto in loco per far fronte alla situazione di emergenza. Crea invece un secondo ambiente (failover) affiancato. Questo ambiente opera invece dell'ambiente principale. In una fase successiva, potresti decidere di tornare all'ambiente principale o di continuare a utilizzare l'ambiente di failover.

Poiché la procedura utilizza un ambiente di failover, verranno introdotte modifiche quando passi dall'ambiente principale. Le modifiche tra l'ambiente principale e l'ambiente di failover includono (l'elenco non è completo):

  • L'URL del server web sarà diverso. Questo modifica l'indirizzo della UI di Airflow e dell'endpoint API REST di Airflow.

  • L'URL del bucket dell'ambiente sarà diverso.

  • Potrebbe essere necessario modificare la configurazione delle autorizzazioni di accesso e di rete.

Se utilizzi lo scenario di RE attivo, conosci in anticipo i valori del server web, gli indirizzi dei bucket dell'ambiente e la configurazione di rete.

Prima di iniziare

  • Cloud Composer supporta gli snapshot pianificati 2.0.32 e versioni successive. Gli snapshot di ambiente sono supportati nella versione 2.0.9 e successive.

Panoramica della preparazione

Entrambi gli scenari di RE includono i seguenti passaggi di preparazione:

  1. Crea un ambiente di failover.

    • Nello scenario di RE a caldo, mantieni disponibile questo ambiente.
    • Nello scenario di RE a freddo, crei questo ambiente solo per testare la procedura di ripristino di emergenza. Dopo aver completato la preparazione, elimini questo ambiente e lo crei di nuovo dopo che si è verificata un'emergenza.
  2. Crea un bucket per gli snapshot.

    • Il bucket deve essere disponibile nella regione di RE. Per il RE tra regioni, il bucket di snapshot deve trovarsi in più regioni o in una regione diversa rispetto all'ambiente principale.

    • Verifica che i DAG possano accedere alle risorse di regione.

  3. Configura la manutenzione del database.

  4. Configurare gli snapshot programmati.

  5. Verifica la procedura di ripristino di emergenza.

Panoramica del ripristino di emergenza

Dopo un disastro:

  1. (Solo RE freddo) Crea un ambiente di failover.
  2. Se possibile, interrompi l'esecuzione dei DAG per l'ambiente principale.
  3. Carica uno snapshot dal bucket di snapshot all'ambiente di failover.
  4. Se necessario, regola la configurazione dell'ambiente di failover.
  5. Decidi cosa fare con l'ambiente principale.

Passaggi di preparazione

Segui i passaggi descritti di seguito per configurare il ripristino di emergenza per il tuo ambiente.

Crea un ambiente di failover

Crea un ambiente che funga da ambiente di failover.

Segui queste linee guida:

  • L'ambiente primario e di failover devono utilizzare la stessa versione di Cloud Composer e Airflow.

  • Nello scenario di RE in modalità tiepida, assicurati di aggiornare ed eseguire l'upgrade di entrambi gli ambienti in sincronizzazione. Ad esempio, se esegui l'upgrade dell'ambiente principale a una versione successiva di Cloud Composer o installi pacchetti PyPI, anche l'ambiente di failover deve avere queste modifiche.

  • Ti consigliamo di creare l'ambiente di failover in una regione diversa dall'ambiente principale. Di conseguenza, è possibile coprire una gamma più ampia di possibili scenari di disastro, ad esempio una calamità che influisce sulla disponibilità dell'intera regione.

  • Ti consigliamo di utilizzare Terraform per creare ambienti primari e di failover, in modo che entrambi abbiano una configurazione coerente. Assicurati che le definizioni di Terraform per gli ambienti primari e di failover siano sincronizzate.

  • Si consiglia di configurare la configurazione dell'ambiente di failover (ad esempio dimensione dell'ambiente, numero di scheduler e autorizzazioni IAM) per renderla conforme alla configurazione dell'ambiente principale. Le autorizzazioni IAM per entrambi gli ambienti devono concedere l'accesso appropriato a utenti e snapshot.

Controlla la disponibilità delle risorse

I DAG possono operare su risorse esterne e l'accesso a queste risorse potrebbe dipendere dalla configurazione dell'ambiente (ad esempio le autorizzazioni concesse all'account di servizio, alla configurazione di rete o al progetto dell'ambiente). Assicurati che tali risorse siano disponibili nell'ambiente di failover.

Un ambiente potrebbe interagire con alcune risorse esterne tramite connessioni archiviate in Airflow. Controlla se queste risorse devono essere regolate nell'ambiente di failover rispetto all'ambiente principale.

Crea un bucket di archiviazione per gli snapshot

Crea un nuovo bucket di archiviazione per gli snapshot di ambiente. Non utilizzare i bucket di ambiente per il ripristino di emergenza, poiché la configurazione del criterio di conservazione e del ciclo di vita viene applicata a livello di bucket.

Assicurati che questo bucket di archiviazione disponga di autorizzazioni IAM, criteri di conservazione e configurazione del ciclo di vita impostati in modo da impedire l'eliminazione accidentale o l'accesso non autorizzato. Per ulteriori informazioni sulla configurazione di un bucket per gli snapshot, consulta Configurazione degli snapshot pianificati.

Puoi:

  • Crea un bucket in un'altra regione.
  • Creare un bucket su più regioni.

Configura manutenzione DB

Riduci le dimensioni del database di metadati Airflow eseguendo il DAG di manutenzione del database. In questo modo il processo di salvataggio e caricamento degli snapshot è più veloce. Il database di metadati Airflow deve avere meno di 20 GB di dati per supportare gli snapshot.

Configurare gli snapshot pianificati

Configura gli snapshot pianificati per l'ambiente principale.

È possibile creare snapshot solo in un ambiente integro, quindi devono essere salvati prima che si verifichi l'emergenza.

Per ulteriori informazioni sul funzionamento degli snapshot, consulta Salvare e caricare gli snapshot di ambiente. Consulta la sezione Salvare uno snapshot di ambiente della documentazione per informazioni su dove trovare gli snapshot salvati.

(Facoltativo) Configura il monitoraggio per le operazioni di snapshot pianificate

Per gli snapshot pianificati con una frequenza di almeno una volta ogni 12 ore, puoi utilizzare Cloud Monitoring per ricevere un avviso quando uno snapshot non viene creato automaticamente.

Per pianificazioni di frequenza inferiore, puoi utilizzare Google Cloud CLI per verificare i risultati delle operazioni con snapshot. Vedi Verificare le operazioni di salvataggio degli snapshot.

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

    Vai a Monitoring

  2. Nel riquadro di navigazione di Monitoring, seleziona Avvisi.
  3. Se non hai creato i canali di notifica e vuoi ricevere notifiche, fai clic su Modifica canali di notifica e aggiungi i tuoi canali di notifica. Torna alla pagina Avvisi dopo aver aggiunto i tuoi canali.
  4. Nella pagina Avvisi, seleziona Crea criterio.
  5. Per selezionare la metrica, espandi il menu Seleziona una metrica e procedi nel seguente modo:
    1. Per limitare il menu alle voci pertinenti, inserisci Composer Snapshot nella barra dei filtri. Se non viene visualizzato alcun risultato dopo aver filtrato il menu, disattiva l'opzione di attivazione/disattivazione Mostra solo risorse e metriche attive.
    2. Per Tipo di risorsa, seleziona Ambiente Cloud Composer.
    3. Per Categoria di metrica, seleziona Ambiente.
    4. Per Metrica, seleziona Conteggio creazione snapshot.
    5. Seleziona Applica.
  6. Fai clic su Aggiungi filtro e utilizza i menu a discesa per aggiungere i seguenti filtri:
    Filtro Comparatore Valore
    Etichetta della risorsa > ambiente_name = Il nome dell'ambiente in cui vuoi monitorare gli snapshot pianificati.
    Monitora etichetta > risultato = SUCCEEDED
  7. Nella sezione Trasforma i dati, imposta i seguenti attributi:
    • In Finestra temporale continua, seleziona la finestra di monitoraggio per questo avviso. Questo valore influisce sulla configurazione della soglia nel passaggio successivo.

      Valore consigliato per il monitoraggio degli snapshot pianificati: 1 giorno.

    • In Funzione finestra temporale continua, seleziona delta.
  8. Tocca Avanti.
  9. Le impostazioni nella pagina Configura attivatore di avviso determinano quando viene attivato l'avviso. Completa questa pagina con le impostazioni indicate nella tabella seguente.
    Campo Valore
    Condition type Threshold
    Alert trigger Any time series violates
    Threshold position Below threshold
    Threshold value Il numero di snapshot pianificati che prevedi di salvare entro il periodo di tempo configurato come finestra continuativa per l'avviso.

    Calcola questo valore utilizzando la formula seguente:

    (rolling window in hours / schedule frequency in hours) - 1

    Nota: la detrazione di 1 ora nella formula serve per tenere conto delle variazioni dei tempi di completamento degli snapshot. Ciò aiuta a evitare di generare falsi positivi se lo snapshot più recente è ancora in esecuzione durante un controllo di monitoraggio.

    Esempio:
    Se utilizzi la finestra continuativa consigliata di 1 giorno e la frequenza della pianificazione è una volta ogni 2 ore, imposta questo valore su 11 (come nel calcolo: 24 / 2 - 1 = 11).

    Se la pianificazione viene eseguita correttamente, dovresti avere almeno 11 snapshot in un periodo di 24 ore. Se non lo fai, significa che un'operazione di snapshot non è stata completata correttamente e Cloud Monitoring attiva questo avviso.

    Condition name Il nome personalizzato per la condizione.
  10. Tocca Avanti.
  11. (Facoltativo) Per aggiungere notifiche al criterio di avviso, fai clic su Canali di notifica. Nella finestra di dialogo, seleziona uno o più canali di notifica dal menu, quindi fai clic su OK.
  12. (Facoltativo) Aggiorna la Durata chiusura automatica degli incidenti. Questo campo determina quando Monitoring chiude gli incidenti in assenza di dati delle metriche.
  13. (Facoltativo) Fai clic su Documentazione, quindi aggiungi le informazioni che vuoi includere in un messaggio di notifica.
  14. Fai clic su Nome avviso e inserisci un nome per il criterio di avviso.
  15. Fai clic su Crea criterio.
Per ulteriori informazioni, consulta Criteri di avviso.

Testa la procedura di ripristino di emergenza

Assicurati di testare la procedura di ripristino di emergenza dopo averla configurata e poi periodicamente. In questo modo puoi risolvere potenziali problemi che potrebbero influire sull'effettivo processo di ripristino di emergenza.

Nello scenario di RE a freddo, puoi eliminare l'ambiente di failover dopo aver completato il test della procedura di ripristino di emergenza.

Verifica le operazioni di salvataggio degli snapshot

Puoi utilizzare Google Cloud CLI per recuperare l'elenco delle operazioni di salvataggio degli snapshot e verificare se gli snapshot sono pronti per gli scenari di ripristino di emergenza.

Questo metodo è utile se salvi gli snapshot meno spesso di una volta ogni 12 ore. Per verificare gli snapshot salvati con maggiore frequenza, ti consigliamo di configurare gli avvisi di Cloud Monitoring. Vedi Configurare il monitoraggio per le operazioni di snapshot pianificate.

gcloud

Elenca tutte le operazioni relative agli snapshot per un ambiente specifico. Per informazioni complete sui comandi, vedi gcloud Composer Operations list.

gcloud composer operations list \
    --locations LOCATION \
    --filter="metadata.operationType=SAVE_SNAPSHOT AND
    metadata.resource=projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_ID"
    --format yaml

Sostituisci:

  • LOCATIONS con l'elenco degli identificatori della regione in cui si trova l'ambiente
  • PROJECT_ID con l'identificatore del progetto in cui si trova l'ambiente
  • ENVIRONMENT_ID con l'identificatore dell'ambiente in cui vuoi controllare le operazioni relative agli snapshot

Esempio:

gcloud composer operations list \
    --locations us-central1 \
    --filter="metadata.operationType=SAVE_SNAPSHOT AND
    metadata.resource=projects/my-project/locations/us-central1/environments/my-environment"
    --format yaml

Dopo un disastro

Dopo un'emergenza, esegui i passaggi descritti di seguito per ripristinare l'ambiente principale.

(Solo RE freddo) Crea un ambiente di failover

Segui le istruzioni nella sezione Creare un ambiente di failover.

Interrompi l'esecuzione dei DAG per l'ambiente principale

Se possibile, interrompi l'esecuzione dei DAG per l'ambiente principale:

  • Se l'ambiente principale è ancora accessibile, metti in pausa tutti i DAG.
  • Se il bucket dell'ambiente principale è accessibile, sposta tutti i DAG dal bucket dell'ambiente o in una cartella all'esterno di /dags nel bucket dell'ambiente principale.

Carica uno snapshot nell'ambiente di failover

Carica uno snapshot dall'ambiente principale nell'ambiente di failover.

Una volta caricato nell'ambiente di failover, lo snapshot pianifica ed esegue le attività come se nulla fosse stato eseguito dall'ambiente principale dopo la creazione di uno snapshot. Tuttavia, alcune di queste attività potrebbero essere già state eseguite dall'ambiente principale. L'ambiente di failover non consente di riconoscere le attività eseguite dopo la creazione dello snapshot e prima di un'emergenza. Di conseguenza, alcune attività potrebbero essere eseguite due volte (sia nell'ambiente principale sia nell'ambiente di failover). Consigliamo che tutte le attività siano idempotenti e che gli snapshot pianificati vengano creati ogni due ore.

(Se necessario) Regola la configurazione dell'ambiente di failover

In alcuni casi, potresti voler modificare la configurazione dell'ambiente di failover dopo aver caricato lo snapshot dell'ambiente principale nell'ambiente.

Ad esempio, in uno scenario di RE a freddo, potresti dover utilizzare un set diverso di variabili di ambiente Airflow nell'ambiente di failover. Come ulteriore esempio, in uno scenario di RE a caldo, potresti dover concedere le autorizzazioni agli utenti nella UI di Airflow, in modo che possano accedere all'ambiente di failover.

Puoi eseguire queste modifiche manualmente o preparare uno script shell con comandi che modificano la configurazione dell'ambiente di failover eseguendo i comandi gcloud composer environment update.

Decidi cosa fare con l'ambiente principale

Alcune situazioni di emergenza possono verificarsi perché l'ambiente principale non è raggiungibile, ma è ancora operativo o non funziona correttamente. Ad esempio, non puoi accedere all'ambiente principale tramite la rete a causa di un errore dell'infrastruttura. Per fare un altro esempio, l'ambiente opera con alcuni errori o con capacità ridotta, ma alcuni DAG vengono comunque eseguiti.

Se l'ambiente originale è ancora in esecuzione, potrebbe generare costi direttamente correlati a Cloud Composer o ad altri servizi a cui si accede tramite i DAG, anche se un nuovo ambiente è stato creato per sostituzione. Questo ambiente può comunque eseguire alcuni DAG; di conseguenza, alcune operazioni potrebbero essere eseguite due volte: nell'ambiente principale ancora in esecuzione e nell'ambiente di failover dopo il caricamento dello snapshot.

Se l'ambiente principale esiste, ma non funziona correttamente

L'ambiente principale può essere eliminato se tutti i dati pertinenti sono stati recuperati. Ad esempio, potresti voler recuperare dati non inclusi negli snapshot di ambiente, come la configurazione di rete o i contenuti del bucket di ambiente esterni alle cartelle /dags e /plugins.

Se l'ambiente principale diventa nuovamente accessibile e integro

Se l'ambiente principale era inaccessibile solo temporaneamente e poi diventa di nuovo accessibile e integro, puoi scegliere un approccio:

  • Continua a utilizzare l'ambiente di failover.
  • Torna all'ambiente principale.

Per continuare a utilizzare l'ambiente di failover:

  1. Se l'ambiente principale esegue ancora i DAG, mettili in pausa non appena possibile.
  2. Assicurati di recuperare tutti i dati pertinenti, quindi elimina l'ambiente principale.
  3. Ripeti i passaggi di preparazione del RE per l'ambiente di failover, ad esempio la configurazione di snapshot pianificati.

Per tornare all'ambiente principale:

  1. Metti in pausa tutti i DAG nell'ambiente di failover.
  2. Attendi il completamento di tutte le esecuzioni DAG nell'ambiente di failover o arrestale.
  3. Salva uno snapshot dell'ambiente di failover.
  4. Carica questo snapshot nell'ambiente principale.
  5. Riattiva i DAG nell'ambiente principale.
  6. Se necessario, elimina l'ambiente di failover.

Passaggi successivi