Salvare e caricare gli snapshot dell'ambiente

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Questa pagina spiega come salvare e caricare lo stato dell'ambiente utilizzando gli snapshot dell'ambiente.

Puoi configurare l'ambiente in modo da salvare automaticamente gli snapshot. Per ulteriori informazioni, consulta Configurare gli snapshot pianificati.

Informazioni sugli snapshot dell'ambiente

Gli snapshot dell'ambiente memorizzano lo stato dell'ambiente. Puoi salvare e caricare gli snapshot dell'ambiente on demand.

Puoi utilizzare gli snapshot per:

  • Ripristina lo stato precedente dell'ambiente. Crea backup dell'ambiente utilizzando gli snapshot, quindi carica uno degli snapshot per ripristinarlo. Ad esempio, puoi eseguire il rollback di un'operazione di aggiornamento che installa i pacchetti PyPI o sostituisce le opzioni di configurazione di Airflow, anche dopo l'aggiornamento dell'ambiente.

  • Esegui upgrade affiancati e ambienti di copia. Crea uno snapshot di un ambiente esistente, crea un nuovo ambiente che utilizzi la stessa versione o una versione successiva di Cloud Composer, quindi applica lo snapshot a questo nuovo ambiente. Questa procedura è simile alla migrazione. Assicurati di mettere in pausa i DAG prima di eseguire lo snapshot per evitare esecuzioni duplicate dei DAG.

Come vengono archiviati gli snapshot

Uno snapshot dell'ambiente è un insieme di file che descrivono lo stato dell'ambiente e archiviano il backup dei dati dell'ambiente.

Puoi creare più snapshot del tuo ambiente. Gli snapshot dell'ambiente non sono incrementali. Puoi utilizzare qualsiasi istantanea indipendentemente dalle altre.

Cloud Composer non elimina gli snapshot quando elimini l'ambiente.

Per impostazione predefinita, Cloud Composer archivia gli snapshot nella cartella snapshots/ nel bucket dell'ambiente. Puoi anche specificare una posizione personalizzata quando crei uno snapshot.

Sebbene l'interfaccia utente di Cloud Storage mostri i dati come cartelle per praticità, i bucket funzionano in una struttura di file aperti. Questo non cambia il modo in cui lavori con il salvataggio e il caricamento degli snapshot nella console Google Cloud, ma tienilo presente quando esegui operazioni direttamente sui file nel tuo bucket. Per ulteriori informazioni, consulta Spazio dei nomi degli oggetti.

Considerazioni sulla sicurezza per gli snapshot

Per ridurre questo rischio per la sicurezza, puoi archiviare le informazioni sensibili utilizzate dai DAG di Airflow, come chiavi o password, in Secret Manager. Per ulteriori informazioni, consulta Configurare Secret Manager per il tuo ambiente.

Assicurati di controllare le autorizzazioni di sicurezza per il bucket del tuo ambiente. Se memorizzi gli snapshot dell'ambiente in un bucket personalizzato, assicurati che le autorizzazioni di accesso siano configurate correttamente nel progetto. Quando assegni le autorizzazioni, assicurati che l'account di servizio dell'ambiente disponi di autorizzazioni sufficienti per salvare e caricare gli snapshot dal bucket.

Quali dati vengono salvati negli istantanei

Cloud Composer salva i seguenti dati negli snapshot:

  • Override della configurazione di Airflow.
  • Variabili di ambiente.
  • Elenco di pacchetti PyPI personalizzati, come requisiti.
  • Un backup del database Airflow, inclusi gli stati delle attività eseguite e la cronologia delle esecuzioni di DAG.
  • Un backup delle cartelle /dags, /data e /plugins dal bucket dell'ambiente.
  • Chiave Fernet dell'ambiente.
  • Altre informazioni sulla configurazione dell'ambiente, ad esempio la scala e i parametri di rendimento dell'ambiente. Cloud Composer non utilizza queste informazioni quando carica gli snapshot.

Quali dati vengono caricati dagli snapshot

