Azure 自动化的灾难恢复

适用于:✔️ Linux VM ✔️ Windows VM

本文介绍用于处理 Azure 区域范围或局部区域范围的故障的灾难恢复策略。

必须制定灾难恢复策略来处理 Azure 区域范围的服务中断或局部区域范围的故障,以帮助减轻不可预测的事件对业务和客户造成的影响。 你需要负责设置自动化帐户及其依赖资源(例如模块、连接、凭据、证书、变量和计划)的灾难恢复。 灾难恢复计划的一个重要方面是,如果主要区域中的自动化帐户不可用,就要准备好故障转移到次要区域中预先创建的自动化帐户副本。 确保灾难恢复策略考虑到了自动化帐户和依赖资源。

除了可用性区域提供的高可用性之外,某些 Azure 区域还与另一 Azure 区域配对,以便在发生区域性或大规模的地理灾难时提供保护。 无论主要区域是否有区域配对,自动化帐户的灾难恢复策略都保持不变。 了解有关区域配对的详细信息

启用灾难恢复

创建的每个自动化帐户都需要一个必须在部署中用到的位置。 此位置是自动化帐户的主要区域,其中包含资产、为自动化帐户创建的 Runbook、作业执行数据和日志。 对于灾难恢复,副本自动化帐户必须已在次要区域中部署并准备就绪。

  • 首先在任一备用区域创建一个副本自动化帐户
  • 选择次要区域 - 配对的区域或可在其中使用 Azure 自动化的任何其他区域。
  • 除了创建自动化帐户的副本之外,还要将依赖资源复制到次要区域中的自动化帐户,这些资源包括 Runbook、模块、连接、凭据、证书、变量、计划,以及为主要区域的自动化帐户中的运行方式帐户和托管标识分配的权限。 可以使用 PowerShell 脚本将自动化帐户的资产从一个区域迁移到另一个区域。
  • 如果使用 ARM 模板来定义和部署自动化 Runbook,则可以使用这些模板在创建副本自动化帐户的任何其他 Azure 区域中部署这些 Runbook。 如果主要区域中发生 Azure 区域范围的服务中断或局部区域范围的故障,可以执行在次要区域中复制的 Runbook 以继续照常营业。 这可以确保在主要区域发生中断或故障时,次要区域会接管工作。

注意

由于数据驻留要求,主要区域中的作业数据和日志在次要区域中不可用。

云和混合作业的方案

方案:在次要区域中执行云作业

对于云作业,只要副本自动化帐户以及所有依赖资源和 Runbook 已在次要区域中部署并可用,则停机时间就可以忽略不计。 可以照常使用副本帐户来执行作业。

方案:在与发生故障的主要区域不同的区域中部署的混合 Runbook 辅助角色上执行作业

如果使用基于扩展的方法将 Windows 或 Linux 混合 Runbook 辅助角色部署在一个与发生故障的主要区域不同的区域中,请按照以下步骤继续执行混合作业:

  1. 删除在主要区域的自动化帐户中的混合 Runbook 辅助角色上安装的扩展。
  2. 将同一个混合 Runbook 辅助角色添加到次要区域的自动化帐户中的混合辅助角色组。 混合辅助角色扩展安装在自动化帐户副本中的计算机上。
  3. 在通过步骤 2 创建的混合 Runbook 辅助角色上执行作业。

对于使用基于代理的方法部署的混合 Runbook 辅助角色,请从以下选项中进行选择:

如果使用基于代理的方法将 Windows 混合 Runbook 辅助角色部署在一个与发生故障的主要区域不同的区域中,请按照以下步骤继续执行混合作业:

  1. 卸载主要区域的自动化帐户中的混合 Runbook 辅助角色的代理。
  2. 在次要区域的副本自动化帐户中的同一台计算机上重新安装该代理。
  3. 现在可以在步骤 2 创建的混合 Runbook 辅助角色上执行作业。

方案:在发生故障的主要区域中部署的混合 Runbook 辅助角色上执行作业

