注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
使用 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 集群。
部署架构
目标
本教程包含以下任务:
- 任务 1:为 OKE 和 OCI Full Stack Disaster Recovery 创建动态组和策略
- 任务 2:将主 OKE 集群添加到主 DR 保护组
- 任务 3:将卷组添加到主 DR 保护组
- 任务 4:将备用 OKE 集群添加到备用 DR 保护组
- 任务 5:创建开始钻取计划
- 任务 6:执行开始钻取计划
- 任务 7:检查备用 OKE 集群上运行的应用程序
- 任务 8:创建停止钻取计划
- 任务 9:执行停止钻取计划
- 任务 10:检查备用 OKE 集群上的清理
注:在本教程中,主区域为 Frankfurt ,备用区域为 Amsterdam 。
先决条件
-
本教程假定 DR 保护组 (DR Protection Groups,DRPG) 已经存在,您在两个区域中都有现有的 DR 计划。
-
本教程假定读者具有管理员权限,并且 OCI Full Stack DR 所需的 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 策略已就位。有关更多信息,请参见 Configuring Identity and Access Management (IAM) policy to use Full Stack DR 和 Policies for Full Stack Disaster Recovery 。
-
本教程假定读取器在主区域中部署了 OKE 集群,在备用区域中部署了对等集群。有关详细信息,请参阅创建集群。
-
本教程假定读取器已在主 OKE 集群上部署了断开连接(模拟)的 MuShop 应用程序。有关详细信息,请参阅部署 MuShop 。
-
OKE 群集生成的块存储卷已添加到 (
vg_oke_mushop
) 卷组。您必须使用跨区域复制创建卷组,有关更多信息,请参见 Create Volume Groups 。 -
在主区域和备用区域中创建 OCI 对象存储存储桶以存储 OKE 备份。有关详细信息,请参阅对象存储。
任务 1:为 OKE 和 OCI 全栈 DR 创建动态组和策略
通过这些策略,OCI Full Stack DR 服务可以访问 OCI Object Storage 桶来上载配置备份。从 OKE 集群访问 OCI 对象存储存储桶的策略取决于集群类型。
-
为托管节点池创建动态组和策略。
-
创建名为
<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>
-
-
为虚拟节点池创建以下策略。
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-reader
或brie-creator
的 brie 名称空间中运行的云池提供读取和写入 OCI Object Storage 桶的功能。 -
为容器实例创建动态组和策略。通过这些策略,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>
-
-
为跳转主机创建动态组和策略。
如果您使用的是跳转主机,则此策略允许 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 保护组
-
在主 DRPG (
DRPG_MUSHOP_FRA
) 中,选择 Members(成员)并单击 Add Member(添加成员)。 -
选择 OKE 集群作为资源类型。
-
输入以下所需信息。
- OKE 集群:输入 OKE 集群。
- 备份:输入备份信息。
- 备份存储桶:选择存储桶。
- 选择 Specify the backup schedule(指定备份计划)。
- 计划类型:输入计划类型。
- 开始时间:以 UTC 格式输入开始时间。
- 间隔:输入间隔(天)。
- 要保留的最大备份数(可选):输入最大备份数。
- 选择映像复制:
- 映像复制密钥(可选):选择映像。
- 名称空间(可选):输入名称空间。
- 对等 OKE 集群:选择对等 OKE 集群。
-
选择我知道我必须刷新并验证所有现有计划,然后单击添加。
任务 3:将卷组添加到主 DR 保护组
-
在主 DRPG (
DRPG_MUSHOP_FRA
) 中,选择 Members(成员)并单击 Add Member(添加成员)。 -
选择卷组作为资源类型。
-
输入以下所需信息。
- 卷组:选择卷组。
-
选择我知道我必须刷新并验证所有现有计划,然后单击添加。
任务 4:将备用 OKE 集群添加到备用 DR 保护组
-
在备用 DRPG (
DRPG_MUSHOP_AMS
) 中,选择 Members(成员)并单击 Add Member(添加成员)。 -
选择 OKE 集群作为资源类型。
-
输入以下所需信息。
- OKE 集群:输入 OKE 集群。
- 备份:输入备份信息。
- 备份存储桶:选择存储桶。
- 对等 OKE 集群:选择对等 OKE 集群。
-
选择我知道我必须刷新并验证所有现有计划,然后单击添加。
任务 5:创建开始钻探计划
-
在备用 DRPG (
DRPG_MUSHOP_AMS
) 中,选择计划,然后单击创建计划。 -
为计划输入名称,选择开始钻取作为计划类型,然后单击创建。
几分钟后,该计划将显示活动状态。
-
选择创建的计划以查看其内容。
任务 6:执行开始钻取计划
-
选择在任务 5 中创建的计划。
-
选择 Enable prehecks(启用预检查)并单击 Execute plan(执行计划)。
几分钟后,所有组将显示 Success(成功)状态。
任务 7:检查在备用 OKE 集群上运行的应用程序
连接到备用 OKE 集群并检查应用程序是否正在运行,对于 MuShop 应用程序,运行以下命令。
kubectel get all -n mushop
任务 8:创建停止钻取计划
-
在备用 DRPG (
DRPG_MUSHOP_AMS
) 中,选择计划,然后单击创建计划。 -
为计划输入名称,选择开始钻取作为计划类型,然后单击创建。
几分钟后,该计划将显示活动状态。
任务 9:执行停止钻取计划
-
选择在任务 8 中创建的计划。
-
选择 Enable prehecks(启用预检查)并单击 Execute plan(执行计划)。
几分钟后,所有组都将显示 Succuss 状态。
任务 10:检查备用 OKE 集群上的清理
使用以下命令连接到备用 OKE 群集并检查名称空间列表。
kubectl get namespaces
后续步骤
创建和执行钻探计划后,现在是创建切换计划和故障转移计划的时候了。
有两种最佳实践应纳入正常的日常运营,以帮助确保 DR 计划的就绪性。
- 定期定期执行预检查。
- 定期定期执行 DR 钻取。
请考虑安排备用 DR 保护组中所有 DR 计划的每周预检查。预检查可以随时运行,对生产工作负载没有影响。这将有助于确保 DR 计划的完整性、捕获缺少的成员资源、缺少的网络、无法找到用户定义的步骤调用的预期脚本等。
验证灾难恢复就绪状态的另一个非常重要的方法是每月或每季度安排一次定期 DR 演习。DR 钻取对生产负载也没有任何影响,但您只需单击一下按钮,即可验证备用区域中负载平衡器的计算、存储、Oracle 数据库和后端集的恢复。有关详细信息,请参见以下主题:
相关链接
确认
- 作者 -Raphael Teixeira(全栈 DR 工程技术人员的主要成员)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Automate Switchover and Failover Plans for OCI Kubernetes Engine (Stateful) with OCI Full Stack Disaster Recovery
G26601-01
February 2025
Copyright ©2025, Oracle and/or its affiliates.