Migrazione degli ambienti a Managed Airflow (Gen 2) (da Airflow 2) utilizzando gli snapshot

Managed Airflow (terza generazione) | Managed Airflow (seconda generazione) | Managed Airflow (prima generazione legacy)

Questa pagina spiega come trasferire DAG, dati e configurazione dagli ambienti Airflow 2 e Managed Airflow (prima generazione legacy) esistenti ad Airflow 2 e Managed Airflow (seconda generazione).

Questa guida alla migrazione utilizza la funzionalità Snapshot.

Altre guide alla migrazione

Da A Metodo Guida
Managed Airflow (terza generazione), Airflow 2 Airflow 3, Managed Airflow (terza generazione) Trasferimento manuale affiancato Guida alla migrazione manuale
Managed Airflow (seconda generazione) Managed Airflow (terza generazione) Affiancato, utilizzando lo script di migrazione Guida alla migrazione con script
Managed Airflow (seconda generazione) Managed Airflow (terza generazione) Affiancato, utilizzando gli snapshot Guida alla migrazione con snapshot
Managed Airflow (Legacy Gen 1), Airflow 2 Managed Airflow (terza generazione) Affiancato, utilizzando gli snapshot Guida alla migrazione con snapshot
Managed Airflow (Legacy Gen 1), Airflow 2 Managed Airflow (seconda generazione) Affiancato, utilizzando gli snapshot Questa guida
Managed Airflow (Legacy Gen 1), Airflow 2 Managed Airflow (seconda generazione) Trasferimento manuale affiancato Guida alla migrazione manuale
Managed Airflow (Legacy Gen 1), Airflow 1 Airflow 2, Managed Airflow (seconda generazione) Affiancato, utilizzando gli snapshot Guida alla migrazione con snapshot
Managed Airflow (Legacy Gen 1), Airflow 1 Airflow 2, Managed Airflow (seconda generazione) Trasferimento manuale affiancato Guida alla migrazione manuale
Managed Airflow (Legacy Gen 1), Airflow 1 Managed Airflow (Legacy Gen 1), Airflow 2 Trasferimento manuale affiancato Guida alla migrazione manuale

Prima di iniziare

  • Gli snapshot sono supportati in Managed Airflow (seconda generazione) versione 2.0.9 e successive. Managed Airflow (Legacy Gen 1) supporta il salvataggio degli snapshot dell'ambiente nella versione 1.18.5.

  • Managed Airflow supporta la migrazione affiancata da Managed Airflow (prima generazione legacy) a Managed Airflow (seconda generazione). Non è possibile eseguire l'upgrade in-place da Managed Airflow (prima generazione legacy) a Managed Airflow (seconda generazione).

  • Consulta l'elenco delle differenze tra Managed Airflow (Legacy Gen 1) e Managed Airflow (Gen 2).

  • 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.

  • Per creare 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 conformità alle linee guida di Airflow. 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.

Passaggio 1: metti in pausa i DAG nell'ambiente Airflow gestito (prima generazione legacy)

Per evitare l'esecuzione di DAG duplicati, metti in pausa tutti i DAG nell'ambiente Airflow gestito (prima generazione legacy) prima di salvare lo snapshot.

Puoi utilizzare una delle seguenti opzioni:

  • Nell'interfaccia web di Airflow, vai a DAG e metti in pausa manualmente tutti i DAG.

  • Utilizza lo script composer_dags per mettere in pausa tutti i DAG:

    python3 composer_dags.py --environment COMPOSER_1_ENV \
      --project PROJECT_ID \
      --location COMPOSER_1_LOCATION \
      --operation pause
    

    Sostituisci:

    • COMPOSER_1_ENV con il nome dell'ambiente Airflow gestito (prima generazione legacy).
    • PROJECT_ID con l'ID progetto.
    • COMPOSER_1_LOCATION con la regione in cui si trova l'ambiente.
  • (Versioni di Airflow 2.9.1 e successive) Se si verificano errori di quota durante la messa in pausa di un numero elevato di DAG, puoi utilizzare i seguenti comandi dell'interfaccia a riga di comando di Airflow per mettere in pausa tutti i DAG contemporaneamente:

    gcloud composer environments run COMPOSER_1_ENV dags pause \
      --project PROJECT_ID \
      --location COMPOSER_1_LOCATION \
      -- -y --treat-dag-id-as-regex ".*"
    
  • (Versioni di Airflow precedenti alla 2.9.1) Se si verificano errori di quota durante la messa in pausa di un numero elevato di DAG, è possibile mettere in pausa i DAG utilizzando l' API REST di Airflow. Consulta anche Provare l'API nella documentazione di Airflow.