如果混合 Runbook 辅助角色部署在主要区域,而该区域发生了计算故障,则相应的计算机将不可用于执行自动化作业。 必须在备用区域预配新的虚拟机,并将其注册为次要区域的自动化帐户中的混合 Runbook 辅助角色。

用于将自动化帐户资产从一个区域迁移到另一个区域的脚本

可以使用这些脚本将自动化帐户资产从主要区域中的帐户迁移到次要区域中的帐户。 这些脚本仅用于迁移 Runbook、模块、连接、凭据、证书和变量。 执行这些脚本不会影响主要区域中的自动化帐户及其资产。

先决条件

  1. 确保次要区域中的自动化帐户已创建且可用,以便可以将主要区域中的资产迁移到该帐户。 目标自动化帐户最好是没有任何自定义资源的帐户,因为这样可以防止由于同名而发生资源冲突以及数据丢失。

  2. 确保在主要区域的自动化帐户中启用系统分配的托管标识。

  3. 确保主要自动化帐户的系统分配的托管标识对其所属的订阅拥有参与者访问权限。

  4. 确保主要自动化帐户的托管标识对次要区域中的自动化帐户拥有参与者访问权限以及读写权限。 若要启用,请在次要自动化帐户的托管标识中提供所需的权限。 了解详细信息

  5. 确保脚本有权访问主要区域中的自动化帐户资产。 因此,应该将它作为该自动化帐户中的 Runbook 执行,以成功完成迁移。

  6. 如果主要自动化帐户是使用运行方式帐户部署的,则必须在迁移之前将它切换到托管标识。 了解详细信息

  7. 所需的模块为:

    • Az.Accounts 版本 2.8.0
    • Az.Resources 版本 6.0.0
    • Az.Automation 版本 1.7.3
    • Az.Storage 版本 4.6.0
  8. 确保源和目标自动化帐户都属于同一个 Microsoft Entra 租户。

创建并执行 Runbook

可以使用 PowerShell 脚本PowerShell 工作流 Runbook,或者从 Runbook 库导入并执行 Runbook,以便能够将资产从一个自动化帐户迁移到另一个自动化帐户。

按照以下步骤导入并执行 Runbook:

  1. 登录 Azure 门户
  2. 转到要迁移到另一个区域的自动化帐户。
  3. 在“过程自动化”下,选择“Runbook”。
  4. 选择“浏览库”,在搜索中输入“将自动化帐户资产从一个区域迁移到另一个区域”,然后选择“PowerShell 脚本”。
  5. 在“导入 Runbook”页中输入 Runbook 的名称。
  6. 为“运行时版本”选择 5.1 或 7.1(预览版)
  7. 输入说明,然后选择“导入”。
  8. 在“编辑 PowerShell Runbook”页中,编辑所需的参数并执行该 Runbook。

可以选择任一选项来编辑和执行脚本。 可以提供“选项 1”中给出的七个必需参数或“选项 2”中给出的三个必需参数来编辑和执行脚本。

选项包括:

名称 必需 说明
SourceAutomationAccountName True 主要区域中的、需要迁移其资产的自动化帐户的名称。
DestinationAutomationAccountName True 次要区域中的、需要将资产迁移到其中的自动化帐户的名称。
SourceResourceGroup True 主要区域中的自动化帐户的资源组名称。
DestinationResourceGroup True 次要区域中的自动化帐户的资源组名称。
SourceSubscriptionId True 主要区域中的自动化帐户的订阅 ID
DestinationSubscriptionId True 次要区域中的自动化帐户的订阅 ID。
Type[] True 由需要迁移的所有类型的资产组成的数组,可能的值为 Certificates、Connections、Credentials、Modules、Runbooks 和 Variables。

限制

  • 该脚本仅迁移自定义 PowerShell 模块。 默认模块和 Python 包不会迁移到副本自动化帐户。
  • 该脚本不会迁移主要区域的自动化帐户中的计划和托管标识。 必须在副本自动化帐户中手动创建这些资源。
  • 作业数据和活动日志不会迁移到副本帐户。

后续步骤