3.17. 使用 Metro-DR 恢复到替换集群


当主集群有故障时,您可以获得修复的选项,等待现有集群恢复,或者如果集群不可行,请完全替换集群。此解决方案指导您在将故障的主集群替换为新集群,并为这个新集群启用故障恢复(分配)。

在这些说明中,我们假定在安装和保护应用程序后必须替换 RHACM 受管集群。对于本节,RHACM 受管集群是 替换集群,而未替换的集群是 存活的集群,新集群是 恢复集群

注意

目前不支持为发现的应用程序替换集群恢复。仅支持受管应用程序。

前提条件

  • 确保 Metro-DR 环境已配置了使用红帽 Advance Cluster Management (RHACM)安装的应用程序。
  • 确保为应用程序分配保护它们不受集群故障的数据策略。

步骤

  1. Hub 集群中 执行以下步骤:

    1. 使用 CLI 终端编辑 DRCluster 资源来隔离替换集群,其中 < drcluster_name&gt; 是替换集群名称。

      oc edit drcluster <drcluster_name>
      Copy to Clipboard Toggle word wrap
      apiVersion: ramendr.openshift.io/v1alpha1
      kind: DRCluster
      metadata:
      [...]
      spec:
        ## Add or modify this line
        clusterFence: Fenced
        cidrs:
        [...]
      [...]
      Copy to Clipboard Toggle word wrap
    2. 使用 RHACM 控制台,进入到 Applications,并将受保护的所有应用程序从失败集群切换到 surviving 集群。
    3. 验证并确保所有受保护的应用程序现在都在存活的集群中运行。

      注意

      每个应用程序 DRPlacementControl 的 PROGRESSION 状态将显示为 Cleaning Up。如果替换集群离线或停机,则这是预期的。

  2. 取消保护替换集群。

    使用 CLI 终端编辑 DRCluster 资源,其中 < drcluster_name& gt; 是替换集群名称。

    $ oc edit drcluster <drcluster_name>
    Copy to Clipboard Toggle word wrap
    apiVersion: ramendr.openshift.io/v1alpha1
    kind: DRCluster
    metadata:
    [...]
    spec:
      ## Modify this line
      clusterFence: Unfenced
      cidrs:
      [...]
    [...]
    Copy to Clipboard Toggle word wrap
  3. 删除替换集群的 DRCluster。

    $ oc delete drcluster <drcluster_name> --wait=false
    Copy to Clipboard Toggle word wrap
    注意

    使用 --wait=false,因为 DRCluster 在稍后的步骤之前不会删除。

  4. Hub 集群上为存活的集群的 每个受保护的应用程序禁用灾难恢复。

    1. 对于每个应用程序,编辑放置并确保选择了 surviving 集群。

      注意

      对于基于 Subscription 的应用程序,相关的放置可以在 hub 集群上的同一命名空间中找到,类似于受管集群。对于基于 ApplicationSets 的应用程序,相关的放置可以在 hub 集群上的 openshift-gitops 命名空间中找到。

      $ oc edit placement <placement_name> -n <namespace>
      Copy to Clipboard Toggle word wrap
      apiVersion: cluster.open-cluster-management.io/v1beta1
      kind: Placement
      metadata:
      annotations:
        cluster.open-cluster-management.io/experimental-scheduling-disable: "true"
      [...]
      spec:
      clusterSets:
      - submariner
      predicates:
      - requiredClusterSelector:
          claimSelector: {}
          labelSelector:
            matchExpressions:
            - key: name
              operator: In
              values:
              - cluster1  <-- Modify to be surviving cluster name
      [...]
      Copy to Clipboard Toggle word wrap
    2. 在每个受保护的应用程序的 VolumeReplicationGroup 上运行以下命令来验证为替换集群删除了 s3Profile

      $ oc get vrg -n <application_namespace> -o jsonpath='{.items[0].spec.s3Profiles}' | jq
      Copy to Clipboard Toggle word wrap
    3. 在将受保护的应用程序 放置资源 配置为使用 surviving 集群并替换集群 s3Profile (从受保护的应用程序中删除)后,所有 DRPlacementControl 资源都必须从 Hub 集群中删除

      $ oc delete drpc <drpc_name> -n <namespace>
      Copy to Clipboard Toggle word wrap
      注意

      对于基于 Subscription 的应用程序,关联的 DRPlacementControl 可以与 hub 集群上的受管集群位于同一个命名空间中。对于基于 ApplicationSets 的应用程序,关联的 DRPlacementControl 可以在 hub 集群上的 openshift-gitops 命名空间中找到。

    4. 在继续下一步之前,验证所有 DRPlacementControl 资源是否都已被删除。此命令是所有命名空间的查询。不应找到任何资源。

      $ oc get drpc -A
      Copy to Clipboard Toggle word wrap
    5. 最后一步是编辑每个应用程序的 放置 并删除注解 cluster.open-cluster-management.io/experimental-scheduling-disable: "true "。

      $ oc edit placement <placement_name> -n <namespace>
      Copy to Clipboard Toggle word wrap
      apiVersion: cluster.open-cluster-management.io/v1beta1
      kind: Placement
      metadata:
      annotations:
        ## Remove this annotation
        cluster.open-cluster-management.io/experimental-scheduling-disable: "true"
      [...]
      Copy to Clipboard Toggle word wrap
  5. 对存活的集群中每个受保护的应用程序重复最后一步中详述的流程。为受保护的应用程序禁用 DR 现已完成。
  6. 在 Hub 集群中,运行以下脚本从 存活 集群和 hub 集群中删除所有灾难恢复配置。

    #!/bin/bash
    secrets=$(oc get secrets -n openshift-operators | grep Opaque | cut -d" " -f1)
    echo $secrets
    for secret in $secrets
    do
        oc patch -n openshift-operators secret/$secret -p '{"metadata":{"finalizers":null}}' --type=merge
    done
    mirrorpeers=$(oc get mirrorpeer -o name)
    echo $mirrorpeers
    for mp in $mirrorpeers
    do
        oc patch $mp -p '{"metadata":{"finalizers":null}}' --type=merge
        oc delete $mp
    done
    drpolicies=$(oc get drpolicy -o name)
    echo $drpolicies
    for drp in $drpolicies
    do
        oc patch $drp -p '{"metadata":{"finalizers":null}}' --type=merge
        oc delete $drp
    done
    drclusters=$(oc get drcluster -o name)
    echo $drclusters
    for drp in $drclusters
    do
        oc patch $drp -p '{"metadata":{"finalizers":null}}' --type=merge
        oc delete $drp
    done
    oc delete project openshift-operators
    managedclusters=$(oc get managedclusters -o name | cut -d"/" -f2)
    echo $managedclusters
    for mc in $managedclusters
    do
        secrets=$(oc get secrets -n $mc | grep multicluster.odf.openshift.io/secret-type | cut -d" " -f1)
        echo $secrets
        for secret in $secrets
        do
            set -x
            oc patch -n $mc secret/$secret -p '{"metadata":{"finalizers":null}}' --type=merge
            oc delete -n $mc secret/$secret
        done
    done
    
    oc delete clusterrolebinding spoke-clusterrole-bindings
    Copy to Clipboard Toggle word wrap
    注意

    此脚本使用 oc delete project openshift-operators 命令删除 hub 集群上的此命名空间中的灾难恢复(DR)操作器。如果此命名空间中还有其他非DR Operator,则必须从 OperatorHub 重新安装它们。

  7. 在命名空间 openshift-operators 再次自动创建后,添加监控标签以收集灾难恢复指标。

    $ oc label namespace openshift-operators openshift.io/cluster-monitoring='true'
    Copy to Clipboard Toggle word wrap
  8. 在 surviving 集群中,确保 DR 安装过程中创建的对象存储桶已被删除。如果没有通过脚本删除对象存储桶,请删除它。用于 DR 的对象存储桶的名称以 odrbucket 开头。

    $ oc get obc -n openshift-storage
    Copy to Clipboard Toggle word wrap
  9. 在 RHACM 控制台中,导航到 Infrastructure Clusters 视图

    1. 分离替换集群。
    2. 创建新的 OpenShift 集群(恢复集群),并将新集群导入到 RHACM 控制台。具体步骤请参阅创建集群和将目标受管集群 导入到 hub 集群
  10. 在恢复集群中安装 OpenShift Data Foundation 操作器,并将它连接到与存活集群相同的外部 Ceph 存储系统。具体步骤请参考 以外部模式部署 OpenShift Data Foundation

    注意

    确保 OpenShift Data Foundation 版本为 4.15 (或更高),且相同的 OpenShift Data Foundation 版本位于存活的集群中。

  11. 在 hub 集群中,从 OperatorHub 安装 ODF Multicluster Orchestrator operator。具体步骤请参阅有关安装 OpenShift Data Foundation Multicluster Orchestrator operator 的章节。
  12. 使用 RHACM 控制台,进入到 Data Services Data policies

    1. 选择 Create DRPolicy 并命名您的策略。
    2. 选择 恢复集群 和存存 集群
    3. 创建策略。具体步骤,请参阅在 Hub 集群上创建灾难恢复策略

    只有在 DRPolicy 的状态更改为 Validated 时才会进入下一步。

  13. 将 DRPolicy 应用到在替换集群失败前最初保护的集群中的应用程序。
  14. 将 Surviving 集群中的新受保护的应用程序重新定位回新的恢复(主)集群。使用 RHACM 控制台,进入到 Applications 菜单来执行重新定位。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat