Esegui la migrazione degli ambienti a Cloud Composer 2 (da Airflow 2)

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Questa pagina spiega come trasferire DAG, dati e configurazione dagli ambienti Cloud Composer 1 e Airflow 2 esistenti a Cloud Composer 2 e Airflow 2.

Altre guide alla migrazione

Da A Metodo Guida
Cloud Composer 1, Airflow 2 Cloud Composer 2, Airflow 2 Accanto, utilizzando gli snapshot Guida alla migrazione (snapshot)
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Accanto, utilizzando gli snapshot Guida alla migrazione (snapshot)
Cloud Composer 1, Airflow 2 Cloud Composer 2, Airflow 2 Trasferimento manuale affiancato Questa guida (migrazione manuale)
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Trasferimento manuale affiancato Guida alla migrazione manuale
Airflow 1 Airflow 2 Trasferimento manuale affiancato Guida alla migrazione manuale

Prima di iniziare

Passaggio 1: ottieni l'elenco degli override della configurazione, dei pacchetti PyPI personalizzati e delle variabili di ambiente

Console

Visualizza l'elenco degli override della configurazione, dei pacchetti PyPI personalizzati e delle variabili di ambiente del tuo ambiente Cloud Composer 1:

  1. Vai alla pagina Ambienti nella console Google Cloud:

    Vai ad Ambienti

  2. Seleziona il tuo ambiente Cloud Composer 1.

  3. Visualizza le variabili di ambiente nella scheda Variabili di ambiente.

  4. Visualizza le sostituzioni di configurazione nelle schede Override della configurazione Airflow.

  5. Visualizza i pacchetti PyPI personalizzati nella scheda Pacchetti PyPI.

gcloud

Per ottenere l'elenco delle variabili di ambiente, esegui:

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

Per ottenere l'elenco delle sostituzioni della configurazione Airflow dell'ambiente, esegui:

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

Per ottenere l'elenco dei pacchetti PyPI personalizzati, esegui:

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

Sostituisci:

  • COMPOSER_1_ENV con il nome dell'ambiente Cloud Composer 1.
  • COMPOSER_1_LOCATION con la regione in cui si trova l'ambiente Cloud Composer 1.

Terraform

Salta questo passaggio. La configurazione del tuo ambiente Cloud Composer 1 elenca già gli override della configurazione, i pacchetti PyPI personalizzati e le variabili di ambiente per il tuo ambiente.

Passaggio 2: crea un ambiente Cloud Composer 2

In questo passaggio, crea un ambiente Cloud Composer 2. Puoi iniziare con un ambiente preimpostato che corrisponda alle tue richieste di risorse previste e in un secondo momento scalare e ottimizzare ulteriormente l'ambiente.

Console

Crea un ambiente Cloud Composer 2 e specifica le sostituzioni di configurazione e le variabili di ambiente.

In alternativa, puoi eseguire l'override delle configurazioni e delle variabili di ambiente di Airflow dopo aver creato un ambiente.

gcloud

Crea un ambiente Cloud Composer 2 e specifica le sostituzioni di configurazione e le variabili di ambiente.

In alternativa, puoi eseguire l'override delle configurazioni e delle variabili di ambiente di Airflow dopo aver creato un ambiente.

Terraform

Crea un ambiente Cloud Composer 2 in base alla configurazione dell'ambiente Cloud Composer 1:

  1. Copia la configurazione dell'ambiente Cloud Composer 1.
  2. Modifica il nome dell'ambiente.
  3. Utilizza il provider google-beta:

    resource "google_composer_environment" "example_environment_composer_2" {
      provider = google-beta
      # ...
    }
    
  4. Specifica un'immagine Cloud Composer 2 nel blocco config.software_config:

    software_config {
      image_version = "composer-2.11.1-airflow-2.10.2"
      # ...
    }
    
  5. Se non l'hai già fatto, specifica le sostituzioni di configurazione e le variabili di ambiente.

  6. Specifica i pacchetti PyPI personalizzati nel blocco config.software_config.pypi_packages:

    software_config {
    
      # ...
    
      pypi_packages = {
        numpy = ""
        scipy = ">=1.1.0"
      }
    
    }
    

Passaggio 3: installa i pacchetti PyPI nell'ambiente Cloud Composer 2

Dopo aver creato l'ambiente Cloud Composer 2, installa i pacchetti PyPI personalizzati.

