使用快照将环境迁移到 Cloud Composer 2(从 Airflow 1)

Cloud Composer 1 | Cloud Composer 2

本页面介绍如何将 DAG、数据和配置从现有 Cloud Composer 1、Airflow 1 环境转移到 Cloud Composer 2、Airflow 2。

本迁移指南使用快照功能。

其他迁移指南

From To 方法 指南
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 及更高版本支持快照。Cloud Composer 1 在 1.18.5 中支持保存环境快照。

  • Cloud Composer 支持从 Cloud Composer 1 并行迁移到 Cloud Composer 2。无法从 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

如果您的环境使用的 Airflow 版本低于 1.10.15,请将环境升级为使用 Airflow 1.10.15 并支持快照的 Cloud Composer 版本

第 2 步:检查与 Airflow 2 的兼容性

如需检查与 Airflow 2 的潜在冲突,请在现有 Airflow 1.10.15 环境中使用 Airflow 提供的升级检查脚本。

gcloud

  1. 通过 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 替换为环境所在的区域。
  2. 检查该命令的输出。更新检查脚本会报告现有环境中的潜在兼容性问题。

  3. 实现对 DAG 的其他更改,如《升级到 Airflow 2.0 及更高版本》指南的升级 DAG 部分中所述。

第 3 步:确保您的 DAG 已准备好使用 Airflow 2

在将 DAG 转移到 Cloud Composer 2 环境之前,请确保:

  1. 您的 DAG 升级检查脚本已成功运行,没有剩余的兼容性问题。

  2. 您的 DAG 会使用正确的导入语句

    例如,BigQueryCreateDataTransferOperator 的新导入语句可能如下所示:

    from airflow.providers.google.cloud.operators.bigquery_dts \
        import BigQueryCreateDataTransferOperator
    
  3. 您的 DAG 已针对 Airflow 2 升级。此变更与 Airflow 1.10.14 及更高版本兼容。

第 4 步:在 Cloud Composer 1 环境中暂停 DAG

为避免重复的 DAG 运行,请先暂停 Cloud Composer 1 环境中的所有 DAG,然后再保存其快照。

您可以使用以下任何选项:

  • 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 环境的快照

控制台

创建环境的快照:

  1. 在 Google Cloud 控制台中,转到环境页面。

    转到“环境”

  2. 在环境列表中,点击 Cloud Composer 1 环境的名称。环境详情页面会打开。

  3. 点击创建快照

  4. 创建快照对话框中,点击提交。在本指南中,您需要将快照保存在 Cloud Composer 1 环境的存储桶中,但如果需要,您可以选择其他位置。

  5. 等待 Cloud Composer 创建快照。

gcloud

  1. 获取 Cloud Composer 1 环境的存储桶 URI:

    1. 运行以下命令:

      gcloud composer environments describe COMPOSER_1_ENV \
          --location COMPOSER_1_LOCATION \
           --format="value(config.dagGcsPrefix)"
      

      您需要将其中的:

      • COMPOSER_1_ENV 替换为您的 Cloud Composer 1 环境的名称。
      • COMPOSER_1_LOCATION 替换为环境所在的区域。
    2. 在输出中,移除 /dags 文件夹。结果将是 Cloud Composer 1 环境的存储桶的 URI。

      例如,将 gs://us-central1-example-916807e1-bucket/dags 更改为 gs://us-central1-example-916807e1-bucket

  2. 创建 Cloud Composer 1 环境的快照:

    gcloud beta 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 环境。您可以先设置与预期资源需求的环境预设,之后再进一步扩缩和优化环境。

您无需指定配置替换和环境变量,因为稍后在加载 Cloud Composer 1 环境的快照时替换它们和环境变量。

Airflow 1 中的一些配置选项在 Airflow 2 中使用不同的名称和部分。如需了解详情,请参阅配置更改

第 7 步:将快照加载到 Cloud Composer 2 环境

控制台

如需将快照加载到 Cloud Composer 2 环境,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到环境页面。

    转到“环境”

  2. 在环境列表中,点击 Cloud Composer 2 环境的名称。环境详情页面会打开。

  3. 点击加载快照

  4. 加载快照对话框中,点击浏览

  5. 选择包含快照的文件夹。如果您使用本指南的默认位置,则此文件夹位于 Cloud Composer 1 环境存储桶的 /snapshots 文件夹中,其名称是快照保存操作的时间戳。例如 us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2022-01-05T18-59-00

  6. 点击加载,然后等待 Cloud Composer 加载快照。

gcloud

将 Cloud Composer 1 环境的快照加载到 Cloud Composer 2 环境中:

gcloud beta 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 错误

  1. Airflow 网页界面中,转到 DAG 并查看报告的 DAG 语法错误。

  2. 检查是否已安排在正确的时间运行 DAG。

  3. 等待 DAG 在 Cloud Composer 2 环境中运行并检查运行是否成功。如果 DAG 运行成功,请不要在 Cloud Composer 1 环境中取消暂停该 DAG。如果这样做,则 DAG 会在 Cloud Composer 1 环境中以相同的时间和日期运行。

  4. 如果特定 DAG 运行失败,请尝试对该 DAG 进行问题排查,直到该 DAG 在 Cloud Composer 2 中成功运行。

第 10 步:监控 Cloud Composer 2 环境

将所有 DAG 和配置转移到 Cloud Composer 2 环境后,请对其进行监控,以发现潜在问题、失败的 DAG 运行和总体环境运行状况。

如果 Cloud Composer 2 环境在足够长的时间内正常运行,请考虑删除 Cloud Composer 1 环境。

后续步骤