注意:

使用 OCI Full Stack Disaster Recovery 自动执行 OCI Kubernetes Engine (Stateful) 的切换和故障转移计划

简介

Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR) 只需单击一下即可编排全球 Oracle Cloud Infrastructure (OCI) 区域之间的计算、数据库和应用转换。客户可以自动执行恢复一个或多个业务系统所需的步骤,而无需重新设计或重新设计现有基础设施、数据库或应用,也不需要专门的管理或转换服务器。

Oracle Cloud Infrastructure Kubernetes Engine (OKE) 是一项托管式 Kubernetes 服务,可简化大规模容器化工作负载的开发、部署和运行。OKE 支持您快速创建、管理和使用基于 OCI 计算、网络和存储服务的 Kubernetes 集群。

部署架构

架构图

目标

本教程包含以下任务:

注:在本教程中,主区域为 Frankfurt ,备用区域为 Amsterdam

先决条件

任务 1:为 OKE 和 OCI 全栈 DR 创建动态组和策略

通过这些策略,OCI Full Stack DR 服务可以访问 OCI Object Storage 桶来上载配置备份。从 OKE 集群访问 OCI 对象存储存储桶的策略取决于集群类型。

  1. 为托管节点池创建动态组和策略。

    • 创建名为 <cluster1_dg> 的动态组。

      All {instance.compartment.id = '<compartment_ocid>'}
      
    • 创建以下策略。

      Allow dynamic-group cluster1_dg to manage object-family in compartment <compartment>
      Allow dynamic-group cluster1_dg to manage cluster-family in compartment <compartment>
      
  2. 为虚拟节点池创建以下策略。

    Allow any-user to manage objects in tenancy where all { request.principal.type = 'workload', request.principal.namespace = 'brie', request.principal.service_account = 'brie-reader', request.principal.cluster_id = '<Cluster_OCID>'}
    
    Allow any-user to manage objects in tenancy where all { request.principal.type = 'workload', request.principal.namespace = 'brie', request.principal.service_account = 'brie-creator', request.principal.cluster_id = '<Cluster_OCID>'}
    

    这些策略为在服务账户 brie-readerbrie-creator 的 brie 名称空间中运行的云池提供读取和写入 OCI Object Storage 桶的功能。

  3. 为容器实例创建动态组和策略。通过这些策略,OCI Full Stack DR 服务创建的运行时容器实例可以访问 OKE 集群和 OCI Object Storage 桶。

    • 创建名为 <bastion1_dg> 的动态组。

      All {resource.type='computecontainerinstance'}
      
    • 创建以下策略。

      Allow dynamic-group bastion1_dg to manage object-family in compartment <compartment>
      Allow dynamic-group bastion1_dg to manage cluster-family in compartment <compartment>
      
  4. 为跳转主机创建动态组和策略。

    如果您使用的是跳转主机,则此策略允许 OCI Full Stack DR 访问 OKE 集群和 OCI 对象存储存储桶。如果跳转主机和集群位于同一区间中,则可以避免创建新的动态组和策略以提供对 OCI Object Storage 桶的访问。

    • 创建名为 <bastion1_dg> 的动态组。

      All {instance.compartment.id = '<compartment_ocid>'}
      
    • 创建以下策略。

      Allow dynamic-group bastion1_dg to manage cluster-family in compartment <compartment>Allow dynamic-group bastion1_dg to manage cluster in compartment <compartment>
      

注:如果在 dynamic-group 之前未包括 identity_domain_name,则策略语句的计算方式就好像该组属于默认身份域一样。有关更多信息,请参见 How Policies Work

任务 2:将主 OKE 群集添加到主 DR 保护组

  1. 在主 DRPG (DRPG_MUSHOP_FRA) 中,选择 Members(成员)并单击 Add Member(添加成员)

    添加主 OKE 集群

  2. 选择 OKE 集群作为资源类型

    添加主 OKE 集群

  3. 输入以下所需信息。

    • OKE 集群:输入 OKE 集群。
    • 备份:输入备份信息。
      • 备份存储桶:选择存储桶。
      • 选择 Specify the backup schedule(指定备份计划)
      • 计划类型:输入计划类型。
      • 开始时间:以 UTC 格式输入开始时间。
      • 间隔:输入间隔(天)。
      • 要保留的最大备份数(可选):输入最大备份数。
      • 选择映像复制:
      • 映像复制密钥(可选):选择映像。
      • 名称空间(可选):输入名称空间。
    • 对等 OKE 集群:选择对等 OKE 集群。
  4. 选择我知道我必须刷新并验证所有现有计划,然后单击添加

    添加主 OKE 集群