Console

  1. Vai alla pagina Ambienti nella console Google Cloud:

    Vai ad Ambienti

  2. Seleziona il tuo ambiente Cloud Composer 2.

  3. Vai alla scheda Pacchetti PyPI e fai clic su Modifica.

  4. Copia i requisiti del pacchetto PyPI dall'ambiente Cloud Composer 1. Fai clic su Salva e attendi che l'ambiente venga aggiornato.

gcloud

  1. Crea un file requirements.txt con l'elenco dei pacchetti PyPI personalizzati:

      numpy
      scipy>=1.1.0
    
  2. Aggiorna l'ambiente e passa il file requirements.txt in :to al comando --update-pypi-packages-from-file:

    gcloud composer environments update COMPOSER_2_ENV \
      --location COMPOSER_2_LOCATION  \
      --update-pypi-packages-from-file requirements.txt
    

    Sostituisci:

    • COMPOSER_2_ENV con il nome del tuo ambiente Cloud Composer 2.
    • COMPOSER_2_LOCATION con la regione in cui si trova l'ambiente Cloud Composer 2.

Terraform

Salta questo passaggio. Hai già installato pacchetti PyPI personalizzati quando hai creato l'ambiente.

Passaggio 4: trasferisci le variabili e i pool

Airflow supporta l'esportazione di variabili e pool in file JSON. Puoi poi importare questi file nel tuo ambiente Cloud Composer 2.

I comandi dell'interfaccia a riga di comando Airflow utilizzati in questo passaggio agiscono sui file locali nei worker Airflow. Per caricare o scaricare i file, utilizza la cartella /data nel bucket Cloud Storage del tuo ambiente. Questa cartella viene sincronizzata con la directory /home/airflow/gcs/data/ nei worker di Airflow. Nei comandi CLI di Airflow, specifica /home/airflow/gcs/data/ nel parametro FILEPATH.

gcloud

  1. Esporta le variabili dall'ambiente Cloud Composer 1:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
         variables export -- /home/airflow/gcs/data/variables.json
    

    Sostituisci:

    • COMPOSER_1_ENV con il nome dell'ambiente Cloud Composer 1.
    • COMPOSER_1_LOCATION con la regione in cui si trova l'ambiente Cloud Composer 1.
  2. Esporta i pool dal tuo ambiente Cloud Composer 1:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
         pools export -- /home/airflow/gcs/data/pools.json
    

    Sostituisci:

    • COMPOSER_1_ENV con il nome dell'ambiente Cloud Composer 1.
    • COMPOSER_1_LOCATION con la regione in cui si trova l'ambiente Cloud Composer 1.
  3. Recupera l'URI del bucket del tuo ambiente Cloud Composer 2.

    1. Esegui questo comando:

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

      Sostituisci:

      • COMPOSER_2_ENV con il nome del tuo ambiente Cloud Composer 2.
      • COMPOSER_2_LOCATION con la regione in cui si trova l'ambiente.
    2. Nell'output, rimuovi la cartella /dags. Il risultato è l'URI del bucket del tuo ambiente Cloud Composer 2.

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

  4. Trasferisci i file JSON con variabili e pool nell'ambiente Cloud Composer 2:

    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION \
        --source=variables.json
    
    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION \
        --source=pools.json
    

    Sostituisci:

    • COMPOSER_2_BUCKET con l'URI del bucket dell'ambiente Cloud Composer 2 ottenuto nel passaggio precedente.
    • COMPOSER_1_ENV con il nome dell'ambiente Cloud Composer 1.
    • COMPOSER_1_LOCATION con la regione in cui si trova l'ambiente Cloud Composer 1.
  5. Importa le variabili e i pool in Cloud Composer 2:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        variables import \
        -- /home/airflow/gcs/data/variables.json
    
    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        pools import \
        -- /home/airflow/gcs/data/pools.json
    
  6. Verifica che le variabili e i pool siano importati:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        variables list
    
    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        pools list
    
  7. Rimuovi i file JSON dai bucket:

    gcloud composer environments storage data delete \
        variables.json \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    
    gcloud composer environments storage data delete \
        pools.json \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    
    gcloud composer environments storage data delete \
        variables.json \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
    gcloud composer environments storage data delete \
        pools.json \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    

Passaggio 5: trasferisci altri dati dal bucket dell'ambiente Cloud Composer 1

Trasferisci i plug-in e altri dati dal bucket dell'ambiente Cloud Composer 1.

