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

托管式 Airflow(第 3 代) | 托管式 Airflow(第 2 代) | 托管式 Airflow(旧版第 1 代)

本页面介绍如何使用迁移脚本将 DAG、数据和配置从现有的代管式 Airflow(第 2 代)环境迁移到新的代管式 Airflow(第 3 代)环境。

发件人 收件人 方法 指南
Managed Airflow(第 3 代),Airflow 2 托管式 Airflow(第 3 代),Airflow 3 并排手动转移 手动迁移指南
Managed Airflow(第 2 代) 托管式 Airflow(第 3 代) 使用迁移脚本进行并排比较 这一指南
Managed Airflow(第 2 代) 托管式 Airflow(第 3 代) 并排比较(使用快照) 快照迁移指南
Managed Airflow(旧版第 1 代)、Airflow 2 托管式 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 代)的迁移过程。它使用环境快照将环境的配置转移到新环境。

该脚本会执行以下操作:

  1. 获取 Managed Airflow(第 2 代)环境的配置。

  2. 创建配置与所获配置相匹配的 Managed Airflow (Gen 3) 环境。

    由于受管 Airflow (Gen 3) 环境具有不同的架构,因此可能需要调整某些参数以适应这些差异。您也可以稍后调整大多数环境参数。

  3. 逐个暂停 Managed Airflow(第 2 代)环境中的所有 DAG。只有在 Managed Airflow(第 2 代)环境中取消暂停的 DAG 才会稍后取消暂停。

  4. 保存源 Managed Airflow (Gen 2) 环境的快照。快照会保存在快照的默认位置,即 Managed Airflow(第 2 代)环境的存储桶中。

  5. 将快照加载到 Managed Airflow(第 3 代)环境中。

    该脚本不会检查自定义 PyPI 软件包、环境变量和 Airflow 配置选项替换与 Managed Airflow(第 3 代)环境的兼容性。

    如果发生冲突,则在创建托管式 Airflow(第 3 代)环境后,在加载快照的过程中,迁移会失败。在这种情况下,您可以调整受管 Airflow(第 2 代)环境的配置以解决冲突,也可以在不使用迁移脚本的情况下进行迁移,并在加载快照时跳过加载自定义 PyPI 软件包、环境变量或 Airflow 配置替换。

  6. 取消暂停 Managed Airflow(第 3 代)环境中的 DAG。如果您在运行脚本之前已暂停某些 DAG,这些 DAG 将保持暂停状态。

该脚本具有以下限制:

  • 该脚本始终会创建新的 Managed Airflow(第 3 代)环境。无法将快照加载到现有的 Managed Airflow(第 3 代)环境中。为此,您可以使用快照进行迁移,而无需使用迁移脚本。

  • 该脚本仅在与 Managed Airflow (Gen 2) 环境相同的区域和项目中创建 Managed Airflow (Gen 3) 环境。

  • 您只能将快照加载到相同或更高版本的 Airflow 中。例如,您无法将快照从 Airflow 2.10.2 加载到 Airflow 2.9.3。

  • 只有 Managed Airflow(第 2 代)环境可以通过迁移脚本进行迁移。

准备工作

  • 由于迁移脚本会创建环境,然后保存并加载快照,因此迁移过程可能需要一个多小时。

  • 该脚本使用快照。支持快照

  • 在托管式 Airflow(第 2 代)版本 2.0.9 及更高版本中。

  • 您的账号需要具备可创建环境、保存快照和加载快照的 IAM 角色

  • 支持快照的 Airflow 数据库的最大大小为 20 GB。如果环境的数据库占用超过 20 GB 的空间,请减小 Airflow 数据库的大小

  • 如需创建快照,环境的存储桶中 /dags/plugins/data 文件夹中的对象总数必须少于 10 万个。

  • 如果您使用 XCom 机制来传输文件,请确保按照 Airflow 的指南使用该机制。使用 XCom 传输大型文件或大量文件会影响 Airflow 数据库的性能,并可能导致在加载快照或升级环境时出现故障。建议使用 Cloud Storage 等替代方案来传输大量数据。

迁移到 Managed Airflow(第 3 代)

本部分介绍使用迁移脚本的迁移流程。

了解托管式 Airflow(第 2 代)和托管式 Airflow(第 3 代)之间的区别

查看托管式 Airflow(第 2 代)和托管式 Airflow(第 3 代)之间的差异列表

确保您的环境不使用托管式 Airflow(第 3 代)中尚未提供的功能,并且您熟悉如何使用和配置托管式 Airflow(第 3 代)特有的功能。

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

请按照以下建议操作,确保您的 DAG 与托管式 Airflow(第 3 代)兼容:

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

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

检查配置兼容性

您可以执行升级检查,看看您的受管 Airflow(第 2 代)环境的配置是否与受管 Airflow(第 3 代)兼容。建议您先解决此检查报告的所有阻塞性冲突,然后再开始迁移。

安装脚本的依赖项

  • 该脚本需要 Python 3.8 版及更高版本。

  • 迁移脚本使用 gcloud CLI 和 curl 实用程序。确保您的计算机上安装了这两个实用程序。

下载脚本:

GitHub 上的代码库下载迁移脚本 (composer_migrate.py)。

在 gcloud CLI 中授权

在 gcloud CLI 中授权

gcloud auth login

预览新环境的参数

您可以在迁移之前预览受管理的 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:您的托管式 Airflow(第 2 代)环境的名称。
  • LOCATION:托管式 Airflow(第 2 代)环境所在的区域。 托管式 Airflow (Gen 3) 环境将在同一区域中创建。
  • COMPOSER_3_AIRFLOW_VERSION:托管式 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 代)环境运行正常。

如果您的环境状况不佳,迁移过程将在创建新的托管式 Airflow (Gen 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:您的托管式 Airflow(第 2 代)环境的名称。
  • LOCATION:托管式 Airflow(第 2 代)环境所在的区域。 托管式 Airflow (Gen 3) 环境将在同一区域中创建。
  • COMPOSER_3_AIRFLOW_VERSION:托管式 Airflow(第 3 代)环境的 Airflow 版本。此版本必须与 Managed Airflow(第 2 代)环境中的版本相同或更高,并且必须是 Managed Airflow(第 3 代)中可用的版本之一。

检查 DAG 错误

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

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

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

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

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

监控 Managed Airflow(第 3 代)环境,以发现潜在问题、失败的 DAG 运行和整体环境健康状况。

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

后续步骤