Passaggio 2: salva lo snapshot dell'ambiente Airflow gestito (prima generazione legacy)

Console

Crea uno snapshot dell'ambiente:

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

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome dell'ambiente Airflow gestito (prima generazione legacy). Si apre la pagina Dettagli ambiente.

  3. Fai clic su Crea snapshot.

  4. Nella finestra di dialogo Crea snapshot, fai clic su Invia. In questa guida, salvi lo snapshot nel bucket dell'ambiente Airflow gestito (prima generazione legacy), ma puoi selezionare una posizione diversa, se vuoi.

  5. Attendi che Managed Airflow crei lo snapshot.

gcloud

  1. Recupera l'URI del bucket dell'ambiente Airflow gestito (prima generazione legacy):

    1. Esegui questo comando:

      gcloud composer environments describe COMPOSER_1_ENV \
          --location COMPOSER_1_LOCATION \
           --format="value(config.dagGcsPrefix)"
      

      Sostituisci:

      • COMPOSER_1_ENV con il nome dell'ambiente Airflow gestito (prima generazione legacy).
      • COMPOSER_1_LOCATION con la regione in cui si trova l'ambiente.
    2. Nell'output, rimuovi la cartella /dags. Il risultato è l'URI del bucket dell'ambiente Airflow gestito (prima generazione legacy).

      Ad esempio, modifica gs://us-central1-example-916807e1-bucket/dags in gs://us-central1-example-916807e1-bucket.

  2. Crea uno snapshot dell'ambiente Airflow gestito (prima generazione legacy):

    gcloud composer environments snapshots save \
      COMPOSER_1_ENV \
      --location COMPOSER_1_LOCATION \
      --snapshot-location "COMPOSER_1_SNAPSHOTS_FOLDER"
    

    Sostituisci:

    • COMPOSER_1_ENV con il nome dell'ambiente Airflow gestito (prima generazione legacy).
    • COMPOSER_1_LOCATION con la regione in cui si trova l'ambiente Airflow gestito (prima generazione legacy).
    • COMPOSER_1_SNAPSHOTS_FOLDER con l'URI del bucket dell'ambiente Airflow gestito (prima generazione legacy). In questa guida, salvi lo snapshot nel bucket dell'ambiente Airflow gestito (prima generazione legacy), ma puoi selezionare una posizione diversa, se vuoi. Se specifichi una posizione personalizzata, i service account di entrambi gli ambienti devono disporre delle autorizzazioni di lettura e scrittura per la posizione specificata.

Passaggio 3: crea un ambiente Airflow gestito (seconda generazione)

Crea un ambiente Airflow gestito (seconda generazione). Puoi iniziare con un preset dell'ambiente che corrisponda alle esigenze di risorse previste e in un secondo momento scalare e ottimizzare ulteriormente l'ambiente.

Non devi specificare gli override della configurazione e le variabili di ambiente, perché li sostituirai in un secondo momento quando caricherai lo snapshot dell'ambiente Airflow gestito (prima generazione legacy).

Passaggio 4: carica lo snapshot nell'ambiente Airflow gestito (seconda generazione)

Console

Per caricare lo snapshot nell'ambiente Airflow gestito (seconda generazione):

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

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome dell'ambiente Airflow gestito (seconda generazione). Si apre la pagina Dettagli ambiente.

  3. Fai clic su Carica snapshot.

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

  5. Seleziona la cartella contenente lo snapshot. Se utilizzi la località predefinita per questa guida, questa cartella si trova nel bucket dell'ambiente Managed Airflow (prima generazione legacy) nella cartella /snapshots e il suo nome è il timestamp dell'operazione di salvataggio dello snapshot. Ad esempio, us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2022-01-05T18-59-00.

  6. Fai clic su Carica e attendi che Managed Airflow carichi lo snapshot.

