Airflow géré (3e génération) | Airflow géré (2e génération) | Airflow géré (1re génération, version héritée)
Cette page explique comment transférer des DAG, des données et une configuration de vos environnements Managed Airflow (ancienne génération 1) et Airflow 1 existants vers Managed Airflow (génération 2) et Airflow 2.
Ce guide de migration utilise la fonctionnalité d'instantanés.
Autres guides de migration
| De | À | Méthode | Guide |
|---|---|---|---|
| Airflow géré (3e génération), Airflow 2 | Managed Airflow (3e génération), Airflow 3 | Transfert manuel côte à côte | Guide de migration manuelle |
| Managed Airflow (2e génération) | Managed Airflow (3e génération) | Côte à côte, à l'aide du script de migration | Guide de migration de script |
| Managed Airflow (2e génération) | Managed Airflow (3e génération) | Côte à côte, à l'aide d'instantanés | Guide de migration d'instantanés |
| Managed Airflow (1re génération, version héritée), Airflow 2 | Managed Airflow (3e génération) | Côte à côte, à l'aide d'instantanés | Guide de migration d'instantanés |
| Managed Airflow (1re génération, version héritée), Airflow 2 | Managed Airflow (2e génération) | Côte à côte, à l'aide d'instantanés | Guide de migration d'instantanés |
| Managed Airflow (1re génération, version héritée), Airflow 2 | Managed Airflow (2e génération) | Transfert manuel côte à côte | Guide de migration manuelle |
| Managed Airflow (1re génération, version héritée), Airflow 1 | Managed Airflow (2e génération), Airflow 2 | Côte à côte, à l'aide d'instantanés | Ce guide |
| Managed Airflow (1re génération, version héritée), Airflow 1 | Managed Airflow (2e génération), Airflow 2 | Transfert manuel côte à côte | Guide de migration manuelle |
| Managed Airflow (1re génération, version héritée), Airflow 1 | Managed Airflow (1re génération, version héritée), Airflow 2 | Transfert manuel côte à côte | Guide de migration manuelle |
Avant de commencer
Les instantanés sont compatibles avec Managed Airflow (2e génération) version 2.0.9 et versions ultérieures. Airflow géré (1re génération, version héritée) permet d'enregistrer des instantanés d'environnement dans la version 1.18.5.
Managed Airflow est compatible avec la migration côte à côte de Managed Airflow (1re génération, version héritée) vers Managed Airflow (2e génération). Il n'est pas possible de mettre à niveau Managed Airflow (1re génération, version héritée) vers Managed Airflow (2e génération) sur place.
Consultez la liste des différences entre Managed Airflow (1re génération, version héritée) et Managed Airflow (2e génération).
La taille maximale de la base de données Airflow compatible avec les instantanés est de 20 Go. Si la base de données de votre environnement dépasse 20 Go, réduisez sa taille.
Le nombre total d'objets dans les dossiers
/dags,/pluginset/datadu bucket de l'environnement doit être inférieur à 100 000 pour créer des instantanés.Si vous utilisez le mécanisme XCom pour transférer des fichiers, assurez-vous de l' utiliser conformément aux consignes d'Airflow. Le transfert de fichiers volumineux ou d'un grand nombre de fichiers à l'aide de XCom a un impact sur les performances de la base de données Airflow et peut entraîner des échecs lors du chargement d'instantanés ou de la mise à niveau de votre environnement. Envisagez d'utiliser des alternatives telles que Cloud Storage pour transférer de grands volumes de données.
Étant donné que Managed Airflow (2e génération) utilise Airflow 2, la migration inclut le passage de vos DAG et de la configuration de votre environnement à Airflow 2. Consultez le guide de migration d'Airflow 1 vers Airflow 2 pour en savoir plus sur les modifications majeures entre Airflow 1 et Airflow 2 dans Managed Airflow.
Dans ce guide, vous combinez la migration vers Airflow 2 et la migration vers Managed Airflow (2e génération) en une seule procédure de migration. De cette façon, vous n'avez pas besoin de migrer vers un environnement Managed Airflow (1re génération, version héritée) avec Airflow 2 avant de migrer vers Managed Airflow (2e génération).
Étape 1 : Passer à Airflow 1.10.15
Si votre environnement utilise une version d'Airflow antérieure à 1.10.15, mettez à niveau votre environnement vers une version de Managed Airflow qui utilise Airflow 1.10.15 et est compatible avec les instantanés.
Étape 2 : Vérifier la compatibilité avec Airflow 2
Pour vérifier les conflits potentiels avec Airflow 2, consultez le guide de mise à niveau vers Airflow 2.0 et versions ultérieures, dans la section sur la mise à niveau des DAG.
Un problème courant que vous pouvez rencontrer est lié aux chemins d'importation incompatibles. Pour plus d'informations sur la résolution de ce problème de compatibilité, dans le guide de mise à niveau vers Airflow 2.0 et versions ultérieures, consultez la section spécifique aux fournisseurs de rétroportage.
Étape 3 : Assurez-vous que vos DAG sont prêts pour Airflow 2
Avant de transférer des DAG vers votre environnement Managed Airflow (2e génération), assurez-vous que les conditions suivantes sont remplies :
Vos DAG s'exécutent correctement et il n'y a plus de problèmes de compatibilité.
Vos DAG utilisent des instructions d'importation correctes.
Par exemple, la nouvelle instruction d'importation pour
BigQueryCreateDataTransferOperatorpeut se présenter comme suit :from airflow.providers.google.cloud.operators.bigquery_dts \ import BigQueryCreateDataTransferOperatorVos DAG sont mis à jour pour Airflow 2. Cette modification est compatible avec Airflow 1.10.14 et versions ultérieures.
Étape 4 : Suspendre les DAG dans votre environnement Airflow géré (1re génération, version héritée)
Pour éviter les exécutions DAG en double, suspendez tous les DAG dans votre environnement Airflow géré (1re génération, version héritée) avant d'enregistrer son instantané.
Vous pouvez utiliser l'une des options suivantes :
Dans l'interface Web Airflow, accédez à DAG et suspendez manuellement tous les DAG.
Utilisez le composer_dags script pour suspendre tous les DAG :
python3 composer_dags.py --environment COMPOSER_1_ENV \ --project PROJECT_ID \ --location COMPOSER_1_LOCATION \ --operation pauseRemplacez :
COMPOSER_1_ENVavec le nom de votre environnement Managed Airflow (1re génération, version héritée).PROJECT_IDpar l'ID du projet.COMPOSER_1_LOCATIONpar la région dans laquelle se trouve l'environnement.
Étape 5 : Enregistrer l'instantané de votre environnement Airflow géré (1re génération, version héritée)
Console
Créez un instantané de votre environnement :
Dans la Google Cloud console, accédez à la page Environnements.
Dans la liste des environnements, cliquez sur le nom de votre environnement Managed Airflow (1re génération, version héritée). La page Détails de l'environnement s'ouvre.
Cliquez sur Créer un instantané.
Dans la boîte de dialogue Créer un instantané, cliquez sur Envoyer. Dans ce guide, vous enregistrez l'instantané dans le bucket de l'environnement Managed Airflow (1re génération, version héritée), mais vous pouvez sélectionner un autre emplacement si vous le souhaitez.
Attendez que Managed Airflow crée l'instantané.
gcloud
Obtenez l'URI du bucket de votre environnement Managed Airflow (1re génération, version héritée) :
Exécutez la commande suivante :
gcloud composer environments describe COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ --format="value(config.dagGcsPrefix)"Remplacez :
COMPOSER_1_ENVpar le nom de votre environnement Managed Airflow (1re génération, version héritée).COMPOSER_1_LOCATIONpar la région dans laquelle se trouve l'environnement.
Dans le résultat, supprimez le dossier
/dags. Le résultat est l'URI du bucket de votre environnement Managed Airflow (1re génération, version héritée).Par exemple, remplacez
gs://us-central1-example-916807e1-bucket/dagspargs://us-central1-example-916807e1-bucket.
Créez un instantané de votre environnement Managed Airflow (1re génération, version héritée) :
gcloud composer environments snapshots save \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ --snapshot-location "COMPOSER_1_SNAPSHOTS_FOLDER"Remplacez :
COMPOSER_1_ENVavec le nom de votre environnement Managed Airflow (1re génération, version héritée).COMPOSER_1_LOCATIONavec la région où se trouve l'environnement Managed Airflow (1re génération, version héritée).COMPOSER_1_SNAPSHOTS_FOLDERpar l'URI du bucket de votre environnement Managed Airflow (1re génération, version héritée). Dans ce guide, vous enregistrez l'instantané dans le bucket de l'environnement Managed Airflow (1re génération, version héritée), mais vous pouvez sélectionner un autre emplacement si vous le souhaitez. Si vous spécifiez un emplacement personnalisé, les comptes de service des deux environnements doivent disposer des autorisations de lecture et d'écriture pour l'emplacement spécifié.
Étape 6 : Créer un environnement Airflow géré (2e génération)
Créez un environnement Airflow géré (2e génération). Vous pouvez commencer par un environnement prédéfini correspondant à vos besoins de ressources prévus, puis procéder au scaling et à l'optimisation supplémentaires de votre environnement.
Vous n'avez pas besoin de spécifier les remplacements de configuration ni les variables d'environnement, car vous les remplacerez ultérieurement lorsque vous chargerez l'instantané de votre environnement Managed Airflow (1re génération, version héritée).
Certaines options de configuration d'Airflow 1 utilisent un nom et une section différents dans Airflow 2. Pour en savoir plus, consultez la section Modifications de configuration.
Étape 7 : Charger l'instantané dans votre environnement Managed Airflow (2e génération)
Console
Pour charger l'instantané dans votre environnement Airflow géré (2e génération) :
Dans la Google Cloud console, accédez à la page Environnements.
Dans la liste des environnements, cliquez sur le nom de votre environnement Airflow géré (2e génération). La page Détails de l'environnement s'ouvre.
Cliquez sur Charger l'instantané.
Dans la boîte de dialogue Charger l'instantané, cliquez sur Parcourir.
Sélectionnez le dossier contenant l'instantané. Si vous utilisez l'emplacement par défaut pour ce guide, ce dossier se trouve dans le bucket de votre environnement Airflow géré (1re génération, version héritée) dans le dossier
/snapshots, et son nom correspond à l'horodatage de l'opération d'enregistrement de l'instantané. Par exemple,us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2022-01-05T18-59-00.Cliquez sur Charger et attendez que Managed Airflow charge l'instantané.
gcloud
Chargez l'instantané de votre environnement Managed Airflow (1re génération, version héritée) dans votre environnement Managed Airflow (2e génération) :
gcloud composer environments snapshots load \
COMPOSER_2_ENV \
--location COMPOSER_2_LOCATION \
--snapshot-path "SNAPSHOT_PATH"
Remplacez :
COMPOSER_2_ENVpar le nom de votre environnement Managed Airflow (2e génération).COMPOSER_2_LOCATIONpar la région dans laquelle se trouve l'environnement Managed Airflow (2e génération).SNAPSHOT_PATHpar l'URI du bucket de votre environnement Managed Airflow (1re génération, version héritée), suivi du chemin d'accès à l'instantané. Par exemple,gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.
Étape 8 : Réactiver les DAG dans l'environnement Managed Airflow (2e génération)
Vous pouvez utiliser l'une des options suivantes :
Dans l'interface Web Airflow, accédez à DAG et réactivez manuellement tous les DAG un par un.
Utilisez le script composer_dags pour réactiver tous les DAG :
python3 composer_dags.py --environment COMPOSER_2_ENV \ --project PROJECT_ID \ --location COMPOSER_2_LOCATION \ --operation unpauseRemplacez :
COMPOSER_2_ENVpar le nom de votre environnement Managed Airflow (2e génération).PROJECT_IDpar l'ID du projet.COMPOSER_2_LOCATIONpar la région dans laquelle se trouve l'environnement.
(Versions d'Airflow 2.9.1 et ultérieures) Si des erreurs de quota se produisent lors de la réactivation d'un grand nombre de DAG, vous pouvez utiliser les commandes suivantes de l'interface de ligne de commande Airflow pour réactiver tous les DAG en même temps :
gcloud composer environments run COMPOSER_2_ENV dags unpause \ --project PROJECT_ID \ --location COMPOSER_2_LOCATION \ -- -y --treat-dag-id-as-regex ".*"(Versions d'Airflow antérieures à 2.9.1) Si des erreurs de quota se produisent lors de la réactivation d'un grand nombre de DAG, il est possible de réactiver les DAG à l'aide de l' API REST Airflow. Consultez également la section Essayer l'API dans la documentation Airflow.
Étape 9 : Rechercher les erreurs de DAG
Dans l'interface Web Airflow, accédez aux DAG et recherchez les erreurs de syntaxe des DAG signalés.
Vérifiez que les exécutions de DAG sont programmées aux bons horaires.
Attendez que les exécutions de DAG se produisent dans l'environnement Managed Airflow (2e génération) et vérifiez si elles ont réussi. Si l'exécution du DAG a réussi, ne la réactivez pas dans l'environnement Managed Airflow (1re génération, version héritée). Si vous le faites, un DAG s'exécutera à la même heure et à la même date dans votre environnement Managed Airflow (1re génération, version héritée).
Si une exécution de DAG spécifique échoue, essayez de résoudre les problèmes liés au DAG jusqu'à ce qu'il aboutisse dans Managed Airflow (2e génération).
Étape 10 : Surveiller votre environnement Airflow géré (2e génération)
Une fois que vous avez transféré tous les DAG et la configuration vers l'environnement Managed Airflow (2e génération), surveillez-les pour détecter les problèmes potentiels, les exécutions de DAG ayant échoué et l'état général de l'environnement.
Si l'environnement Managed Airflow (2e génération) s'exécute sans problème pendant une période suffisante, envisagez de supprimer l'environnement Managed Airflow (1re génération, version héritée).
Étape suivante
- Découvrez comment résoudre les problèmes liés aux DAG.
- Résoudre les problèmes de création d'environnement
- Résoudre les problèmes liés aux mises à jour de l'environnement
- Utiliser des packages de rétroportage