7.2. Troubleshooting Regional-DR
7.2.1. rbd-mirror daemon health is in warning state 复制链接链接已复制到粘贴板!
- Problem
There appears to be numerous cases where WARNING gets reported if mirror service
::get_mirror_service_statuscallsCephmonitor to get service status forrbd-mirror.Following a network disconnection,
rbd-mirrordaemon health is in thewarningstate while the connectivity between both the managed clusters is fine.- Resolution
Run the following command in the toolbox and look for
leader:falserbd mirror pool status --verbose ocs-storagecluster-cephblockpool | grep 'leader:'If you see the following in the output:
leader: falseIt indicates that there is a daemon startup issue and the most likely root cause could be due to problems reliably connecting to the secondary cluster.
Workaround: Move the
rbd-mirrorpod to a different node by simply deleting the pod and verify that it has been rescheduled on another node.leader: trueor no output
BZ reference: [2118627]
- Problem
VolSyncsource pod is unable to resolve the hostname of the VolSync destination pod. The log of the VolSync Pod consistently shows an error message over an extended period of time similar to the following log snippet.$ oc logs -n busybox-workloads-3-2 volsync-rsync-src-dd-io-pvc-1-p25rzExample output
VolSync rsync container version: ACM-0.6.0-ce9a280 Syncing data to volsync-rsync-dst-dd-io-pvc-1.busybox-workloads-3-2.svc.clusterset.local:22 ... ssh: Could not resolve hostname volsync-rsync-dst-dd-io-pvc-1.busybox-workloads-3-2.svc.clusterset.local: Name or service not known- Resolution
Restart
submariner-lighthouse-agenton both nodes.$ oc delete pod -l app=submariner-lighthouse-agent -n submariner-operator
- Problem
ApplicationSet based workload deployments to managed clusters are not garbage collected in cases when the hub cluster fails. It is recovered to a standby hub cluster, while the workload has been failed over to a surviving managed cluster. The cluster that the workload was failed over from, rejoins the new recovered standby hub.
ApplicationSets that are DR protected, with a regional DRPolicy, hence starts firing the VolumeSynchronizationDelay alert. Further such DR protected workloads cannot be failed over to the peer cluster or relocated to the peer cluster as data is out of sync between the two clusters.
- Resolution
The workaround requires that
openshift-gitopsoperators can own the workload resources that are orphaned on the managed cluster that rejoined the hub post a failover of the workload was performed from the new recovered hub. To achieve this the following steps can be taken:-
Determine the Placement that is in use by the ArgoCD ApplicationSet resource on the hub cluster in the
openshift-gitopsnamespace. Inspect the placement label value for the ApplicationSet in this field:
spec.generators.clusterDecisionResource.labelSelector.matchLabelsThis would be the name of the Placement resource <placement-name>
Ensure that there exists a
PlacemenDecisionfor the ApplicationSet referencedPlacement.$ oc get placementdecision -n openshift-gitops --selector cluster.open-cluster-management.io/placement=<placement-name>This results in a single
PlacementDecisionthat places the workload in the currently desired failover cluster.Create a new
PlacementDecisionfor the ApplicationSet pointing to the cluster where it should be cleaned up.For example:
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: PlacementDecision metadata: labels: cluster.open-cluster-management.io/decision-group-index: "1" # Typically one higher than the same value in the esisting PlacementDecision determined at step (2) cluster.open-cluster-management.io/decision-group-name: "" cluster.open-cluster-management.io/placement: cephfs-appset-busybox10-placement name: <placemen-name>-decision-<n> # <n> should be one higher than the existing PlacementDecision as determined in step (2) namespace: openshift-gitopsUpdate the newly created
PlacementDecisionwith a status subresource.decision-status.yaml: status: decisions: - clusterName: <managedcluster-name-to-clean-up> # This would be the cluster from where the workload was failed over, NOT the current workload cluster reason: FailoverCleanup$ oc patch placementdecision -n openshift-gitops <placemen-name>-decision-<n> --patch-file=decision-status.yaml --subresource=status --type=mergeWatch and ensure that the Application resource for the ApplicationSet has been placed on the desired cluster
$ oc get application -n openshift-gitops <applicationset-name>-<managedcluster-name-to-clean-up>In the output, check if the SYNC STATUS shows as
Syncedand the HEALTH STATUS shows asHealthy.Delete the PlacementDecision that was created in step (3), such that ArgoCD can garbage collect the workload resources on the <managedcluster-name-to-clean-up>
$ oc delete placementdecision -n openshift-gitops <placemen-name>-decision-<n>
ApplicationSets that are DR protected, with a regional DRPolicy, stops firing the
VolumeSynchronizationDelayalert.-
Determine the Placement that is in use by the ArgoCD ApplicationSet resource on the hub cluster in the
BZ reference: [2268594]