3.17. 使用 Metro-DR 恢复到替换集群
当主集群有故障时,您可以获得修复的选项,等待现有集群恢复,或者如果集群不可行,请完全替换集群。此解决方案指导您在将故障的主集群替换为新集群,并为这个新集群启用故障恢复(分配)。
在这些说明中,我们假定在安装和保护应用程序后必须替换 RHACM 受管集群。对于本节,RHACM 受管集群是 替换集群,而未替换的集群是 存活的集群,新集群是 恢复集群。
目前不支持为发现的应用程序替换集群恢复。仅支持受管应用程序。
前提条件
- 确保 Metro-DR 环境已配置了使用红帽 Advance Cluster Management (RHACM)安装的应用程序。
- 确保为应用程序分配保护它们不受集群故障的数据策略。
步骤
在 Hub 集群中 执行以下步骤:
使用 CLI 终端编辑 DRCluster 资源来隔离替换集群,其中 < drcluster_name> 是替换集群名称。
oc edit drcluster <drcluster_name>
oc edit drcluster <drcluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用 RHACM 控制台,进入到 Applications,并将受保护的所有应用程序从失败集群切换到 surviving 集群。
验证并确保所有受保护的应用程序现在都在存活的集群中运行。
注意每个应用程序 DRPlacementControl 的 PROGRESSION 状态将显示为
Cleaning Up。如果替换集群离线或停机,则这是预期的。
取消保护替换集群。
使用 CLI 终端编辑 DRCluster 资源,其中 < drcluster_name& gt; 是替换集群名称。
oc edit drcluster <drcluster_name>
$ oc edit drcluster <drcluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除替换集群的 DRCluster。
oc delete drcluster <drcluster_name> --wait=false
$ oc delete drcluster <drcluster_name> --wait=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意使用 --wait=false,因为 DRCluster 在稍后的步骤之前不会删除。
在 Hub 集群上为存活的集群的 每个受保护的应用程序禁用灾难恢复。
对于每个应用程序,编辑放置并确保选择了 surviving 集群。
注意对于基于 Subscription 的应用程序,相关的放置可以在 hub 集群上的同一命名空间中找到,类似于受管集群。对于基于 ApplicationSets 的应用程序,相关的放置可以在 hub 集群上的
openshift-gitops命名空间中找到。oc edit placement <placement_name> -n <namespace>
$ oc edit placement <placement_name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在每个受保护的应用程序的 VolumeReplicationGroup 上运行以下命令来验证为替换集群删除了
s3Profile。oc get vrg -n <application_namespace> -o jsonpath='{.items[0].spec.s3Profiles}' | jq$ oc get vrg -n <application_namespace> -o jsonpath='{.items[0].spec.s3Profiles}' | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在将受保护的应用程序 放置资源 配置为使用 surviving 集群并替换集群 s3Profile (从受保护的应用程序中删除)后,所有
DRPlacementControl资源都必须从 Hub 集群中删除。oc delete drpc <drpc_name> -n <namespace>
$ oc delete drpc <drpc_name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对于基于 Subscription 的应用程序,关联的 DRPlacementControl 可以与 hub 集群上的受管集群位于同一个命名空间中。对于基于 ApplicationSets 的应用程序,关联的 DRPlacementControl 可以在 hub 集群上的
openshift-gitops命名空间中找到。在继续下一步之前,验证所有 DRPlacementControl 资源是否都已被删除。此命令是所有命名空间的查询。不应找到任何资源。
oc get drpc -A
$ oc get drpc -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 最后一步是编辑每个应用程序的 放置 并删除注解
cluster.open-cluster-management.io/experimental-scheduling-disable: "true"。oc edit placement <placement_name> -n <namespace>
$ oc edit placement <placement_name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 对存活的集群中每个受保护的应用程序重复最后一步中详述的流程。为受保护的应用程序禁用 DR 现已完成。
在 Hub 集群中,运行以下脚本从 存活 集群和 hub 集群中删除所有灾难恢复配置。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意此脚本使用
oc delete project openshift-operators命令删除 hub 集群上的此命名空间中的灾难恢复(DR)操作器。如果此命名空间中还有其他非DR Operator,则必须从 OperatorHub 重新安装它们。在命名空间
openshift-operators再次自动创建后,添加监控标签以收集灾难恢复指标。oc label namespace openshift-operators openshift.io/cluster-monitoring='true'
$ oc label namespace openshift-operators openshift.io/cluster-monitoring='true'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 surviving 集群中,确保 DR 安装过程中创建的对象存储桶已被删除。如果没有通过脚本删除对象存储桶,请删除它。用于 DR 的对象存储桶的名称以
odrbucket开头。oc get obc -n openshift-storage
$ oc get obc -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在 RHACM 控制台中,导航到 Infrastructure
Clusters 视图。 - 分离替换集群。
- 创建新的 OpenShift 集群(恢复集群),并将新集群导入到 RHACM 控制台。具体步骤请参阅创建集群和将目标受管集群 导入到 hub 集群。
在恢复集群中安装 OpenShift Data Foundation 操作器,并将它连接到与存活集群相同的外部 Ceph 存储系统。具体步骤请参考 以外部模式部署 OpenShift Data Foundation。
注意确保 OpenShift Data Foundation 版本为 4.15 (或更高),且相同的 OpenShift Data Foundation 版本位于存活的集群中。
- 在 hub 集群中,从 OperatorHub 安装 ODF Multicluster Orchestrator operator。具体步骤请参阅有关安装 OpenShift Data Foundation Multicluster Orchestrator operator 的章节。
使用 RHACM 控制台,进入到 Data Services
Data policies。 - 选择 Create DRPolicy 并命名您的策略。
- 选择 恢复集群 和存存 集群。
- 创建策略。具体步骤,请参阅在 Hub 集群上创建灾难恢复策略。
只有在 DRPolicy 的状态更改为
Validated时才会进入下一步。- 将 DRPolicy 应用到在替换集群失败前最初保护的集群中的应用程序。
- 将 Surviving 集群中的新受保护的应用程序重新定位回新的恢复(主)集群。使用 RHACM 控制台,进入到 Applications 菜单来执行重新定位。