第 6 章 灾难恢复故障排除
6.1. 对 Metro-DR 进行故障排除
6.1.1. 在故障切换后,有状态集应用程序会卡住
- 问题
在重新定位到首选集群时,DRPlacementControl 会一直报告 PROGRESSION 为 "MovingToSecondary"。
在以前的版本中,在 Kubernetes v1.23 之前,Kubernetes control plane 不会清理为 StatefulSets 创建的 PVC。此活动由集群管理员或管理 StatefulSets 的软件操作员保留。因此,当 Pod 被删除时,StatefulSet 的 PVC 会保持不变。这可防止 Ramen 将应用程序重新定位到首选集群。
- 解决方案
如果工作负载使用 StatefulSets,且重新定位会卡住 PROGRESSION 为 "MovingToSecondary",则运行:
$ oc get pvc -n <namespace>
对于属于该 StatefulSet 的命名空间的每个绑定的 PVC,请运行
$ oc delete pvc <pvcname> -n namespace
删除所有 PVC 后,卷组复制组 (VRG) 过渡到 secondary,然后会被删除。
运行以下命令
$ oc get drpc -n <namespace> -o wide
几分钟后,PROGRESSION 报告 "Completed" 并完成重新定位。
- 结果
- 工作负载重新定位到首选集群
BZ reference: [2118270]
6.1.2. DR 策略可保护同一命名空间中的所有应用程序
- 问题
-
虽然只有单个应用程序被选择供 DR 策略使用,但同一命名空间中的所有应用程序都会受到保护。这会导致 PVC,与多个工作负载的
DRPlacementControl
spec.pvcSelector
匹配;或者,如果所有工作负载中没有选择器,复制管理可能会多次管理每个 PVC,并根据单独的DRPlacementControl
操作造成数据崩溃或无效操作。 - 解决方案
-
标签 PVC 属于唯一工作负载,并使用所选标签作为 DRPlacementControl
spec.pvcSelector
,以忽略哪个 DRPlacementControl 保护和管理命名空间中的哪些 PVC 子集。无法使用用户界面为 DRPlacementControl 指定spec.pvcSelector
字段,因此必须使用命令行删除并创建此类应用程序的 DRPlacementControl。
BZ 参考: [2111163]
6.1.3. 在应用程序故障时处于 Relocating 状态
- 问题
-
这个问题可能会在执行故障转移和应用程序的故障后发生(所有节点或集群)。当执行故障恢复应用程序时,会停留在
Relocating
状态,并显示Waiting
for PV restore to complete。 - 解决方案
- 使用 S3 客户端或等同从 s3 存储清理重复的 PV 对象。仅保持接近故障转移或重新定位时间的时间戳的那一个。
BZ 参考: [2120201]
6.1.4. 无法使用 RHACM 2.8 将 DRPolicy 应用到订阅工作负载
- 问题
-
Red Hat Advanced Cluster Management (RHACM) 2.8 控制台已弃用
PlacementRule
类型,并移到 Subscription 应用程序的放置类型
。因此,当用户使用 RHACM 2.8 控制台创建 Subscription 应用程序时,只会使用 Placement 创建应用程序。由于 OpenShift Data Foundation 4.12 灾难恢复用户界面和 Ramen 操作器不支持订阅应用程序的放置,所以灾难恢复用户界面无法检测应用程序并显示分配策略的详情。 - 解决方案
由于 RHACM 2.8 控制台仍能够检测
PlacementRule
(使用命令行界面(CLI)创建的 PlacementRule),请执行以下步骤,以使用PlacementRule
在 RHACM 2.8 中创建 Subscription 应用程序:-
使用应用程序命名空间创建一个新项目。(例如:
busybox-application
) -
找到要部署应用的受管集群的标签(例如:
drcluster1-jul-6
) 使用上一步中创建的受管集群标签在
application-namespace
上创建PlacementRule
CR:apiVersion: apps.open-cluster-management.io/v1 kind: PlacementRule metadata: labels: app: busybox-application name: busybox-application-placementrule-1 namespace: busybox-application spec: clusterSelector: matchLabels: name: drcluster1-jul-6
-
在使用 Subscription 应用程序页面中的 RHACM 控制台创建应用程序时,请选择此新的
PlacementRule
。 -
从 YAML 编辑器删除
PlacementRule
,以便可以重新使用所选编辑器。
-
使用应用程序命名空间创建一个新项目。(例如:
BZ 参考: [2216190]