将环境迁移到 Managed Airflow(第 3 代)

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 并排、手动转移 手动迁移指南
托管式 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 文件夹中的对象总数必须少于 100,000 个。

  • 如果您使用 XCom 机制来转移文件,请确保您 按照 Airflow 的准则使用该机制。 使用 XCom 转移大型文件或大量文件会影响 Airflow 数据库的性能,并可能导致在加载快照或升级环境时失败。建议考虑使用 Cloud Storage 等替代方案来转移大量数据。

确保您的 DAG 与 Managed Airflow(第 3 代)兼容

按照以下建议确保您的 DAG 与 Managed Airflow(第 3 代)兼容:

  • 托管式 Airflow(第 3 代)环境中的软件包列表可能与托管式 Airflow(第 2 代)环境中的不同。这可能会影响 DAG 与 Managed Airflow(第 3 代)的兼容性。

  • 托管式 Airflow 会将配置替换、环境变量 和 PyPI 软件包 从托管式 Airflow(第 2 代)环境的快照加载到 托管式 Airflow(第 3 代),而不会更改或调整它们以实现 兼容性。如需解决这些配置参数之间的冲突,您可以在加载快照时跳过加载自定义 PyPI 软件包、环境变量和 Airflow 配置替换。

  • 在 Managed Airflow(第 3 代)中,环境的集群 位于租户项目中。确保您的 DAG 与此更改兼容。特别是, KubernetesPodOperator 工作负载现在独立于 您的环境进行扩缩,并且无法使用 Pod 亲和性配置。

暂停托管式 Airflow(第 2 代)环境中的 DAG

为避免重复运行 DAG,请在保存 Managed Airflow(第 2 代)环境的快照之前暂停该环境中的所有 DAG。跳过活跃度监控 DAG (airflow_monitoring),它用于监控目的,不包含在环境快照中。

您可以使用以下任一选项来暂停 DAG:

  • 在 Google Cloud 控制台中逐一暂停 DAG:

    1. 在 Google Cloud 控制台中,前往环境页面。

      转到“环境”

    2. 选择环境以查看其详细信息。

    3. 环境详情 页面上,前往 DAG 标签页。

    4. 点击 DAG 的名称。

    5. 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 代)环境的快照

控制台

创建环境的快照:

  1. 在 Google Cloud 控制台中,前往环境 页面。

    转到“环境”

  2. 在环境列表中,点击您的 Managed Airflow(第 2 代)环境名称。环境详情 页面会打开。

  3. 点击创建快照

  4. 创建快照 对话框中,点击提交 。在本指南中,您将快照保存在 Managed Airflow(第 2 代)环境的存储桶中,但您可以根据需要选择其他位置。如果您指定自定义位置,则两个环境的服务账号都必须对指定位置具有读取和写入权限。

  5. 等待 Managed Airflow 创建快照。

  6. 创建快照后,显示的消息会输出快照的位置。保存此信息,以便稍后在将此快照加载到 Managed Airflow(第 3 代)环境时使用。

    例如,快照位置可能如下所示:gs://us-central1-example-916807e1-bucket/snapshots/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12

gcloud

  1. 创建 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 代)环境的存储桶中,但您可以根据需要选择其他位置。如果您指定自定义位置, 两个环境的服务账号 都必须对指定位置具有读取和写入权限。

  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(第 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 代)配置匹配。

  • 您无需指定配置替换和环境变量,因为您稍后会在加载托管式 Airflow(第 2 代)环境的快照时替换它们。

将快照加载到 Managed Airflow(第 3 代)环境

控制台

如需将快照加载到 Managed Airflow(第 3 代)环境,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往环境 页面。

    转到“环境”

  2. 在环境列表中,点击您的托管式 Airflow(第 3 代)环境名称。环境详情 页面会打开。

  3. 点击加载快照

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

  5. 选择包含快照的文件夹。

    如果您在本指南中使用默认位置,则此文件夹位于 Managed Airflow(第 2 代)环境存储桶的 /snapshots 文件夹中,其名称是快照保存操作的时间戳。在有关成功创建快照的消息中显示了相同的位置。

    例如:us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12

  6. 点击加载 ,等待 Managed Airflow 加载快照。

gcloud

将 Managed Airflow(第 2 代)环境的快照加载到 Managed 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

取消暂停托管式 Airflow(第 3 代)环境中的 DAG

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

  • 在 Google Cloud 控制台中逐一取消暂停 DAG:

    1. 在 Google Cloud 控制台中,前往环境页面。

      转到“环境”

    2. 选择环境以查看其详细信息。

    3. 环境详情 页面上,前往 DAG 标签页。

    4. 点击 DAG 的名称。

    5. DAG 详情 页面上,点击取消暂停 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 错误

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

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

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

  4. 如果特定 DAG 运行失败,请尝试对该 DAG 进行 问题排查,直到它在 Managed Airflow(第 3 代)中成功 运行为止。

监控托管式 Airflow(第 3 代)环境

将所有 DAG 和配置转移到 Managed Airflow(第 3 代)环境后,请监控其是否存在潜在问题、DAG 运行失败以及环境整体运行状况。

如果 Managed Airflow(第 3 代)环境在足够长的时间内正常运行,请考虑删除 Managed Airflow(第 2 代)环境。

后续步骤