gcloud

  1. Trasferisci i plug-in nel tuo ambiente Cloud Composer 2. A tale scopo, esporta i plug-in dal bucket dell'ambiente Cloud Composer 1 nella cartella /plugins del bucket dell'ambiente Cloud Composer 2:

    gcloud composer environments storage plugins export \
        --destination=COMPOSER_2_BUCKET/plugins \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
  2. Verifica che la cartella /plugins sia stata importata correttamente:

    gcloud composer environments storage plugins list \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    
  3. Esporta la cartella /data dall'ambiente Cloud Composer 1 all'ambiente Airflow 2:

    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
  4. Verifica che la cartella /data sia stata importata correttamente:

    gcloud composer environments storage data list \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    

Passaggio 6: trasferisci le connessioni

Questo passaggio spiega come trasferire le connessioni creandole manualmente.

gcloud

  1. Per visualizzare un elenco di connessioni nell'ambiente Cloud Composer 1, esegui:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
        connections list
    
  2. Per creare una nuova connessione nel tuo ambiente Cloud Composer 2, esegui il connectionscomando Airflow CLI tramite gcloud. Ad esempio:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        connections add \
        -- --conn-host postgres.example.com \
        --conn-port 5432 \
        --conn-type postgres \
        --conn-login example_user \
        --conn-password example_password \
        --conn-description "Example connection" \
        example_connection
    

Passaggio 7: trasferisci gli account utente

Questo passaggio spiega come trasferire gli utenti creandoli manualmente.

UI di Airflow

  1. Per visualizzare un elenco di utenti nel tuo ambiente Cloud Composer 1:

    1. Apri l'interfaccia web di Airflow per il tuo ambiente Cloud Composer 1.

    2. Vai a Sicurezza > Elenca utenti.

  2. Per creare un utente nel tuo ambiente Cloud Composer 2:

    1. Apri l'interfaccia web di Airflow per il tuo ambiente Cloud Composer 2.

    2. Vai a Sicurezza > Elenca utenti.

    3. Fai clic su Aggiungi un nuovo record.

gcloud

  1. Per visualizzare un elenco di utenti nel tuo ambiente Cloud Composer 1, esegui il users list comando Airflow CLI tramite gcloud:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
        users list
    

    Sostituisci:

    • COMPOSER_1_ENV con il nome dell'ambiente Cloud Composer 1.
    • COMPOSER_1_LOCATION con la regione in cui si trova l'ambiente Cloud Composer 1.
  2. Per creare un nuovo account utente nel tuo ambiente Cloud Composer 2, esegui il users create comando Airflow CLI tramite gcloud. Ad esempio:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        users create \
        -- --username example_username \
        --firstname Example-Name \
        --lastname Example-Surname \
        --email example-user@example.com \
        --use-random-password \
        --role Op
    

    Sostituisci:

    • COMPOSER_2_ENV con il nome del tuo ambiente Cloud Composer 2.
    • COMPOSER_2_LOCATION con la regione in cui si trova l'ambiente Cloud Composer 2.
    • Tutti i parametri di configurazione utente con i relativi valori dell'ambiente Cloud Composer 1, incluso il ruolo dell'utente.

Metodo alternativo per trasferire gli account utente

In alternativa, puoi utilizzare i comandi users export e users import della CLI di Airflow.

  1. Esporta gli account utente in un file nella cartella del bucket /data del tuo ambiente:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
        users export -- /home/airflow/gcs/data/users.json
    
  2. Esporta questo file nel bucket del tuo ambiente Cloud Composer 2:

    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION \
        --source=users.json
    
  3. Importa gli account utente da questo file nel tuo ambiente Cloud Composer 2:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        users import \
        -- /home/airflow/gcs/data/users.json
    
  4. Elimina i file JSON in entrambi gli ambienti:

    gcloud composer environments storage data delete \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION  \
        users.json
    
    gcloud composer environments storage data delete \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION  \
        users.json
    

Sostituisci:

  • COMPOSER_1_ENV con il nome dell'ambiente Cloud Composer 1.
  • COMPOSER_2_ENV con il nome del tuo ambiente Cloud Composer 2.
  • COMPOSER_1_LOCATION con la regione in cui si trova l'ambiente Cloud Composer 1.
  • COMPOSER_2_LOCATION con la regione in cui si trova l'ambiente Cloud Composer 2.
  • COMPOSER_2_BUCKET con l'URI del bucket dell'ambiente Cloud Composer 2 ottenuto nel passaggio precedente.