任务 3:将卷组添加到主 DR 保护组

  1. 在主 DRPG (DRPG_MUSHOP_FRA) 中,选择 Members(成员)并单击 Add Member(添加成员)

    添加卷组

  2. 选择卷组作为资源类型

    添加卷组

  3. 输入以下所需信息。

    • 卷组:选择卷组。
  4. 选择我知道我必须刷新并验证所有现有计划,然后单击添加

    添加卷组

任务 4:将备用 OKE 集群添加到备用 DR 保护组

  1. 在备用 DRPG (DRPG_MUSHOP_AMS) 中,选择 Members(成员)并单击 Add Member(添加成员)

    添加备用 OKE 集群

  2. 选择 OKE 集群作为资源类型

    添加备用 OKE 集群

  3. 输入以下所需信息。

    • OKE 集群:输入 OKE 集群。
    • 备份:输入备份信息。
      • 备份存储桶:选择存储桶。
    • 对等 OKE 集群:选择对等 OKE 集群。
  4. 选择我知道我必须刷新并验证所有现有计划,然后单击添加

    添加备用 OKE 集群

任务 5:创建开始钻探计划

  1. 在备用 DRPG (DRPG_MUSHOP_AMS) 中,选择计划,然后单击创建计划

    创建开始钻取计划

  2. 为计划输入名称,选择开始钻取作为计划类型,然后单击创建

    创建开始钻取计划

    几分钟后,该计划将显示活动状态。

    创建开始钻取计划

  3. 选择创建的计划以查看其内容。

    创建开始钻取计划

任务 6:执行开始钻取计划

  1. 选择在任务 5 中创建的计划。

    执行开始钻取计划

  2. 选择 Enable prehecks(启用预检查)并单击 Execute plan(执行计划)

    执行开始钻取计划

    几分钟后,所有组将显示 Success(成功)状态。

    执行开始钻取计划

任务 7:检查在备用 OKE 集群上运行的应用程序

连接到备用 OKE 集群并检查应用程序是否正在运行,对于 MuShop 应用程序,运行以下命令。

kubectel get all -n mushop

检查备用 OKE 集群上运行的应用程序

任务 8:创建停止钻取计划

  1. 在备用 DRPG (DRPG_MUSHOP_AMS) 中,选择计划,然后单击创建计划

    创建停止钻取计划

  2. 为计划输入名称,选择开始钻取作为计划类型,然后单击创建

    创建停止钻取计划

    几分钟后,该计划将显示活动状态。

    创建停止钻取计划

任务 9:执行停止钻取计划

  1. 选择在任务 8 中创建的计划。

    执行停止钻取计划

  2. 选择 Enable prehecks(启用预检查)并单击 Execute plan(执行计划)

    执行停止钻取计划

    几分钟后,所有组都将显示 Succuss 状态。

    执行停止钻取计划

任务 10:检查备用 OKE 集群上的清理

使用以下命令连接到备用 OKE 群集并检查名称空间列表。

kubectl get namespaces

检查备用 OKE 集群上的清理

后续步骤

创建和执行钻探计划后,现在是创建切换计划和故障转移计划的时候了。

有两种最佳实践应纳入正常的日常运营,以帮助确保 DR 计划的就绪性。

请考虑安排备用 DR 保护组中所有 DR 计划的每周预检查。预检查可以随时运行,对生产工作负载没有影响。这将有助于确保 DR 计划的完整性、捕获缺少的成员资源、缺少的网络、无法找到用户定义的步骤调用的预期脚本等。

验证灾难恢复就绪状态的另一个非常重要的方法是每月或每季度安排一次定期 DR 演习。DR 钻取对生产负载也没有任何影响,但您只需单击一下按钮,即可验证备用区域中负载平衡器的计算、存储、Oracle 数据库和后端集的恢复。有关详细信息,请参见以下主题:

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心