Cloud Composer carica i seguenti dati dagli snapshot:

  • Override della configurazione di Airflow.
  • Variabili di ambiente.
  • Pacchetti PyPI personalizzati (a meno che tu non scelga di saltarne l'installazione).

  • I contenuti del database Airflow, inclusi gli stati delle attività eseguite e la cronologia delle esecuzioni dei DAG.

  • I contenuti delle cartelle /dags, /data e /plugins dello snapshot vengono caricati nel bucket dell'ambiente.

  • La chiave Fernet dello snapshot viene utilizzata per criptare nuovamente i dati dello snapshot con la chiave Fernet dell'ambiente. La chiave Fernet dell'ambiente rimane invariata.

Sebbene Cloud Composer memorizzi alcune informazioni sulla configurazione dell'ambiente negli snapshot, queste non vengono utilizzate durante il caricamento degli snapshot. I seguenti parametri dell'ambiente non cambiano quando carichi uno snapshot:

  • Configurazione dell'ambiente, ad esempio parametri di scalabilità e prestazioni dell'ambiente.
  • Configurazione di rete dell'ambiente.
  • Contenuti del bucket dell'ambiente al di fuori delle cartelle /dags, /data e /plugins.
  • Etichette dell'ambiente.

Eventuali impostazioni applicate nell'infrastruttura Cloud Composer senza utilizzare l'API Cloud Composer potrebbero andare perse quando carichi un snapshot.

Informazioni sulle operazioni parzialmente completate

Quando carichi uno snapshot, l'operazione può essere riuscita, non riuscita o parzialmente completata:

  • Le operazioni riuscite caricano tutti i dati dallo snapshot.
  • Le operazioni non riuscite non introducono modifiche.
  • Le operazioni completate parzialmente caricano un sottoinsieme di dati dall'istantanea. Queste operazioni vengono segnalate come non riuscite, ma il messaggio di errore indica quali dati sono stati caricati correttamente. Ad esempio, se i pacchetti PyPI sono installati, ma le sostituzioni delle opzioni di configurazione di Airflow non sono andate a buon fine, il messaggio di errore lo indica.

Per un'operazione parzialmente completata, puoi provare a caricare di nuovo lo stesso snapshot. Cloud Composer ignora i passaggi che sono andati a buon fine nel tentativo precedente. Ad esempio, se un'operazione non è riuscita a causa di un timeout, ma il database è stato caricato correttamente, il tentativo successivo non carica di nuovo il database.

Prima di iniziare

  • Gli snapshot sono supportati in Cloud Composer 2 versione 2.0.9 e successive. Cloud Composer 1 supporta il salvataggio degli snapshot dell'ambiente nelle versioni 1.18.5 e successive.

  • Gli snapshot non creano un ambiente. Se vuoi caricare uno snapshot da un ambiente a un altro, devi prima creare un nuovo ambiente e poi caricare lo snapshot al suo interno.

  • Non puoi caricare snapshot in ambienti in stato di errore. Non è possibile correggere questi ambienti caricando uno snapshot. Puoi comunque caricare uno snapshot esistente in un nuovo ambiente.

  • Puoi caricare gli snapshot solo nella stessa versione di Airflow o in una successiva. Ad esempio, non puoi caricare un'istantanea da Airflow 2.9.3 ad Airflow 2.7.3.

  • È possibile caricare uno snapshot da una build Airflow successiva della stessa versione Airflow in un ambiente con una build precedente. Ad esempio, puoi caricare airflow-2.9.3-build.6 in airflow-2.9.3-build.5. Ti consigliamo di caricare gli snapshot nelle build precedenti solo se necessario.

  • La dimensione massima del database Airflow che supporta gli snapshot è di 20 GB. Se il database del tuo ambiente occupa più di 20 GB, riduci le dimensioni del database Airflow prima di salvare uno snapshot.

  • Per creare gli snapshot, il numero totale di oggetti nelle cartelle /dags,/plugins e /data nel bucket dell'ambiente deve essere inferiore a 100.000.

  • Se utilizzi il meccanismo XCom per trasferire i file, assicurati di [utilizzarlo in base alle linee guida di Airflow][ext-airflow-xcom-backend]. Il trasferimento di file di grandi dimensioni o di un numero elevato di file utilizzando XCom influisce sul rendimento del database Airflow e può causare errori durante il caricamento degli snapshot o l'upgrade dell'ambiente. Valuta la possibilità di utilizzare alternative come Cloud Storage per trasferire grandi volumi di dati.

  • La lunghezza massima del nome di un oggetto nel bucket dell'ambiente non deve essere superiore a 1024 simboli. In caso contrario, non è possibile creare snapshot.

  • Se salvi gli snapshot in una posizione esterna al bucket del tuo ambiente, l'account di servizio del tuo ambiente deve disporre delle autorizzazioni di lettura e scrittura per la posizione specificata. Ad esempio, il ruolo Amministratore oggetti archiviazione dispone di queste autorizzazioni. Puoi applicarlo a un progetto o a un bucket specifico.

  • La creazione e l'archiviazione degli snapshot comporta costi aggiuntivi correlati a Cloud Storage. Per ulteriori informazioni, vedi Prezzi.

Salvare uno snapshot di ambiente

Cloud Composer salva gli snapshot dell'ambiente in una sottocartella rispetto alla cartella specificata. Il nome della cartella contiene l'ID progetto, la posizione dell'ambiente, il nome dell'ambiente e il timestamp del salvataggio dello snapshot. Ad esempio: /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

Console

Per creare uno snapshot dell'ambiente:

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

    Vai ad Ambienti

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

  3. Fai clic su Salva snapshot.

  4. Nella finestra di dialogo Salva snapshot, seleziona la posizione in cui archiviare lo snapshot:

    • Per archiviare lo snapshot nella cartella /snapshots del bucket dell'ambiente, seleziona Utilizza la cartella dello snapshot nel bucket di ambiente (impostazione predefinita).

    • Per archiviare lo snapshot nella cartella personalizzata, seleziona Usa una cartella personalizzata in un altro bucket, quindi specifica una posizione.

  5. Fai clic su Salva.

gcloud

Il comando gcloud composer environments snapshots save salva un snapshot dell'ambiente.

  • L'argomento snapshot-location specifica una cartella in cui viene salvata la snapshot. Per impostazione predefinita, gli snapshot vengono salvati nella cartella /snapshots nel bucket del tuo ambiente. Ad esempio, gs://us-central1-example-916807e1-bucket/snapshots. Puoi anche specificare qualsiasi altra cartella.

Per salvare uno snapshot dell'ambiente, esegui:

gcloud composer environments snapshots save \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --snapshot-location "SNAPSHOTS_FOLDER"

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente.
  • (Facoltativo) SNAPSHOTS_FOLDER con l'URI di una cartella del bucket in cui archiviare lo snapshot. Se ometti questo argomento, Cloud Composer salva lo snapshot nella cartella /snapshots del bucket dell'ambiente.

L'esempio seguente utilizza la posizione predefinita:

gcloud composer environments snapshots save \
  example-environment \
  --location us-central1

Nell'esempio seguente il salvataggio avviene in una cartella personalizzata:

gcloud composer environments snapshots save \
  example-environment \
  --location us-central1 \
  --snapshot-location "gs://example-bucket/environment_snapshots"

API

  1. Costruisci una richiesta API environments.saveSnapshot.

  2. Nel corpo della richiesta, nel campo snapshotLocation, specifica la cartella in cui vuoi salvare lo snapshot.

{
  "snapshotLocation": "SNAPSHOTS_FOLDER"
}

Sostituisci:

  • SNAPSHOTS_FOLDER con l'URI di una cartella del bucket in cui memorizzare lo snapshot.

Esempio:

// POST https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment:saveSnapshot

{
  "snapshotLocation": "gs://us-central1-example-916807e1-bucket/snapshots"
}

Terraform

Non è possibile salvare e caricare gli snapshot dell'ambiente da Terraform.

Il salvataggio e il caricamento degli snapshot sono azioni eseguite in un ambiente e gli snapshot risultanti non fanno parte della definizione di un ambiente. Poiché Terraform gestisce solo la configurazione dell'ambiente Cloud Composer, non puoi salvare o caricare gli snapshot dell'ambiente.

Carica uno snapshot dell'ambiente

Considera la seguente situazione. Ad esempio, se è attivata la funzionalità di recupero e Airflow esegue un DAG in base a una pianificazione tra il momento in cui è stato creato lo snapshot e il momento in cui è stato caricato. In questo caso, dopo aver caricato lo snapshot, Airflow non ha informazioni sulla corsa del DAG che si è verificata, quindi esegue di nuovo il DAG per la stessa ora e gli stessi dati.

Come altro esempio, prendiamo in considerazione un DAG che viene eseguito secondo una pianificazione giornaliera. Acquisisci uno snapshot, poi Airflow esegue questo DAG e dopo carichi lo snapshot nello stesso giorno. In questo caso, Airflow esegue di nuovo il DAG, anche se il recupero è disattivato.

Console

Per caricare uno snapshot nel tuo ambiente:

  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 dell'ambiente.

  3. Fai clic su Carica snapshot.

  4. Nella finestra di dialogo Carica snapshot, fai clic su Sfoglia.

  5. Seleziona una cartella in cui archiviare lo snapshot. Il nome della cartella elenca l'ID del progetto, la posizione dell'ambiente e il timestamp del salvataggio dello snapshot. Ad esempio, /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

  6. (Facoltativo) Per saltare l'installazione dei pacchetti PyPI personalizzati dallo snapshot, seleziona Ignora installazione dei pacchetti PyPI. Se carichi uno snapshot di un ambiente con pacchetti PyPI personalizzati installati, Cloud Composer non li installa.

  7. Fai clic su Carica e attendi che Cloud Composer carichi lo snapshot.

gcloud

Il comando gcloud composer environments snapshots load carica uno snapshot nell'ambiente.

  • L'argomento --snapshot-path specifica una cartella in cui si trova lo snapshot.

    Il nome della cartella elenca l'ID del progetto, la posizione dell'ambiente e il timestamp del salvataggio dello snapshot. Ad esempio, gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

  • (Facoltativo) L'argomento --skip-pypi-packages-installation ignora l'installazione dei pacchetti PyPI personalizzati dallo snapshot. Se carichi uno snapshot di un ambiente con pacchetti PyPI personalizzati installati, Cloud Composer non li installa.

gcloud composer environments snapshots load \
  DESTINATION_ENVIRONMENT_NAME \
  --location LOCATION \
  --snapshot-path "SNAPSHOT_PATH"

Sostituisci:

  • DESTINATION_ENVIRONMENT_NAME con il nome dell'ambiente in cui vuoi caricare lo snapshot.
  • LOCATION con la regione in cui si trova l'ambiente.
  • SNAPSHOT_PATH con l'URI di un bucket, seguito dal percorso dello snapshot.

Esempio:

gcloud composer environments snapshots load \
  example-environment \
  --location us-central1 \
  --snapshot-path "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00"

API

  1. Costruisci una richiesta API environments.loadSnapshot.

  2. Nel corpo della richiesta, nel campo snapshotPath, specifica l'URI di un bucket, seguito dal percorso dello snapshot. Il nome della cartella elenca l'ID del progetto, la posizione dell'ambiente e il timestamp del salvataggio dello snapshot. Ad esempio, gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

  3. (Facoltativo) Nel corpo della richiesta, nel campo skipPypiPackagesInstallation specifica se Cloud Composer deve saltare l'installazione dei pacchetti PyPI personalizzati dallo snapshot. Se carichi uno snapshot di un ambiente con pacchetti PyPI personalizzati installati, Cloud Composer non li installa.

    Questo campo è facoltativo. Se ometti questo campo, Cloud Composer installa i pacchetti PyPI dallo snapshot.

{
  "snapshotPath": "SNAPSHOT_PATH"
}

Sostituisci:

  • SNAPSHOT_PATH con l'URI di una cartella del bucket in cui memorizzare lo snapshot.

Esempio:

// POST https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment:loadSnapshot

{
  "snapshotPath": "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00",
  "skipPypiPackagesInstallation": "False"
}

Terraform

Non è possibile salvare e caricare gli snapshot dell'ambiente utilizzando Terraform.

Il salvataggio e il caricamento degli snapshot sono azioni eseguite in un ambiente e gli snapshot risultanti non fanno parte della definizione di un ambiente. Poiché Terraform gestisce solo la configurazione dell'ambiente Cloud Composer, non puoi salvare o caricare gli snapshot dell'ambiente.

Passaggi successivi