Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3
本页面介绍如何将 DAG、数据和配置从现有 Cloud Composer 1、Airflow 1 环境转移到 Cloud Composer 2、Airflow 2。
本迁移指南使用了快照功能。
其他迁移指南
从 | 到 | 方法 | 指南 |
---|---|---|---|
Cloud Composer 1、Airflow 2 | Cloud Composer 2、Airflow 2 | 并排显示,使用快照 | 迁移指南(快照) |
Cloud Composer 1、Airflow 1 | Cloud Composer 2、Airflow 2 | 并排显示,使用快照 | 本指南(快照) |
Cloud Composer 1、Airflow 2 | Cloud Composer 2、Airflow 2 | 并排手动传输 | 手动迁移指南 |
Cloud Composer 1、Airflow 1 | Cloud Composer 2、Airflow 2 | 并排手动传输 | 手动迁移指南 |
Airflow 1 | Airflow 2 | 并排手动传输 | 手动迁移指南 |
准备工作
Cloud Composer 2 2.0.9 版及更高版本支持快照。 在 1.18.5 版中,Cloud Composer 1 支持保存环境快照。
Cloud Composer 支持从 Cloud Composer 1 并行迁移到 Cloud Composer 2。无法从 Cloud Composer 1 就地升级到 Cloud Composer 2。
支持快照的 Airflow 数据库大小上限为 20 GB。如果 环境的数据库占用的空间超过 20 GB, 减小 Airflow 数据库的大小。
由于 Cloud Composer 2 使用 Airflow 2,因此迁移包括将 DAG 和环境配置切换为 Airflow 2。如需了解 Cloud Composer 的 Airflow 1 和 Airflow 2 之间的重大更改,请参阅从 Airflow 1 到 Airflow 2 的迁移指南。
在本指南中,您将迁移到 Airflow 2 和迁移到 Cloud Composer 2 合并到一个迁移过程中。通过这种方式,您无需在迁移到 Cloud Composer 2 之前使用 Airflow 2 迁移到 Cloud Composer 1 环境。
第 1 步:升级到 Airflow 1.10.15
如果您的环境使用低于 1.10.15 的 Airflow 版本, 将您的环境升级到 Cloud Composer 版本(使用 Airflow 1.10.15 和 支持快照
第 2 步:检查与 Airflow 2 的兼容性
如需检查与 Airflow 2 的潜在冲突,请在现有 Airflow 1.10.15 环境中使用 Airflow 提供的升级检查脚本。
gcloud
通过
gcloud composer environments run
命令运行升级检查。一些与独立 Airflow 1.10.15 相关的升级检查与 Cloud Composer 无关。以下命令排除了这些检查。gcloud composer environments run \ COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION \ upgrade_check \ -- --ignore VersionCheckRule --ignore LoggingConfigurationRule \ --ignore PodTemplateFileRule --ignore SendGridEmailerMovedRule
替换:
- 将
COMPOSER_1_ENV
替换为您的 Airflow 1.10.15 环境名称。 COMPOSER_1_LOCATION
替换为环境所在的区域。
- 将
检查该命令的输出。更新检查脚本会报告现有环境中的潜在兼容性问题。
实现对 DAG 的其他更改,如《升级到 Airflow 2.0 及更高版本》指南的升级 DAG 部分中所述。
第 3 步:确保您的 DAG 已准备好使用 Airflow 2
在将 DAG 转移到 Cloud Composer 2 环境之前,请确保:
您的 DAG 升级检查脚本已成功运行,没有剩余的兼容性问题。
您的 DAG 会使用正确的导入语句。
例如,
BigQueryCreateDataTransferOperator
的新导入语句可能如下所示:from airflow.providers.google.cloud.operators.bigquery_dts \ import BigQueryCreateDataTransferOperator
您的 DAG 已针对 Airflow 2 升级。此变更与 Airflow 1.10.14 及更高版本兼容。
第 4 步:在 Cloud Composer 1 环境中暂停 DAG
为避免重复的 DAG 运行,请暂停 Cloud Composer 中的所有 DAG 1 然后再保存其快照
您可以使用以下任何选项:
在 Airflow 网页界面中, 前往 DAG 并手动暂停所有 DAG。
使用 composer_dags 脚本暂停所有 DAG:
python3 composer_dags.py --environment COMPOSER_1_ENV \ --project PROJECT_ID \ --location COMPOSER_1_LOCATION \ --operation pause
您需要将其中的:
- 将
COMPOSER_1_ENV
替换为 Cloud Composer 1 环境的名称。 - 将
PROJECT_ID
替换为项目 ID。 COMPOSER_1_LOCATION
替换为环境所在的区域。
- 将
第 5 步:保存 Cloud Composer 1 环境的快照
控制台
创建环境的快照:
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击 Cloud Composer 1 环境。环境详情页面会打开。
点击创建快照。
在创建快照对话框中,点击提交。在 您需要将快照保存在 Cloud Composer 1 环境的 但您可以根据需要选择其他位置
等待 Cloud Composer 创建快照。
gcloud
获取 Cloud Composer 1 环境的存储桶 URI:
运行以下命令:
gcloud composer environments describe COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ --format="value(config.dagGcsPrefix)"
您需要将其中的:
- 将
COMPOSER_1_ENV
替换为您的 Cloud Composer 1 的名称 环境 - 将
COMPOSER_1_LOCATION
替换为环境所在的区域。
- 将
在输出中,移除
/dags
文件夹。结果是 Cloud Composer 1 环境的存储桶中。例如,将
gs://us-central1-example-916807e1-bucket/dags
更改为gs://us-central1-example-916807e1-bucket
。
创建 Cloud Composer 1 环境的快照:
gcloud composer environments snapshots save \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ --snapshot-location "COMPOSER_1_SNAPSHOTS_FOLDER"
您需要将其中的:
- 将
COMPOSER_1_ENV
替换为 Cloud Composer 1 环境的名称。 - 将
COMPOSER_1_LOCATION
替换为 Cloud Composer 1 环境所在的区域。 - 将
COMPOSER_1_SNAPSHOTS_FOLDER
替换为您的 Cloud Composer 1 的 URI 环境的存储桶中。在本指南中,您需要将快照保存在 Cloud Composer 1 环境的存储桶,但您可以选择 。如果您指定了自定义地理位置 两个环境的服务账号都必须 对指定位置具有读写权限。
- 将
第 6 步:创建 Cloud Composer 2 环境
创建一个 Cloud Composer 2 环境。您可以 先根据自己的偏好设定环境预设值 满足预期的资源需求,进而扩展并优化您的环境 。
您无需 请指定配置替换和环境变量
Airflow 1 中的一些配置选项在 Airflow 2 中使用不同的名称和部分。如需了解详情,请参阅配置更改。
第 7 步:将快照加载到 Cloud Composer 2 环境
控制台
如需将快照加载到 Cloud Composer 2 环境中,请执行以下操作:
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击 Cloud Composer 2 环境。环境详情页面会打开。
点击加载快照。
在加载快照对话框中,点击浏览。
选择快照所在的文件夹。如果您使用默认位置 此文件夹位于您的 Cloud Composer 1 环境中
/snapshots
文件夹中的存储桶,其名称是 快照保存操作。例如us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2022-01-05T18-59-00
。点击加载,然后等待 Cloud Composer 加载快照。
gcloud
将您的 Cloud Composer 1 环境的快照加载到 Cloud Composer 2 环境:
gcloud composer environments snapshots load \
COMPOSER_2_ENV \
--location COMPOSER_2_LOCATION \
--snapshot-path "SNAPSHOT_PATH"
您需要将其中的:
- 将
COMPOSER_2_ENV
替换为 Cloud Composer 2 环境的名称。 - 将
COMPOSER_2_LOCATION
替换为 Cloud Composer 2 环境所在的区域。 - 将
SNAPSHOT_PATH
替换为您的 Cloud Composer 1 的 URI 环境的存储桶,后跟快照的路径。例如,gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
。
第 8 步:在 Cloud Composer 2 环境中取消暂停 DAG
您可以使用以下任何选项:
在 Airflow 网页界面中, 前往 DAG,然后逐个手动取消暂停所有 DAG。
使用 composer_dags 脚本取消暂停所有 DAG:
python3 composer_dags.py --environment COMPOSER_2_ENV \ --project PROJECT_ID \ --location COMPOSER_2_LOCATION \ --operation unpause
您需要将其中的:
- 将
COMPOSER_2_ENV
替换为 Cloud Composer 2 环境的名称。 - 将
PROJECT_ID
替换为项目 ID。 COMPOSER_2_LOCATION
替换为环境所在的区域。
- 将
第 9 步:检查是否存在 DAG 错误
在 Airflow 网页界面中,转到 DAG 并查看报告的 DAG 语法错误。
检查是否将 DAG 运行安排在正确的时间。
等待 DAG 在 Cloud Composer 2 环境中运行并检查运行是否成功。如果 DAG 运行成功,请不要在 Cloud Composer 1 环境中取消暂停该 DAG。如果这样做,则 DAG 会在 Cloud Composer 1 环境中以相同的时间和日期运行。
如果特定 DAG 运行失败,请尝试执行以下操作: 排查 DAG 问题,直到成功 在 Cloud Composer 2 中运行。
第 10 步:监控 Cloud Composer 2 环境
将所有 DAG 和配置转移到 Cloud Composer 后 监控其是否存在潜在问题、失败的 DAG 运行以及 环境健康状况
如果 Cloud Composer 2 环境在足够长的时间内正常运行,请考虑删除 Cloud Composer 1 环境。