Managed Airflow(第 3 代) | Managed Airflow(第 2 代) | Managed Airflow(旧版第 1 代)
本页面介绍如何将 DAG、数据和配置从现有 Managed Airflow(第 2 代)环境转移到 Managed Airflow(第 3 代)环境。
其他迁移指南
| 发件人 | 收件人 | 方法 | 指南 |
|---|---|---|---|
| Managed Airflow(第 3 代),Airflow 2 | 托管式 Airflow(第 3 代),Airflow 3 | 并排手动转移 | 手动迁移指南 |
| 托管式 Airflow(第 2 代) | Managed Airflow(第 3 代) | 使用迁移脚本进行并排比较 | 脚本迁移指南 |
| 托管式 Airflow(第 2 代) | Managed Airflow(第 3 代) | 并排比较(使用快照) | 这一指南 |
| Managed Airflow(旧版第 1 代)、Airflow 2 | Managed Airflow(第 3 代) | 并排比较(使用快照) | 快照迁移指南 |
| Managed Airflow(旧版第 1 代)、Airflow 2 | 托管式 Airflow(第 2 代) | 并排比较(使用快照) | 快照迁移指南 |
| Managed Airflow(旧版第 1 代)、Airflow 2 | 托管式 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 | 并排手动转移 | 手动迁移指南 |
准备工作
本迁移指南使用快照。Managed Airflow(第 2 代)2.0.9 及更高版本支持快照。
Managed Airflow 支持从 Managed Airflow(第 2 代)并行迁移到 Managed Airflow(第 3 代)。无法就地从 Managed Airflow(第 2 代)升级到 Managed Airflow(第 3 代)。
查看托管式 Airflow(第 2 代)和托管式 Airflow(第 3 代)之间的差异列表。 确保您的环境未使用 Managed Airflow(第 3 代)中尚未提供的功能。
支持快照的 Airflow 数据库的大小上限为 20 GB。如果环境的数据库占用超过 20 GB 的空间,请减小 Airflow 数据库的大小。
如需创建快照,环境的存储桶中
/dags、/plugins和/data文件夹中的对象总数必须少于 10 万个。如果您使用 XCom 机制来传输文件,请确保按照 Airflow 的指南使用该机制。使用 XCom 传输大型文件或大量文件会影响 Airflow 数据库的性能,并可能导致在加载快照或升级环境时出现故障。建议使用 Cloud Storage 等替代方案来传输大量数据。
确保您的 DAG 与 Managed Airflow(第 3 代)兼容
请按照以下建议操作,确保您的 DAG 与 Managed Airflow(第 3 代)兼容:
Managed Airflow(第 3 代)环境中的软件包列表可能与 Managed Airflow(第 2 代)环境中的不同。 这可能会影响 DAG 与 Managed Airflow(第 3 代)的兼容性。
Managed Airflow 会从 Managed Airflow (Gen 2) 环境的快照加载配置替换、环境变量和 PyPI 软件包到 Managed Airflow (Gen 3),而不会为了兼容性而更改或调整它们。如需解决这些配置参数之间的冲突,您可以在加载快照时跳过加载自定义 PyPI 软件包、环境变量和 Airflow 配置替换。
在 Managed Airflow(第 3 代)中,环境的集群位于租户项目中。请确保您的 DAG 与此变更兼容。具体而言,
KubernetesPodOperator工作负载现在可以独立于环境进行扩缩,并且无法使用 Pod 亲和性配置。
在 Managed Airflow(第 2 代)环境中暂停 DAG
为避免重复运行 DAG,请在保存 Managed Airflow(第 2 代)环境的快照之前,暂停该环境中的所有 DAG。跳过活跃性监控 DAG (airflow_monitoring),它用于监控目的,不包含在环境快照中。
您可以使用以下任一选项来暂停 DAG:
在 Google Cloud 控制台中逐一暂停 DAG:
在 Google Cloud 控制台中,前往环境页面。
选择环境以查看其详细信息。
在环境详情页面上,前往 DAG 标签页。
点击 DAG 的名称。
在 DAG 详情页面上,点击暂停 DAG。
在 Airflow 网页界面中,前往 DAG 并手动暂停所有 DAG。
使用 composer_dags 脚本暂停所有 DAG:
python3 composer_dags.py --environment COMPOSER_2_ENV \ --project PROJECT_ID \ --location COMPOSER_2_LOCATION \ --operation pause将
- 将
COMPOSER_2_ENV替换为您的 Managed Airflow(第 2 代)环境的名称。 - 将
PROJECT_ID替换为项目 ID。 COMPOSER_2_LOCATION替换为环境所在的区域。
- 将
保存 Managed Airflow(第 2 代)环境的快照
控制台
创建环境快照:
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的 Managed Airflow(第 2 代)环境的名称。环境详情页面会打开。
点击创建快照。
在创建快照对话框中,点击提交。在本指南中,您将快照保存在 Managed Airflow(第 2 代)环境的存储桶中,但您也可以根据需要选择其他位置。如果您指定了自定义位置,则两个环境的服务账号都必须拥有对指定位置的读取和写入权限。
等待 Managed Airflow 创建快照。
创建快照后,显示的消息会输出快照的位置。保存此信息,以便稍后在将此快照加载到 Managed Airflow(第 3 代)环境时使用。
例如,快照位置可能如下所示:
gs://us-central1-example-916807e1-bucket/snapshots/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12。
gcloud
创建 Managed Airflow(第 2 代)环境的快照:
gcloud composer environments snapshots save \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION将
- 将
COMPOSER_2_ENV替换为您的 Managed Airflow(第 2 代)环境的名称。 - 将
COMPOSER_2_LOCATION替换为托管式 Airflow(第 2 代)环境所在的区域。 (可选)您可以使用
--snapshot-location实参指定必须存储环境快照的自定义位置。在本指南中,您将快照保存在 Managed Airflow(第 2 代)环境的存储桶中,但您也可以根据需要选择其他位置。如果您指定了自定义位置,则两个环境的服务账号都必须拥有对指定位置的读取和写入权限。
- 将
创建快照后,显示的消息会输出快照的位置。保存此信息,以便稍后在将此快照加载到 Managed Airflow(第 3 代)环境时使用。
例如,快照位置可能如下所示:
gs://us-central1-example-916807e1-bucket/snapshots/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12。
创建 Managed Airflow(第 3 代)环境
按照以下准则创建 Managed Airflow (Gen 3) 环境:
您可以从与 Managed Airflow(第 2 代)环境相同的资源限制配置开始,然后再进一步扩缩和优化配置。
在 Managed Airflow(第 3 代)环境中,Airflow DAG 处理器作为单独的环境组件运行。由于 DAG 处理器会从调度器卸载 DAG 解析,因此您可能需要重新分配之前分配给 Airflow 调度器的资源。您可以在迁移到 Managed Airflow(第 3 代)并监控调度程序和 DAG 处理器性能后,再执行此操作。
与托管式 Airflow(第 2 代)相比,托管式 Airflow(第 3 代)可提供更精简、更简化的网络设置。您可以在公共 IP 和专用 IP 网络配置之间切换,并附加和分离 VPC 网络。您无需指定 IP 范围。确保 Managed Airflow(第 3 代)环境的网络配置与相应的 Managed Airflow(第 2 代)配置相匹配。
您无需指定配置替换和环境变量,因为您稍后会在加载 Managed Airflow(第 2 代)环境的快照时替换它们。
将快照加载到 Managed Airflow (Gen 3) 环境中
控制台
如需将快照加载到您的 Managed Airflow(第 3 代)环境,请执行以下操作:
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的 Managed Airflow(第 3 代)环境的名称。环境详情页面会打开。
点击加载快照。
在加载快照对话框中,点击浏览。
选择包含快照的文件夹。
如果您使用本指南中的默认位置,则此文件夹位于 Managed Airflow(第 2 代)环境存储桶的
/snapshots文件夹中,其名称是快照保存操作的时间戳。在有关成功创建快照的消息中,系统会显示相同的位置。例如:
us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12。点击加载,然后等待 Managed Airflow 加载快照。
gcloud
将托管式 Airflow(第 2 代)环境的快照加载到托管式 Airflow(第 3 代)环境中:
gcloud composer environments snapshots load \
COMPOSER_3_ENV \
--location COMPOSER_3_LOCATION \
--snapshot-path "SNAPSHOT_PATH"
将
- 将
COMPOSER_3_ENV替换为您的 Managed Airflow(第 3 代)环境名称。 - 将
COMPOSER_3_LOCATION替换为 Managed Airflow(第 3 代)环境所在的区域。 - 将
SNAPSHOT_PATH替换为您的 Managed Airflow(第 2 代)环境的存储桶的 URI,后跟快照的路径。在有关成功创建快照的消息中,系统会显示相同的位置。例如:gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2024-05-15T15-23-12。
在 Managed Airflow(第 3 代)环境中取消暂停 DAG
您可以使用以下任一选项:
在 Google Cloud 控制台中逐一取消暂停 DAG:
在 Google Cloud 控制台中,前往环境页面。
选择环境以查看其详细信息。
在环境详情页面上,前往 DAG 标签页。
点击 DAG 的名称。
在 DAG 详情页面上,点击 Unpause DAG。
在 Airflow 网页界面中,前往 DAG,然后手动逐个解除暂停状态所有 DAG。
使用 composer_dags 脚本取消暂停所有 DAG:
python3 composer_dags.py --environment COMPOSER_3_ENV \ --project PROJECT_ID \ --location COMPOSER_3_LOCATION \ --operation unpause将
- 将
COMPOSER_3_ENV替换为您的 Managed Airflow(第 3 代)环境名称。 - 将
PROJECT_ID替换为项目 ID。 COMPOSER_3_LOCATION替换为环境所在的区域。
- 将
检查 DAG 错误
在 Airflow 网页界面中,转到 DAG 并查看报告的 DAG 语法错误。
检查 DAG 运行是否安排在正确的时间。
等待 DAG 在 Managed Airflow(第 3 代)环境中运行并检查运行是否成功。如果 DAG 运行成功,请不要在 Managed Airflow(第 2 代)环境中取消暂停该 DAG。如果这样做,则 DAG 会在 Managed Airflow(第 2 代)环境中以相同的时间和日期运行。
如果特定 DAG 运行失败,请尝试排查该 DAG 的问题,直到它在 Managed Airflow(第 3 代)中成功运行为止。
监控托管式 Airflow(第 3 代)环境
将所有 DAG 和配置转移到 Managed Airflow(第 3 代)环境后,请监控其是否存在潜在问题、DAG 运行失败以及环境整体运行状况。
如果 Managed Airflow(第 3 代)环境在足够长的时间内正常运行,请考虑删除 Managed Airflow(第 2 代)环境。