Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
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 | Affiancate, 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 fianco a fianco | Questa guida (migrazione manuale) |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Trasferimento manuale fianco a fianco | Guida alla migrazione manuale |
Airflow 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 da Cloud Composer 1 a Cloud Composer 2 in loco.
- Consulta l'elenco delle differenze tra Cloud Composer 1 e Cloud Composer 2.
Passaggio 1: recupera l'elenco degli override della configurazione, dei pacchetti PyPI personalizzati e delle variabili di ambiente
Console
Ottieni l'elenco della configurazione del tuo ambiente Cloud Composer 1 override, pacchetti PyPI personalizzati e variabili di ambiente:
Vai alla pagina Ambienti nella console Google Cloud:
Seleziona il tuo ambiente Cloud Composer 1.
Visualizza le variabili di ambiente nella scheda Variabili di ambiente.
Visualizza gli override della configurazione nella Schede Override delle configurazioni di 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_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
Ignora questo passaggio. La configurazione del tuo ambiente Cloud Composer 1 è già elenca gli override della configurazione, i pacchetti PyPI personalizzati e l'ambiente variabili per il tuo ambiente.
Passaggio 2: crea un ambiente Cloud Composer 2
In questo passaggio, crea un ambiente Cloud Composer 2. Puoi inizia con una preimpostazione di ambiente che corrisponde alle tue richieste di risorse previste per poi scalare e ottimizzare il tuo ambiente in un secondo momento. ulteriormente.
Console
Creare un ambiente Cloud Composer 2 e Specifica gli override della configurazione e le variabili di ambiente.
In alternativa, puoi eseguire l'override di Airflow configurazioni e le variabili di ambiente dopo per la creazione di un ambiente.
gcloud
Creare un ambiente Cloud Composer 2 e Specifica gli override della 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
Creare un ambiente Cloud Composer 2 in base alla configurazione del Ambiente Cloud Composer 1:
- Copia la configurazione dell'ambiente Cloud Composer 1.
- Modifica il nome dell'ambiente.
Usa 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.9.7-airflow-2.9.3" # ... }
Se non è già impostato, specifica override della configurazione e 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 PyPI personalizzato pacchetti.
Console
Vai alla pagina Ambienti nella console Google Cloud:
Seleziona il tuo ambiente Cloud Composer 2.
Vai alla scheda Pacchetti PyPI e fai clic su Modifica.
Copia i requisiti del pacchetto PyPI dal tuo ambiente Cloud Composer 1. Fai clic su Salva e attendi che l'ambiente venga aggiornato.
gcloud
Crea un file
requirements.txt
con l'elenco dei pacchetti PyPI personalizzati:numpy scipy>=1.1.0
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 dell'ambiente Cloud Composer 2.
Terraform
Ignora questo passaggio. Hai già installato pacchetti PyPI personalizzati quando hai creato l'ambiente.
Passaggio 4: trasferisci variabili e 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 di Airflow utilizzati in questo passaggio operano sui file locali in Airflow
worker. 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
Esporta 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.
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.
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_ENV
con il nome del tuo ambiente Cloud Composer 2.COMPOSER_2_LOCATION
con la regione in cui si trova l'ambiente in cui viene localizzato.
Nell'output, rimuovi la cartella
/dags
. Il risultato è l'URI del bucket del tuo ambiente Cloud Composer 2.Ad esempio, modifica
gs://us-central1-example-916807e1-bucket/dags
ags://us-central1-example-916807e1-bucket
.
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 di Cloud Composer 2 del bucket di ambiente, 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.
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.json
gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ pools import \ -- /home/airflow/gcs/data/pools.json
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
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
Trasferisci i plugins sul tuo nell'ambiente Cloud Composer 2. Per farlo, esporta i plug-in del bucket dell'ambiente Cloud Composer 1 nella cartella
/plugins
del tuo 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
Verifica che la cartella
/plugins
sia stata importata correttamente:gcloud composer environments storage plugins list \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
Esporta la cartella
/data
dal tuo ambiente Cloud Composer 1 all'ambiente Ambiente Airflow 2:gcloud composer environments storage data export \ --destination=COMPOSER_2_BUCKET/data \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION
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
Per ottenere un elenco delle connessioni nel tuo ambiente Cloud Composer 1, esegui:
gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ connections list
Per creare una nuova connessione nel tuo ambiente Cloud Composer 2, esegui il
connections
comando CLI di Airflow tramitegcloud
. 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 di utenti nel tuo ambiente Cloud Composer 1:
Apri l'interfaccia web di Airflow per il tuo ambiente Cloud Composer 1.
Vai a Sicurezza > Elenca utenti.
Per creare un utente nel tuo 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 list
Comando dell'interfaccia a riga di comando di Airflow tramitegcloud
:gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ users list
Sostituisci:
COMPOSER_1_ENV
con il nome del tuo ambiente Cloud Composer 1.COMPOSER_1_LOCATION
con la regione in cui Cloud Composer 1 dell'ambiente di rete.
Per creare un nuovo account utente nel tuo ambiente Cloud Composer 2, esegui
users create
Comando dell'interfaccia a riga di comando di Airflow agcloud
. 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 Cloud Composer 2 dell'ambiente di rete.- 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 users export
e users import
Airflow
dell'interfaccia a riga di comando.
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
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
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
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 del tuo 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 all'ambiente Cloud Composer 2
Quando trasferisci i DAG tra i seguenti, potrebbero verificarsi i seguenti problemi ambienti:
Se un DAG è abilitato (non in pausa) in entrambi gli ambienti, ogni ambiente viene eseguito una 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 di Recupero DAG, Airflow pianifica esecuzioni di DAG aggiuntive, a partire dalla data di inizio specificata nei tuoi DAG. Questo accade perché la nuova istanza Airflow non prende nella cronologia delle esecuzioni di DAG da Cloud Composer 1 completamente gestito di Google Cloud. Ciò potrebbe comportare un numero elevato di esecuzioni pianificate del DAG a partire dalla data di inizio specificata.
Evitare esecuzioni duplicate del DAG
Nel tuo ambiente Cloud Composer 2, nell'ambiente Airflow 2, aggiungi
un override dell'opzione di configurazione di Airflow per
Opzione dags_are_paused_at_creation
. Dopo aver apportato questa modifica, tutti i nuovi DAG
sono in pausa per impostazione predefinita.
Sezione | Chiave | Valore |
---|---|---|
core |
dags_are_paused_at_creation |
True |
Impedisci esecuzioni di DAG aggiuntive o mancanti
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:
Carica il DAG da Cloud Composer 1 all'ambiente Cloud Composer 2. Ignora il DAG
airflow_monitoring.py
.I DAG vengono messi in pausa nell'ambiente Cloud Composer 2 a causa dell'override della configurazione, pertanto non vengono pianificate esecuzioni dei DAG.
Nell'interfaccia web di Airflow, vai a DAG e controlla se sono stati segnalati errori di sintassi dei DAG.
Nel momento in cui prevedi di trasferire il DAG:
Metti in pausa i DAG nel tuo ambiente Cloud Composer 1.
Riattiva la messa in pausa dei DAG nell'ambiente Cloud Composer 2.
Verifica che le esecuzioni del nuovo DAG siano pianificate all'ora corretta.
Attendi l'esecuzione dei DAG nell'ambiente Cloud Composer 2 e controlla se sono andati a buon fine. Se un'esecuzione di DAG è andata a buon fine, 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.
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 tornare alla versione Cloud Composer 1 del DAG ed eseguire le esecuzioni del DAG che non sono riuscite in Cloud Composer 2 da il tuo ambiente Cloud Composer 1:
Metti in pausa il DAG nel tuo ambiente Cloud Composer 2.
Riattiva il DAG nel tuo ambiente Cloud Composer 1. Questo le pianificazioni dei DAG recuperano il periodo di 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 a Cloud Composer 2 dell'ambiente, monitorare potenziali problemi, esecuzioni di DAG non riuscite e, l'integrità dell'ambiente. Se l'ambiente Cloud Composer 2 viene eseguito senza problemi per un periodo di tempo sufficiente, valuta la possibilità di eliminare Cloud Composer 1 completamente gestito di Google Cloud.
Passaggi successivi
- Risoluzione dei problemi dei DAG
- Risoluzione dei problemi di creazione dell'ambiente
- Risoluzione dei problemi relativi agli aggiornamenti dell'ambiente
- Utilizzare i pacchetti di backport