Passaggio 8: trasferisci i DAG nell'ambiente Cloud Composer 2

Quando trasferisci i DAG tra ambienti, potrebbero verificarsi i seguenti potenziali problemi:

  • Se un DAG è attivato (non in pausa) in entrambi gli ambienti, ogni ambiente esegue la propria copia del DAG, come pianificato. Ciò potrebbe portare a esecuzioni duplicate del DAG per gli stessi dati e la stessa ora di esecuzione.

  • A causa del recupero DAG, Airflow pianifica esecuzioni DAG aggiuntive, a partire dalla data di inizio specificata nei DAG. Questo accade perché la nuova istanza Airflow non prende in considerazione la cronologia delle esecuzioni del DAG dall'ambiente Cloud Composer 1. Ciò potrebbe comportare un numero elevato di esecuzioni pianificate del DAG a partire dalla data di inizio specificata.

Evitare esecuzioni duplicate del DAG

Nell'ambiente Cloud Composer 2, nell'ambiente Airflow 2, aggiungi un'override dell'opzione di configurazione di Airflow per l'opzione dags_are_paused_at_creation. Dopo aver apportato questa modifica, tutti i nuovi DAG vengono messi in pausa per impostazione predefinita.

Sezione Chiave Valore
core dags_are_paused_at_creation True

Evitare esecuzioni DAG mancanti o aggiuntive

Per evitare lacune e sovrapposizioni nelle date di esecuzione, disattiva la funzionalità di aggiornamento in Cloud Composer 2. In questo modo, dopo aver caricato i DAG nell'ambiente Cloud Composer 2, Airflow non pianifica le esecuzioni dei DAG già eseguite nell'ambiente Cloud Composer 1. Aggiungi un'override dell'opzione di configurazione di Airflow per l'opzione catchup_by_default:

Sezione Chiave Valore
scheduler catchup_by_default False

Trasferisci i DAG nell'ambiente Cloud Composer 2

Per trasferire i DAG nell'ambiente Cloud Composer 2:

  1. Carica il DAG dall'ambiente Cloud Composer 1 all'ambiente Cloud Composer 2. Salta il DAG airflow_monitoring.py.

  2. I DAG vengono messi in pausa nell'ambiente Cloud Composer 2 a causa dell'override della configurazione, pertanto non vengono pianificate esecuzioni dei DAG.

  3. Nell'interfaccia web di Airflow, vai a DAG e controlla se sono stati segnalati errori di sintassi dei DAG.

  4. Al momento in cui prevedi di trasferire il DAG:

    1. Metti in pausa i DAG nel tuo ambiente Cloud Composer 1.

    2. Riattiva la messa in pausa dei DAG nell'ambiente Cloud Composer 2.

    3. Verifica che le esecuzioni del nuovo DAG siano pianificate all'ora corretta.

    4. Attendi l'esecuzione dei DAG nell'ambiente Cloud Composer 2 e controlla se sono andati a buon fine. Se un'esecuzione di DAG è riuscita, non riprendere la messa in pausa nell'ambiente Cloud Composer 1. In caso contrario, nell'ambiente Cloud Composer 1 verrà eseguita un'esecuzione di DAG per la stessa data e ora.

  5. Se l'esecuzione di un DAG specifico non va a buon fine, prova a risolvere i problemi del DAG finché non viene eseguito correttamente in Cloud Composer 2.

    Se necessario, puoi sempre eseguire il fallback alla versione Cloud Composer 1 del DAG ed eseguire le esecuzioni del DAG che non sono riuscite in Cloud Composer 2 dal tuo ambiente Cloud Composer 1:

    1. Metti in pausa il DAG nell'ambiente Cloud Composer 2.

    2. Riattiva la messa in pausa del DAG nell'ambiente Cloud Composer 1. In questo modo, vengono pianificate le esecuzioni di DAG per recuperare il tempo in cui il DAG è stato messo in pausa nell'ambiente Cloud Composer 1.

Passaggio 9: monitora l'ambiente Cloud Composer 2

Dopo aver trasferito tutti i DAG e la configurazione nell'ambiente Cloud Composer 2, monitoralo per rilevare potenziali problemi, esecuzioni di DAG non riuscite e l'integrità complessiva dell'ambiente. Se l'ambiente Cloud Composer 2 funziona senza problemi per un periodo di tempo sufficiente, valuta la possibilità di eliminare l'ambiente Cloud Composer 1.

Passaggi successivi