Cloud Composer 1 | Cloud Composer 2
本页面介绍了如何使用环境快照保存和加载环境状态。
您可以将环境配置为自动保存快照。如需了解详情,请参阅配置计划快照。
环境快照简介
环境快照会存储环境的状态。您可以按需保存和加载环境快照。
您可以使用快照执行以下操作:
- 将环境迁移到后续的 Composer 或 Airflow 主要版本。
如何存储快照
环境快照是一组描述环境状态并存储环境数据的备份的文件。
您可以为环境创建多个快照。环境快照不是增量快照。您可以独立于其他快照使用任何快照。
当您删除环境时,Cloud Composer 不会删除快照。
默认情况下,Cloud Composer 将快照存储在环境存储桶的 snapshots/
文件夹中。您还可以在创建快照时指定自定义位置。
虽然为方便起见,Cloud Storage 界面将数据显示为文件夹,但存储分区可在平面文件结构中运行。这不会改变在 Google Cloud 控制台中保存和加载快照的方式,但在直接对存储桶中的文件执行操作时,请注意以下重要区别。如需了解详情,请参阅文件夹。
快照的安全注意事项
为了降低这种安全风险,您可以将 Airflow DAG 使用的敏感信息(例如密钥或密码)存储在 Secret Manager 中。如需了解详情,请参阅为您的环境配置 Secret Manager。
请务必检查环境存储桶的安全权限。如果将环境快照存储在自定义存储桶中,请确保在项目中正确配置了环境快照的访问权限。分配权限时,请确保环境的服务帐号具有足够的权限,可以在存储桶中保存和加载快照。
快照中保存了哪些数据
Cloud Composer 会将以下数据保存在快照中:
- Airflow 配置替换。
- 环境变量。
- 自定义 PyPI 软件包的列表(根据需要)。
- Airflow 数据库的备份,包括已执行任务的状态和 DAG 运行历史记录。
- 环境存储桶中的
/dags
、/data
和/plugins
文件夹的备份。 - 环境的 Fernet 密钥。
- 有关环境配置的其他信息,例如环境的规模和性能参数。Cloud Composer 在加载快照时不会使用此信息。
从快照中加载了哪些数据
Cloud Composer 会从快照中加载以下数据:
- Airflow 配置替换。
- 环境变量。
自定义 PyPI 软件包(除非您选择跳过安装步骤)。
Airflow 数据库的内容,包括已执行任务的状态和 DAG 运行历史记录。
快照中的
/dags
、/data
和/plugins
文件夹的内容将加载到环境的存储桶中。快照中的 fernet 密钥用于通过环境自己的 Fernet 密钥重新加密快照中的数据。环境的 Fernet 密钥保持不变。
虽然 Cloud Composer 会将一些与环境配置有关的信息存储在快照中,但加载快照时不使用这些信息。加载快照时,环境的以下参数不会更改:
- 环境配置,例如环境规模和性能参数。
- 环境的网络配置。
/dags
、/data
和/plugins
文件夹之外的环境存储桶的内容。- 环境标签。
当您加载快照时,您在未使用 Cloud Composer API 的情况下在 Cloud Composer 基础架构中应用的任何设置都可能会丢失。
关于部分完成的操作
加载快照时,操作可能成功、失败或部分完成:
- 成功的操作会从快照加载所有数据。
- 失败的操作不会引入任何更改。
- 部分完成的操作会从快照中加载数据子集。此类操作会报告为失败,但错误消息会指明已成功加载哪些数据。例如,如果安装了 PyPI 软件包,但 Airflow 配置选项替换未成功,则错误消息会指明这一点。
对于部分完成的操作,您可以尝试再次加载同一快照。Cloud Composer 会跳过之前尝试成功的步骤。例如,如果某项操作因超时而失败,但数据库已成功加载,则下一次尝试不会再次加载数据库。
准备工作
- 在 Cloud Composer 1 中,您只能保存快照,但不能加载快照。您可以将 Cloud Composer 1 环境中的快照加载到 Cloud Composer 2 环境中。
Cloud Composer 2 版本 2.0.9 及更高版本支持快照。对于 1.18.5 及以上版本,Cloud Composer 1 支持保存环境快照。
快照不会创建环境。如果要将某个环境中的快照加载到其他环境,您首先需要创建一个新环境,然后将快照加载到该环境中。
您无法将快照加载到处于错误状态的环境。您无法通过加载快照来修复此类环境。您仍然可以将现有快照加载到新环境。
您只能将快照加载到相同或更高版本的 Cloud Composer 或 Airflow。例如,您无法将 Cloud Composer 2.0.2 中的快照加载到使用 Cloud Composer 2.0.1 的环境中。又例如,您无法将快照从 Airflow 2.2.3 加载到 Airflow 2.1.4。
快照不会更改 Cloud Composer 版本。如果您将环境升级到更高版本的 Cloud Composer,然后从早期版本加载快照,则您的环境仍会保留其 Cloud Composer 的当前版本。例如,将快照从 Cloud Composer 2.0.1 加载到 Cloud Composer 2.0.2 并不会将环境还原为 Cloud Composer 2.0.1。
支持快照的 Airflow 数据库大小上限为 20 GB。如果环境的数据库超过 20 GB,请先缩减 Airflow 数据库的大小,然后再保存快照。
如果您将快照保存在环境存储桶之外的位置,则环境的服务帐号必须拥有指定位置的读写权限。例如,Storage Object Admin 角色具有此类权限。您可以将其应用于项目或特定存储桶。
创建和存储快照会产生与 Cloud Storage 相关的额外费用。如需了解详情,请参阅价格。
保存环境快照
Cloud Composer 会将环境快照保存在一个子文件夹(相对于您指定的文件夹)中。文件夹名称包含项目 ID、环境位置、环境名称以及保存快照时的时间戳。例如:/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
。
如需创建环境的快照,请执行以下操作:
在 Google Cloud 控制台中,转到环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
点击保存快照。
在保存快照对话框中,选择快照的存储位置:
如需将快照存储在环境存储桶的
/snapshots
文件夹中,请选择使用环境存储桶中的快照文件夹(默认)。如需将快照存储在自定义文件夹中,请选择在另一个存储桶中使用自定义文件夹,然后指定位置。
点击保存。
gcloud beta composer environments snapshots save
命令会保存您的环境快照。
snapshot-location
参数指定保存快照的文件夹。默认情况下,快照保存在环境存储桶的/snapshots
文件夹中。例如gs://us-central1-example-916807e1-bucket/snapshots
。您还可以指定任何其他文件夹。
如需保存环境的快照,请运行以下命令:
gcloud beta composer environments snapshots save \
ENVIRONMENT_NAME \
--location LOCATION \
--snapshot-location "SNAPSHOTS_FOLDER "
您需要将其中的:
ENVIRONMENT_NAME
替换为环境的名称。LOCATION
替换为环境所在的区域。- (可选)将
SNAPSHOTS_FOLDER
替换为用于存储快照的存储桶文件夹的 URI。如果省略此参数,Cloud Composer 会将快照保存在您环境存储桶的/snapshots
文件夹中。
以下示例使用默认位置:
gcloud beta composer environments snapshots save \
example-environment \
--location us-central1
以下示例会保存到自定义文件夹:
gcloud beta composer environments snapshots save \
example-environment \
--location us-central1 \
--snapshot-location "gs://example-bucket/environment_snapshots"
构建
environments.saveSnapshot
API 请求。在请求正文的
snapshotLocation
字段中,指定要保存快照的文件夹。
{
"snapshotLocation": "SNAPSHOTS_FOLDER "
}
您需要将其中的:
- 将
SNAPSHOTS_FOLDER
替换为用于保存快照的存储桶文件夹的 URI。
示例:
// POST https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment:saveSnapshot
{
"snapshotLocation": "gs://us-central1-example-916807e1-bucket/snapshots"
}
无法从 Terraform 保存和加载环境快照。
保存和加载快照是在环境上执行的操作,生成的快照不属于环境定义的一部分。由于 Terraform 仅管理 Cloud Composer 环境的配置,因此您无法从中保存或加载环境快照。
加载环境快照
在 Cloud Composer 1 中,您只能保存快照,但不能加载快照。您可以将 Cloud Composer 1 环境中的快照加载到 Cloud Composer 2 环境中。例如,当您将环境迁移到 Cloud Composer 2 时。