gcloud

Carica lo snapshot dell'ambiente Airflow gestito (prima generazione legacy) nell'ambiente Airflow gestito (seconda generazione):

gcloud composer environments snapshots load \
  COMPOSER_2_ENV \
  --location COMPOSER_2_LOCATION \
  --snapshot-path "SNAPSHOT_PATH"

Sostituisci:

  • COMPOSER_2_ENV con il nome dell'ambiente Airflow gestito (seconda generazione).
  • COMPOSER_2_LOCATION con la regione in cui si trova l'ambiente Airflow gestito (seconda generazione).
  • SNAPSHOT_PATH con l'URI del bucket dell'ambiente Airflow gestito (prima generazione legacy), seguito dal percorso dello snapshot. Ad esempio, gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

Passaggio 5: riattiva i DAG nell'ambiente Airflow gestito (seconda generazione)

Puoi utilizzare una delle seguenti opzioni:

  • Nell'interfaccia web di Airflow, vai a DAG e riattiva manualmente tutti i DAG uno alla volta.

  • Utilizza lo script composer_dags per riattivare tutti i DAG:

    python3 composer_dags.py --environment COMPOSER_2_ENV \
      --project PROJECT_ID \
      --location COMPOSER_2_LOCATION \
      --operation unpause
    

    Sostituisci:

    • COMPOSER_2_ENV con il nome dell'ambiente Airflow gestito (seconda generazione).
    • PROJECT_ID con l'ID progetto.
    • COMPOSER_2_LOCATION con la regione in cui si trova l'ambiente.
  • (Versioni di Airflow 2.9.1 e successive) Se si verificano errori di quota durante la riattivazione di un numero elevato di DAG, puoi utilizzare i seguenti comandi dell'interfaccia a riga di comando di Airflow per riattivare tutti i DAG contemporaneamente:

    gcloud composer environments run COMPOSER_2_ENV dags unpause \
      --project PROJECT_ID \
      --location COMPOSER_2_LOCATION \
      -- -y --treat-dag-id-as-regex ".*"
    
  • (Versioni di Airflow precedenti alla 2.9.1) Se si verificano errori di quota durante la riattivazione di un numero elevato di DAG, è possibile riattivare i DAG utilizzando l' API REST di Airflow. Consulta anche Provare l'API nella documentazione di Airflow.

Passaggio 6: controlla la presenza di errori nei DAG

  1. Nell'interfaccia web di Airflow, vai a DAG e controlla la presenza di errori di sintassi dei DAG segnalati.

  2. Verifica che l'esecuzione dei DAG sia pianificata all'ora corretta.

  3. Attendi l'esecuzione dei DAG nell'ambiente Airflow gestito (seconda generazione) e verifica se sono andati a buon fine. Se l'esecuzione di un DAG è andata a buon fine, non riattivarla nell'ambiente Airflow gestito (prima generazione legacy); in caso contrario, nell'ambiente Airflow gestito (prima generazione legacy) verrà eseguito un DAG per la stessa data e ora.

  4. Se l'esecuzione di un DAG specifico non riesce, prova a risolvere il problema del DAG finché non viene eseguito correttamente in Managed Airflow (seconda generazione).

Passaggio 7: monitora l'ambiente Airflow gestito (seconda generazione)

Dopo aver trasferito tutti i DAG e la configurazione all'ambiente Airflow gestito (seconda generazione), monitoralo per verificare la presenza di potenziali problemi, esecuzioni di DAG non riuscite e l'integrità generale dell'ambiente.

Se l'ambiente Airflow gestito (seconda generazione) viene eseguito senza problemi per un periodo di tempo sufficiente, valuta la possibilità di eliminare l'ambiente Airflow gestito (prima generazione legacy).

Passaggi successivi