Managed Airflow(第 3 代) | Managed Airflow(第 2 代) | Managed Airflow(旧版第 1 代)
本页面介绍如何使用 迁移脚本将 DAG、数据和配置从现有 Managed Airflow(第 2 代)环境迁移到新的 Managed Airflow(第 3 代)环境。
其他迁移指南
| 发件人 | 收件人 | 方法 | 指南 |
|---|---|---|---|
| Managed Airflow(第 3 代)、Airflow 2 | Managed Airflow(第 3 代)、Airflow 3 | 并排、手动转移 | 手动迁移指南 |
| Managed Airflow(第 2 代) | Managed Airflow(第 3 代) | 并排、使用迁移脚本 | 本指南 |
| Managed Airflow(第 2 代) | Managed Airflow(第 3 代) | 并排、使用快照 | 快照迁移指南 |
| Managed Airflow(旧版第 1 代)、Airflow 2 | Managed Airflow(第 3 代) | 并排、使用快照 | 快照迁移指南 |
| Managed Airflow(旧版第 1 代)、Airflow 2 | Managed Airflow(第 2 代) | 并排、使用快照 | 快照迁移指南 |
| Managed Airflow(旧版第 1 代)、Airflow 2 | Managed Airflow(第 2 代) | 并排、手动转移 | 手动迁移指南 |
| Managed Airflow(旧版第 1 代)、Airflow 1 | Managed Airflow(第 2 代)、Airflow 2 | 并排、使用快照 | 快照迁移指南 |
| Managed Airflow(旧版第 1 代)、Airflow 1 | Managed Airflow(第 2 代)、Airflow 2 | 并排、手动转移 | 手动迁移指南 |
| Managed Airflow(旧版第 1 代)、Airflow 1 | Managed Airflow(旧版第 1 代)、Airflow 2 | 并排、手动转移 | 手动迁移指南 |
迁移脚本简介
迁移脚本是一个 Python 脚本,用于并排迁移,可自动执行从 Managed Airflow(第 2 代)到 Managed Airflow(第 3 代)的迁移过程。它 使用环境快照将环境的 配置转移到新环境。
该脚本会执行以下操作:
获取 Managed Airflow(第 2 代)环境的配置。
创建 Managed Airflow(第 3 代)环境,其配置与获取的配置相匹配。
由于 Managed Airflow(第 3 代)环境具有 不同的架构,因此某些参数可能会进行调整以 适应差异。您也可以稍后调整环境的大部分参数。
逐个暂停 Managed Airflow(第 2 代)环境中的所有 DAG。只有在 Managed Airflow(第 2 代)环境中取消暂停的 DAG 才会稍后取消暂停。
保存源 Managed Airflow(第 2 代)环境的快照。快照保存在快照的默认位置,即 Managed Airflow(第 2 代)环境的存储桶中。
将快照加载到 Managed Airflow(第 3 代)环境。
该脚本不会检查自定义 PyPI 软件包、环境变量和 Airflow 配置选项替换与 Managed Airflow(第 3 代)环境的兼容性。
如果发生冲突,则在创建 Managed Airflow(第 3 代)环境后,在加载快照的过程中,迁移会失败。在这种情况下,您可以调整 Managed Airflow(第 2 代)环境的配置以解决冲突,也可以在不使用迁移脚本的情况下进行迁移,并在加载快照时跳过加载自定义 PyPI 软件包、环境变量或 Airflow 配置替换。
取消暂停 Managed Airflow(第 3 代)环境中的 DAG。如果您在运行脚本之前已暂停某些 DAG,这些 DAG 将保持暂停状态。
该脚本具有以下限制:
该脚本始终会创建新的 Managed Airflow(第 3 代)环境。无法将快照加载到现有的 Managed Airflow(第 3 代)环境。 如需执行此操作,您可以使用 快照进行迁移,而无需使用 迁移脚本。
该脚本仅在与 Managed Airflow(第 2 代)环境相同的区域和项目中创建 Managed Airflow(第 3 代)环境。
您只能将快照加载到相同或更高版本的 Airflow。例如,您无法将快照从 Airflow 2.10.2 加载到 Airflow 2.9.3。
只有 Managed Airflow(第 2 代)环境可以使用迁移脚本进行迁移。
准备工作
由于迁移脚本会创建环境,然后保存和加载快照,因此迁移过程可能需要一个多小时。
该脚本使用快照。Managed Airflow(第 2 代)2.0.9 版及更高版本支持快照。
在 Managed Airflow(第 2 代)2.0.9 及更高版本中。
您的账户需要 一个 IAM 角色,该角色可以 创建环境、保存快照和加载快照。
如果环境的数据库超过 20 GB,请减小 Airflow 数据库的大小。如果您的环境数据库占用空间超过 20 GB,请 减小 Airflow 数据库的大小 。
环境存储桶中
/dags、/plugins和/data文件夹中的对象总数必须少于 100,000 个,才能创建快照。使用 XCom 转移大文件或大量文件会影响 Airflow 数据库的性能,并可能导致在加载快照或升级环境时失败。使用 XCom 转移大文件或大量文件会影响 Airflow 数据库的性能,并在加载快照或升级环境时可能导致失败。
迁移到 Managed Airflow(第 3 代)
本部分介绍使用迁移脚本的迁移过程。
检查 Managed Airflow(第 2 代)和 Managed Airflow(第 3 代)之间的差异
查看 Managed Airflow(第 2 代)和 Managed Airflow(第 3 代)之间的差异列表 。
确保您的环境不使用 Managed Airflow(第 3 代)中尚不可用的功能,并且您熟悉如何使用和配置 Managed Airflow(第 3 代)特有的功能。
确保您的 DAG 与 Managed Airflow(第 3 代)兼容
按照以下建议确保您的 DAG 与 Managed Airflow(第 3 代)兼容:
Managed Airflow(第 3 代)环境中的软件包列表可能与 Managed Airflow(第 2 代)环境中的不同。这可能会影响 DAG 与 Managed Airflow(第 3 代)的兼容性。
在 Managed Airflow(第 3 代)中,环境的集群 位于租户项目中。确保您的 DAG 与此更改兼容。特别是,
KubernetesPodOperator工作负载现在独立于 您的环境进行扩缩,并且无法使用 Pod 亲和性配置。
检查配置兼容性
您可以执行升级检查,查看您的 Managed Airflow(第 2 代)环境的配置是否与 Managed Airflow(第 3 代)兼容。我们建议您在开始迁移之前解决此检查报告的所有阻止冲突。
安装脚本的依赖项
该脚本需要 Python 3.8 版及更高版本。
迁移脚本使用 gcloud CLI 和
curl实用程序。确保您的计算机上安装了这两个实用程序。
下载脚本
从 GitHub 上的
代码库下载迁移脚本 (composer_migrate.py)。
在 gcloud CLI 中授权
gcloud auth login
预览新环境的参数
您可以在迁移之前预览 Managed Airflow(第 3 代)环境的参数。您可以使用此功能查看 Managed Airflow(第 2 代)环境的配置如何对应于 Managed Airflow(第 3 代)。
Airflow 配置选项替换、自定义 PyPI 软件包和环境变量从环境的快照加载,并且不会显示在预览中。
展开
运行以下命令:
python3 composer_migrate.py \
--project PROJECT_ID \
--location LOCATION \
--source_environment COMPOSER_2_ENV \
--target_environment COMPOSER_3_ENV \
--target_airflow_version COMPOSER_3_AIRFLOW_VERSION \
--dry_run
替换以下内容:
PROJECT_ID:项目 ID。COMPOSER_2_ENV:Managed Airflow(第 2 代)环境的名称。LOCATION:Managed Airflow(第 2 代)环境所在的区域。 Managed Airflow(第 3 代)环境将在同一区域中创建。COMPOSER_3_AIRFLOW_VERSION:Managed Airflow(第 3 代)环境的 Airflow 版本。此版本必须与 Managed Airflow(第 2 代)环境中的版本相同或更高,并且必须是 Managed Airflow(第 3 代)中可用的版本 之一。
示例:
python3 composer_migrate.py \
--project example-project \
--location us-central1 \
--source_environment example-composer-2-environment \
--target_environment example-composer-3-environment \
--target_airflow_version 2.10.2
检查环境的运行状况
确保您要迁移的 Managed Airflow(第 2 代)环境运行状况良好。
如果您的环境运行状况不佳,则在创建新的 Managed Airflow(第 3 代)环境后,迁移过程将失败,因为无法创建快照。
如需详细了解如何检查环境的运行状况和数据库的运行状况,请参阅使用监控信息中心。
运行迁移脚本
运行以下命令:
python3 composer_migrate.py \
--project PROJECT_ID \
--location LOCATION \
--source_environment COMPOSER_2_ENV \
--target_environment COMPOSER_3_ENV \
--target_airflow_version COMPOSER_3_AIRFLOW_VERSION
替换以下内容:
PROJECT_ID:项目 ID。COMPOSER_2_ENV:Managed Airflow(第 2 代)环境的名称。LOCATION:Managed Airflow(第 2 代)环境所在的区域。 Managed Airflow(第 3 代)环境将在同一区域中创建。COMPOSER_3_AIRFLOW_VERSION:Managed Airflow(第 3 代)环境的 Airflow 版本。此版本必须与 Managed Airflow(第 2 代)环境中的版本相同或更高,并且必须是 Managed Airflow(第 3 代)中可用的版本 之一。
检查 DAG 错误
在 Airflow 网页界面中, 转到 DAG 并查看报告的 DAG 语法错误。
检查 DAG 运行是否安排在正确的时间。
等待 DAG 在 Managed Airflow(第 3 代)环境中运行并检查运行是否成功。如果 DAG 运行成功,请不要在 Managed Airflow(第 2 代)环境中取消暂停该 DAG。如果这样做,则 DAG 会在 Managed Airflow(第 2 代)环境中以相同的时间和日期运行。
如果特定 DAG 运行失败,请尝试对该 DAG 进行 问题排查,直到它在 Managed Airflow (第 3 代)中成功 运行为止。
监控 Managed Airflow(第 3 代)环境
监控 Managed Airflow(第 3 代)环境是否存在潜在问题、DAG 运行失败以及环境整体运行状况。
如果 Managed Airflow(第 3 代)环境在足够长的时间内正常运行,请考虑删除 Managed Airflow(第 2 代)环境。