第 13 章 在受管集群间重新定位应用程序


重定位操作与故障转移非常相似。重新定位基于应用程序,并使用 DRPlacementControl 触发重新定位。failback 的主要区别在于,应用程序在 failoverCluster 上缩减,因此不需要创建 NetworkFence

流程

  1. 删除 NetworkFence 资源并禁用隔离

    在故障恢复或重定位操作之前,必须成功删除主受管集群的 NetworkFence

    1. 二级受管集群中执行此命令,并修改 <cluster1> 来使用上一节中创建的 NetworkFence YAML 的正确文件名。

      $ oc delete -f network-fence-<cluster1>.yaml

      输出示例:

      networkfence.csiaddons.openshift.io "network-fence-ocp4perf1" deleted
    2. 重新引导被隔离的 OpenShift Container Platform 节点。

      此步骤是必需的,因为以前的隔离集群上的一些应用程序 Pod(本例中为 Primary managed cluster)处于不健康状态(如 CreateContainerError, CrashLoopBackOff)。这可以通过一次重启所有 worker OpenShift 节点来轻松地修复。

      注意

      OpenShift Web 控制台仪表板和 Overview 页面也可用于评估应用程序和外部存储的健康状况。详细的 OpenShift Data Foundation 仪表板可通过 Storage Data Foundation 找到。

    3. 在所有 OpenShift 节点重新引导并且处于 Ready 状态后,在主受管集群上运行此命令,以验证所有 Pod 都处于健康状态。此查询的输出应该为零个 Pod。

      $ oc get pods -A | egrep -v 'Running|Completed'

      输出示例:

      NAMESPACE                                          NAME                                                              READY   STATUS      RESTARTS       AGE
      重要

      如果因为严重的存储通信导致 pod 仍然处于不健康状态,请在继续操作前进行故障排除并解决。由于存储集群位于 OpenShift 的外部,因此在 OpenShift 应用正常运行的站点中断后,还必须正确恢复它。

  2. DRPolicy 修改为 Unfenced 状态。

    要让 ODR HUB operator 知道 NetworkFence 已为主受管集群删除,需要为新创建的 Unfenced 集群修改 DRPolicy

    1. 编辑 Hub 集群上的 DRPolicy,并将 <cluster1>(例如 ocp4perf1)从 manuallyFenced 改为 Unfenced

      $ oc edit drpolicy odr-policy

      输出示例:

      [...]
      spec:
        drClusterSet:
        - clusterFence: Unfenced  ## <-- Modify from ManuallyFenced to Unfenced
          name: ocp4perf1
          region: metro
          s3ProfileName: s3-primary
        - clusterFence: Unfenced
          name: ocp4perf2
          region: metro
          s3ProfileName: s3-secondary
      [...]

      输出示例:

      drpolicy.ramendr.openshift.io/odr-policy edited
    2. 验证 Hub 集群中的 DRPolicy 的状态是否已为主受管集群更改为 Unfenced

      $ oc get drpolicies.ramendr.openshift.io odr-policy -o yaml | grep -A 6 drClusters

      输出示例:

        drClusters:
          ocp4perf1:
            status: Unfenced
            string: ocp4perf1
          ocp4perf2:
            status: Unfenced
            string: ocp4perf2
  3. DRPlacementControl 修改为 failback

    1. 在 Hub 集群中,导航到 Installed Operators,然后点 Openshift DR Hub Operator
    2. 单击 DRPlacementControl 选项卡。
    3. 单击 DRPC busybox-drpc,然后单击 YAML 视图。
    4. action 改为 Relocate

      DRPlacementControl 修改重新分配的操作

      Image show where to modify the action in the YAML view

    5. 点击 Save
    6. 验证 busybox 应用程序已在主受管集群中运行。故障转移是在 YAML 文件中指定的 preferredCluster ocp4perf1,它是故障转移操作前应用程序运行的位置。

      $ oc get pods,pvc -n busybox-sample

      输出示例:

      NAME          READY   STATUS    RESTARTS   AGE
      pod/busybox   1/1     Running   0          60s
      
      NAME                                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  AGE
      persistentvolumeclaim/busybox-pvc   Bound    pvc-79f2a74d-6e2c-48fb-9ed9-666b74cfa1bb   5Gi        RWO            ocs-storagecluster-ceph-rbd   61s
    7. 验证 busybox 是否在第二个受管集群中运行。busybox 应用程序不应在此受管集群上运行。

      $ oc get pods,pvc -n busybox-sample

      输出示例:

      No resources found in busybox-sample namespace.
重要

请注意,在发行注记的已知问题一节中记录的 Metro-DR 问题。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.