使用环境快照进行灾难恢复

Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3

本页面介绍了如何将环境快照用于 灾难恢复

定义

本指南使用以下定义:

  • 灾难是指 Cloud Composer 或其他组件 无法运行此活动 需要故障切换到其他区域和 Cloud Composer 环境灾难的原因可能是自然的,也可能是人为的, 包括 Google Cloud 区域的停机和自行发生的服务中断 基础架构
  • 灾难恢复 (DR) 在 Cloud Composer 环境中, 灾难发生后恢复环境运行的过程。通过 此过程涉及重新创建环境(可能需要在其他区域)。 如需详细了解灾难恢复,请参阅 灾难恢复规划指南
  • 主要环境是您刚才创建的 Cloud Composer 环境, 灾难恢复功能。
  • Cloud Composer 环境 从主要环境中接管活动
  • 温灾难恢复场景是灾难恢复的变体,使用备用实例 您在灾难发生前创建的故障切换环境。
  • 冷灾难恢复场景是灾难恢复的变体,您需要创建 管理灾难发生后的故障切换环境
  • 跨区域灾难恢复是暖或冷灾难恢复的变体,其中 主要环境和故障切换环境位于不同的区域。

关于灾难恢复过程

灾难恢复过程可解决当主服务器发生故障时 环境已经失效(损坏或无法访问), 是一场灾难

此过程假定您的主要环境不会被修复 应对灾难。而是创建第二个服务器(故障切换) 环境此环境不是在主要环境中运行 环境之后,您可能会决定切换回主要版本 环境还是继续使用故障切换环境。

由于该过程使用故障切换环境,因此会引入一些变化 。主实例和 故障切换环境包括(该列表并不详尽):

  • Web 服务器网址将有所不同。这会更改 Airflow 界面和 Airflow REST API 端点。

  • 环境的存储桶网址将有所不同。

  • 您可能需要调整网络和访问权限配置。

如果使用热 DR 场景,您知道 Web 服务器的值, 环境的存储桶地址以及网络配置。

准备工作

  • Cloud Composer 在 2.0.32 及更高版本中支持计划快照。2.0.9 及更高版本支持环境快照。

准备工作概览

这两种灾难恢复场景都包含以下准备步骤:

  1. 创建故障切换环境

    • 在热 DR 场景中,您可以保持此环境可用。
    • 在冷灾难恢复场景中,创建此环境只是为了测试 灾难恢复过程。准备工作完成后,您需要 删除此环境,并在灾难发生后重新创建它。
  2. 为快照创建存储桶

    • 此存储桶必须在灾难恢复区域中可用。对于跨区域灾难恢复, 快照存储桶必须是多区域位置或位于 与主要环境不同的区域。

    • 检查 DAG 是否可以访问区域级资源。

  3. 设置数据库维护

  4. 设置计划快照

  5. 测试灾难恢复过程

灾难恢复概览

灾难发生后:

  1. (仅限冷灾难恢复)创建故障切换环境
  2. 如果可能,请停止主环境执行 DAG
  3. 从快照存储桶加载快照到故障切换 环境
  4. 如果需要, 调整故障切换环境的配置
  5. 决定如何处理主要环境

准备步骤

按照下面列出的步骤,为您的环境设置灾难恢复。

创建故障切换环境

创建一个充当故障切换环境的环境

请遵循以下准则:

  • 您的主要环境和故障切换环境必须使用相同版本的 Cloud Composer 和 Airflow。

  • 在热 DR 场景中,请务必执行更新和 同步升级这两个环境。例如,如果您 将主要环境升级到更高版本的 Cloud Composer 或者安装 PyPI 软件包,则您的故障切换环境还必须 这些更改

  • 我们建议在不同于 主要环境因此,更大范围可能发生的灾难 例如,灾难发生时 整个区域

  • 我们建议使用 Terraform 创建主实例和故障切换 确保两者的配置保持一致。请确保 主要环境和故障切换环境的 Terraform 定义均为 已同步。

  • 故障切换环境的配置(例如环境大小、 调度器数量和 IAM 权限) 与主要环境的配置一致。 两个环境的 IAM 权限都必须 对用户和快照的适当访问权限。

检查资源可用性

DAG 可以对外部资源运行,而对这些资源的访问可能 取决于环境的配置(例如授予 环境的服务账号、网络配置或项目)。制造商 确保这些资源可供故障切换环境使用。

环境可以通过 存储在 Airflow 中的连接。查看 与是否应该在故障切换环境中 主要环境

为快照创建存储桶

为环境快照创建新的存储桶。 请勿将环境存储分区用于灾难恢复,因为 保留政策和生命周期在存储桶级别应用。

确保此存储桶拥有 IAM 权限 保留政策和生命周期配置 意外删除或未经授权的访问。如需详细了解 为快照配置存储桶 配置计划快照

您可以:

  • 在其他区域中创建存储桶。
  • 创建多区域存储桶。

设置数据库维护

通过执行 数据库维护 DAG:这样做会导致 并提高快照加载速度Airflow 元数据数据库的 超过 20 GB 的数据以支持快照。

设置计划快照

为主实例设置计划快照 环境

只能在运行状况良好的环境中创建快照,因此快照必须是 并在灾难发生前保存下来

如需详细了解快照的工作原理,请参阅 保存并加载环境快照。请参阅 保存环境快照部分的 有关在何处查找已保存快照的信息的文档。

(可选)为计划快照操作设置监控

对于频率至少为每 12 小时一次的计划快照, 可以使用 Cloud Monitoring 在系统未自动创建快照时向您发出提醒。

对于降低频率的时间表,请使用 Google Cloud CLI 验证快照操作结果。 请参阅验证保存快照操作

  1. 在 Google Cloud Console 中,前往 Monitoring 页面。

    打开 Monitoring

  2. 在“监控”导航窗格中,点击 提醒
  3. 如果您尚未创建通知渠道并希望收到通知,请点击修改通知渠道并添加通知渠道。添加渠道后,返回到提醒页面。
  4. 提醒页面中,点击创建政策
  5. 如需选择指标,请展开选择指标菜单,然后执行以下操作:
    1. 如需将菜单限制为相关条目,请在过滤栏中输入 Composer Snapshot。如果过滤菜单后没有显示任何结果,请停用仅显示活跃的资源和指标切换开关。
    2. 对于 Resource type,选择 Cloud Composer Environment
    3. 对于指标类别,选择环境
    4. 对于指标,选择快照创建计数
    5. 选择应用
  6. 点击添加过滤条件,然后使用下拉菜单添加以下过滤条件:
    过滤 比较条件
    资源标签 >environment_name = 您要在其中监控计划快照的环境名称。
    监控标签 >结果 = SUCCEEDED
  7. 转换数据部分中,设置以下属性: <ph type="x-smartling-placeholder">
      </ph>
    • 对于滚动窗口,选择此提醒的监控窗口。 此值会影响下一步中的阈值配置。

      计划快照监控的建议值:1 天

    • 对于滚动窗口函数,选择 delta
  8. 点击下一步
  9. 配置提醒触发器页面中的设置决定了何时触发提醒。 请使用下表中的设置完成此页面。
    字段
    Condition type Threshold
    Alert trigger Any time series violates
    Threshold position Below threshold
    Threshold value 您预期保存的计划快照数量 在配置为滚动窗口的时间段内 。

    使用以下公式计算此值:

    (rolling window in hours / schedule frequency in hours) - 1

    注意:在公式中减去 1 小时 需要考虑不同的快照完成时间这有助于防止 如果最新快照仍在运行,则增加误报 监控检查期间

    示例
    如果您使用的是 1 天的推荐滚动期, 并且您的时间表频率为每 2 小时一次,请将此值设置为 11 (计算方法为:24 / 2 - 1 = 11)。

    如果您的时间表运行正常, 至少应有 11 个快照。 否则,则表示快照操作未完成 且 Cloud Monitoring 会触发此提醒。

    Condition name 条件的自定义名称。
  10. 点击下一步
  11. 可选:如需将通知添加到您的提醒政策中,请点击通知渠道。在对话框中,从菜单中选择一个或多个通知渠道,然后点击确定
  12. 可选:更新突发事件自动关闭持续时间。此字段用于确定在缺少指标数据的情况下 Monitoring 何时关闭突发事件。
  13. 可选:点击文档,然后添加您希望包含在通知消息中的任何信息。
  14. 点击提醒名称,然后输入提醒政策的名称。
  15. 点击 Create Policy(创建政策)。
如需了解详情,请参阅提醒政策

测试灾难恢复过程

请务必在设置好灾难恢复过程后对其进行测试,然后 之后定期更新这样你就可以解决 影响实际的灾难恢复过程

在冷灾难恢复场景中,您可以在完成配置后 完成灾难恢复过程的测试。

