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 2 | Cloud Composer 3 | Affiancata, utilizzando lo script di migrazione | Guida alla migrazione degli script |
| Cloud Composer 2 | Cloud Composer 3 | Affiancate, utilizzando gli snapshot | Guida alla migrazione degli snapshot |
| Cloud Composer 1, Airflow 2 | Cloud Composer 3 | Affiancate, utilizzando gli snapshot | Guida alla migrazione degli snapshot |
| Cloud Composer 1, Airflow 2 | Cloud Composer 2 | Affiancate, utilizzando gli snapshot | Guida alla migrazione degli snapshot |
| Cloud Composer 1, Airflow 2 | Cloud Composer 2 | Trasferimento manuale affiancato | Questa guida |
| Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Affiancate, utilizzando gli snapshot | Guida alla migrazione degli snapshot |
| Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Trasferimento manuale affiancato | Guida alla migrazione manuale |
| Cloud Composer 1, Airflow 1 | Cloud Composer 1, Airflow 2 | Trasferimento manuale affiancato | Guida alla migrazione manuale |
Prima di iniziare
- Cloud Composer supporta la migrazione affiancata da Cloud Composer 1 a Cloud Composer 2. Non è possibile eseguire l'upgrade da Cloud Composer 1 a Cloud Composer 2 sul posto.
- Consulta l'elenco delle differenze tra Cloud Composer 1 e Cloud Composer 2.
Passaggio 1: recupera l'elenco degli override di configurazione, dei pacchetti PyPI personalizzati e delle variabili di ambiente
Console
Recupera l'elenco degli override della configurazione, dei pacchetti PyPI personalizzati e delle variabili di ambiente del tuo ambiente Cloud Composer 1:
Vai alla pagina Ambienti nella console Google Cloud :
Seleziona l'ambiente Cloud Composer 1.
Visualizza le variabili di ambiente nella scheda Variabili di ambiente.
Visualizza gli override della configurazione nelle schede Override della configurazione Airflow.
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 degli override 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_ENVcon il nome del tuo ambiente Cloud Composer 1.COMPOSER_1_LOCATIONcon la regione in cui si trova l'ambiente Cloud Composer 1.
Terraform
Ignora 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 preset dell'ambiente che corrisponda alle richieste di risorse previste e in un secondo momento scalare e ottimizzare ulteriormente l'ambiente.
Console
Crea un ambiente Cloud Composer 2 e specifica gli override di configurazione e le variabili di ambiente.
In alternativa, puoi eseguire l'override delle configurazioni di Airflow e delle variabili di ambiente dopo aver creato un ambiente.
gcloud
Crea un ambiente Cloud Composer 2 e specifica gli override di configurazione e le variabili di ambiente.
In alternativa, puoi eseguire l'override delle configurazioni di Airflow e delle variabili di ambiente dopo aver creato un ambiente.
Terraform
Crea un ambiente Cloud Composer 2 in base alla configurazione dell'ambiente Cloud Composer 1:
- Copia la configurazione dell'ambiente Cloud Composer 1.
- Modifica il nome dell'ambiente.
Utilizza il provider
google-beta:resource "google_composer_environment" "example_environment_composer_2" { provider = google-beta # ... }Specifica un'immagine di Cloud Composer 2 nel blocco
config.software_config:software_config { image_version = "composer-2.14.4-airflow-2.10.5" # ... }Se non l'hai ancora fatto, specifica gli override di configurazione e le variabili di ambiente.
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
Vai alla pagina Ambienti nella console Google Cloud :
Seleziona l'ambiente Cloud Composer 2.
Vai alla scheda Pacchetti PyPI e fai clic su Modifica.
Copia i requisiti dei pacchetti PyPI dal tuo ambiente Cloud Composer 1. Fai clic su Salva e attendi l'aggiornamento dell'ambiente.
gcloud
Crea un file
requirements.txtcon l'elenco dei pacchetti PyPI personalizzati:numpy scipy>=1.1.0Aggiorna l'ambiente e passa il file
requirements.txtnel comando :to the--update-pypi-packages-from-file:gcloud composer environments update COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ --update-pypi-packages-from-file requirements.txtSostituisci:
COMPOSER_2_ENVcon il nome del tuo ambiente Cloud Composer 2.COMPOSER_2_LOCATIONcon la regione in cui si trova l'ambiente Cloud Composer 2.
Terraform
Ignora questo passaggio. Hai già installato pacchetti PyPI personalizzati durante la creazione dell'ambiente.
Passaggio 4: trasferisci variabili e pool
Airflow supporta l'esportazione di variabili e pool in file JSON. Puoi quindi importare questi file nell'ambiente Cloud Composer 2.
I comandi dell'interfaccia a riga di comando di Airflow utilizzati in questo passaggio operano sui file locali nei worker di 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 Airflow. Nei comandi della CLI di Airflow, specifica /home/airflow/gcs/data/ nel parametro FILEPATH.
gcloud
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.jsonSostituisci:
COMPOSER_1_ENVcon il nome del tuo ambiente Cloud Composer 1.COMPOSER_1_LOCATIONcon la regione in cui si trova l'ambiente Cloud Composer 1.
Esporta i pool dall'ambiente Cloud Composer 1:
gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ pools export -- /home/airflow/gcs/data/pools.jsonSostituisci:
COMPOSER_1_ENVcon il nome del tuo ambiente Cloud Composer 1.COMPOSER_1_LOCATIONcon la regione in cui si trova l'ambiente Cloud Composer 1.
Recupera l'URI del bucket dell'ambiente Cloud Composer 2.
Esegui questo comando:
gcloud composer environments describe COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ --format="value(config.dagGcsPrefix)"Sostituisci:
COMPOSER_2_ENVcon il nome del tuo ambiente Cloud Composer 2.COMPOSER_2_LOCATIONcon la regione in cui si trova l'ambiente.
Nell'output, rimuovi la cartella
/dags. Il risultato è l'URI del bucket dell'ambiente Cloud Composer 2.Ad esempio, modifica
gs://us-central1-example-916807e1-bucket/dagsings://us-central1-example-916807e1-bucket.
Trasferisci i file JSON con variabili e pool nel 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=variables.jsongcloud composer environments storage data export \ --destination=COMPOSER_2_BUCKET/data \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION \ --source=pools.jsonSostituisci:
COMPOSER_2_BUCKETcon l'URI del bucket dell'ambiente Cloud Composer 2, ottenuto nel passaggio precedente.COMPOSER_1_ENVcon il nome del tuo ambiente Cloud Composer 1.COMPOSER_1_LOCATIONcon la regione in cui si trova l'ambiente Cloud Composer 1.
Importa variabili e pool in Cloud Composer 2:
gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ variables import \ -- /home/airflow/gcs/data/variables.jsongcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ pools import \ -- /home/airflow/gcs/data/pools.jsonVerifica che le variabili e i pool siano importati:
gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ variables listgcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ pools listRimuovi i file JSON dai bucket:
gcloud composer environments storage data delete \ variables.json \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATIONgcloud composer environments storage data delete \ pools.json \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATIONgcloud composer environments storage data delete \ variables.json \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATIONgcloud 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
Trasferisci i plug-in al tuo ambiente Cloud Composer 2. Per farlo, esporta i plug-in dal bucket dell'ambiente Cloud Composer 1 alla cartella
/pluginsnel bucket dell'ambiente Cloud Composer 2:gcloud composer environments storage plugins export \ --destination=COMPOSER_2_BUCKET/plugins \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATIONVerifica che la cartella
/pluginssia stata importata correttamente:gcloud composer environments storage plugins list \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATIONEsporta la cartella
/datadall'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_LOCATIONVerifica che la cartella
/datasia 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
Per visualizzare un elenco delle connessioni nel tuo ambiente Cloud Composer 1, esegui:
gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ connections listPer creare una nuova connessione nell'ambiente Cloud Composer 2, esegui il comando CLI Airflow
connectionstramitegcloud. 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
Per visualizzare un elenco degli utenti nel tuo ambiente Cloud Composer 1:
Apri l'interfaccia web di Airflow per l'ambiente Cloud Composer 1.
Vai a Sicurezza > Elenca utenti.
Per creare un utente nell'ambiente Cloud Composer 2:
Apri l'interfaccia web di Airflow per il tuo ambiente Cloud Composer 2.
Vai a Sicurezza > Elenca utenti.
Fai clic su Add a new record (Aggiungi un nuovo record).
gcloud
-
Per visualizzare un elenco di utenti nel tuo ambiente Cloud Composer 1, esegui il comando
users listAirflow CLI tramitegcloud:gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ users listSostituisci:
COMPOSER_1_ENVcon il nome del tuo ambiente Cloud Composer 1.COMPOSER_1_LOCATIONcon la regione in cui si trova l'ambiente Cloud Composer 1.
Per creare un nuovo account utente nel tuo ambiente Cloud Composer 2, esegui il comando CLI Airflow
users createtramitegcloud. 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 OpSostituisci:
COMPOSER_2_ENVcon il nome del tuo ambiente Cloud Composer 2.COMPOSER_2_LOCATIONcon 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 della CLI Airflow users export e users import.
Esporta gli account utente in un file nella cartella
/datadel bucket del tuo ambiente:gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ users export -- /home/airflow/gcs/data/users.jsonEsporta questo file nel bucket dell'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.jsonImporta 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.jsonElimina i file JSON in entrambi gli ambienti:
gcloud composer environments storage data delete \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION \ users.jsongcloud composer environments storage data delete \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION \ users.json
Sostituisci:
COMPOSER_1_ENVcon il nome del tuo ambiente Cloud Composer 1.COMPOSER_2_ENVcon il nome del tuo ambiente Cloud Composer 2.COMPOSER_1_LOCATIONcon la regione in cui si trova l'ambiente Cloud Composer 1.COMPOSER_2_LOCATIONcon la regione in cui si trova l'ambiente Cloud Composer 2.COMPOSER_2_BUCKETcon l'URI del bucket dell'ambiente Cloud Composer 2, ottenuto nel passaggio precedente.
Passaggio 8: trasferisci i DAG all'ambiente Cloud Composer 2
Quando trasferisci i DAG tra ambienti, potrebbero verificarsi i seguenti problemi potenziali:
Se un DAG è abilitato (non in pausa) in entrambi gli ambienti, ogni ambiente esegue la propria copia del DAG, come pianificato. Ciò potrebbe comportare l'esecuzione di DAG duplicati per gli stessi dati e lo stesso tempo di esecuzione.
A causa del recupero del DAG, Airflow pianifica esecuzioni del DAG aggiuntive, a partire dalla data di inizio specificata nei DAG. Ciò accade perché la nuova istanza Airflow non tiene conto della cronologia delle esecuzioni DAG dell'ambiente Cloud Composer 1. Ciò potrebbe comportare la pianificazione di un numero elevato di esecuzioni DAG a partire dalla data di inizio specificata.
Evitare esecuzioni di DAG duplicate
Nel tuo ambiente Cloud Composer 2, nel tuo 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 di DAG aggiuntive o mancanti
Per evitare lacune e sovrapposizioni nelle
date di esecuzione, disattiva
il recupero 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 all'ambiente Cloud Composer 2
Per trasferire i DAG all'ambiente Cloud Composer 2:
Carica il DAG dall'ambiente Cloud Composer 1 all'ambiente Cloud Composer 2. Salta il DAG
airflow_monitoring.py.I DAG vengono sospesi nell'ambiente Cloud Composer 2 a causa dell'override della configurazione, pertanto non vengono pianificate esecuzioni di DAG.
Nell'interfaccia web di Airflow, vai a DAG e verifica la presenza di errori di sintassi dei DAG segnalati.
Al momento in cui prevedi di trasferire il DAG:
Metti in pausa i DAG nel tuo ambiente Cloud Composer 1.
Riattiva i DAG nell'ambiente Cloud Composer 2.
Controlla che le nuove esecuzioni del DAG siano pianificate all'ora corretta.
Attendi l'esecuzione dei DAG nell'ambiente Cloud Composer 2 e verifica se sono andati a buon fine. Se l'esecuzione di un DAG è andata a buon fine, non riattivarla nell'ambiente Cloud Composer 1. In caso contrario, nell'ambiente Cloud Composer 1 si verifica un'esecuzione di DAG per la stessa ora e data.
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 ripristinare la versione Cloud Composer 1 del DAG ed eseguire le esecuzioni del DAG non riuscite in Cloud Composer 2 dal tuo ambiente Cloud Composer 1:
Metti in pausa il DAG nell'ambiente Cloud Composer 2.
Riattiva il DAG nell'ambiente Cloud Composer 1. In questo modo vengono pianificate le esecuzioni di recupero del DAG per il periodo 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 all'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
- Risoluzione dei problemi dei DAG
- Risoluzione dei problemi di creazione dell'ambiente
- Risoluzione dei problemi relativi agli aggiornamenti dell'ambiente
- Utilizzo dei pacchetti di backport