验证保存快照操作

您可以使用 Google Cloud CLI 检索保存快照的列表 操作,并验证您的快照是否已准备好进行灾难恢复 场景。

如果保存快照的频率低于至少一次,则此方法非常有用 12 小时。如需更加频繁地验证快照的保存频率,最好将 Cloud Monitoring 提醒。 请参阅 为计划快照操作设置监控

gcloud

列出特定环境的所有快照操作。 有关完整的命令参考,请参阅 gcloud Composer actions list 中。

gcloud composer operations list \
    --locations LOCATION \
    --filter="metadata.operationType=SAVE_SNAPSHOT AND 
    metadata.resource=projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_ID"
    --format yaml

您需要将其中的:

  • LOCATIONS 替换为环境所在的区域标识符列表 已定位
  • PROJECT_ID 替换为环境所在项目的标识符
  • ENVIRONMENT_ID 替换为您要检查快照操作的环境的标识符

示例:

gcloud composer operations list \
    --locations us-central1 \
    --filter="metadata.operationType=SAVE_SNAPSHOT AND 
    metadata.resource=projects/my-project/locations/us-central1/environments/my-environment"
    --format yaml

灾难发生后

在灾难发生后,按照下面列出的步骤来恢复您的主实例 环境

(仅限冷灾难恢复)创建故障切换环境

按照创建故障切换环境部分中的说明操作。

阻止主环境执行 DAG

如果可能,请停止主环境执行 DAG:

  • 如果主要环境仍可访问 暂停所有 DAG
  • 如果主环境的存储桶可以访问,请将所有 DAG 从 环境的存储桶中,或者导出到主实例中 /dags 外部的文件夹 环境的存储桶中。

将快照加载到故障切换环境

从主要环境中加载快照 进入故障切换环境

快照加载到故障切换环境后,它会安排和 执行任务时,假定主环境在 创建快照然而,其中一些任务可能 由主要环境执行故障切换环境没有任何 表示在创建快照后识别已执行的任务 以及灾难发生前的时间因此,某些任务可能会执行两次(在 主要环境和故障切换环境)。我们建议 具有幂等性,并且计划快照 每两小时创建一次

(如果需要)调整故障切换环境的配置

在某些情况下,您可能希望更改故障切换的配置 环境。

例如,在冷灾难恢复场景中,您可能需要使用不同的 故障切换环境中的 Airflow 环境变量。再举一个例子 在热灾难恢复场景中,您可能需要向 Airflow 界面,使用户能够访问故障切换环境。

您可以手动执行这些更改,也可以使用 命令,通过运行命令来更改故障切换环境 gcloud composer environment update 命令。

决定如何处理主要环境

由于无法访问主要环境,可能会发生一些灾难 但仍运行或无法正常运行。例如,您不能 由于使用基础架构,需要通过网络访问主要环境。 失败。再举一个例子,环境运行出现一些错误或 容量减少,但某些 DAG 仍会执行。

如果原始环境仍在运行 会产生与 Cloud Composer 或其他服务直接相关的费用 (即使作为 Cloud Storage 存储分区创建的新环境) 替换。此环境仍然可以执行某些 DAG;因此 操作可能会执行两次: 运行中以及在加载快照后的故障切换环境中。

如果主要环境存在,但无法正常运行

如果所有相关数据均已恢复,则可以删除主要环境。对于 例如,你可能需要 环境快照中未包含的数据, 例如网络配置或环境 位于 /dags/plugins 文件夹外的存储桶中。

如果主要环境可以访问且健康状况恢复良好

主要环境仅暂时无法访问,并变为 并且运行状况良好,那么您可以选择一种方法:

  • 继续使用故障切换环境。
  • 返回主要环境。

如需继续使用故障切换环境,请执行以下操作:

  1. 如果主要环境仍在执行 DAG, 暂停广告
  2. 确保所有相关数据都已恢复,然后删除主实例 环境
  3. 对故障切换环境重复灾难恢复准备步骤,例如设置 定期创建快照

要返回主要环境,请执行以下操作:

  1. 暂停故障切换环境中的所有 DAG。
  2. 等待所有 DAG 运行在故障切换环境中完成,或者停止这些运行。
  3. 保存故障切换环境的快照。
  4. 将此快照加载到主要环境。
  5. 取消暂停主要环境中的 DAG。
  6. 如果需要,请删除故障切换环境。

后续步骤