8.2. Regional-DR 문제 해결
8.2.1. RBD-mirror 데몬 상태가 warning 상태입니다. 링크 복사링크가 클립보드에 복사되었습니다!
- 문제
mirror 서비스
::get_mirror_service_status호출Cephmonitor를 호출하여rbd-mirror의 서비스 상태를 가져오는 경우 WARNING가 보고되는 경우가 많습니다.네트워크 연결 해제 후
rbd-mirror데몬 상태는경고상태에 있으며 두 클러스터 간의 연결이 모두 정상입니다.- 해결 방법
toolbox에서 다음 명령을 실행하고
leader:false를 찾습니다.rbd mirror pool status --verbose ocs-storagecluster-cephblockpool | grep 'leader:'출력에 다음이 표시되면 다음을 수행합니다.
리더: false데몬 시작 문제가 있으며 가장 큰 근본 원인은 보조 클러스터에 안정적으로 연결하는 문제로 인해 발생할 수 있습니다.
해결방법: 포드를 삭제하고 다른 노드에서 다시 예약되었는지 확인하여
rbd-mirrorPod를 다른 노드로 이동합니다.Leader: true또는 no output
BZ 참조: [2118627]
8.2.2. volsync-rsync-src Pod는 대상 호스트 이름을 확인할 수 없기 때문에 오류 상태입니다. 링크 복사링크가 클립보드에 복사되었습니다!
- 문제
volSync소스 Pod는volSync 대상 Pod의 호스트 이름을 확인할 수 없습니다. volSync Pod의 로그에는 다음 로그 스니펫과 유사한 기간 동안 오류 메시지가 일관되게 표시됩니다.$ oc logs -n busybox-workloads-3-2 volsync-rsync-src-dd-io-pvc-1-p25rz출력 예
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- 해결 방법
두 노드에서
submariner-lighthouse-agent를 다시 시작합니다.$ oc delete pod -l app=submariner-lighthouse-agent -n submariner-operator
8.2.3. 이전 기본 관리 클러스터를 복구한 후 ApplicationSet 워크로드에 대한 정리 및 데이터 동기화가 고착 상태로 유지됩니다. 링크 복사링크가 클립보드에 복사되었습니다!
- 문제
허브 클러스터가 실패하는 경우 관리 클러스터에 대한 ApplicationSet 기반 워크로드 배포는 가비지 수집되지 않습니다. 워크로드가 남아 있는 관리형 클러스터로 장애 조치되는 동안 대기 허브 클러스터로 복구됩니다. 워크로드가 실패한 클러스터에서 새 복구 대기 허브에 다시 참여합니다.
DR이 보호되는 ApplicationSet은 지역 DRPolicy로 보호되므로 VolumeSynchronizationDelay 경고를 실행하기 시작합니다. 두 클러스터 간에 데이터가 동기화되지 않아 DR 보호 워크로드를 피어 클러스터로 장애 조치하거나 피어 클러스터로 재배치할 수 없습니다.
- 해결 방법
이 문제를 해결하려면
openshift-gitopsOperator에서 새 복구 허브에서 수행된 워크로드 장애 조치(failover)에 다시 가입한 후 관리 클러스터에서 분리되는 워크로드 리소스를 소유할 수 있어야 합니다. 이를 위해 다음 단계를 수행할 수 있습니다.-
openshift-gitops네임스페이스의 hub 클러스터에서 ArgoCD ApplicationSet 리소스에서 사용 중인 배치를 확인합니다. 이 필드에서 ApplicationSet의 배치 레이블 값을 검사합니다.
spec.generators.clusterDecisionResource.labelSelector.matchLabels배치 리소스 < placement-name>의 이름입니다.
ApplicationSet 참조 배치에 대한
PlacemenDecision이 있는지확인합니다.$ oc get placementdecision -n openshift-gitops --selector cluster.open-cluster-management.io/placement=<placement-name>이로 인해 단일
PlacementDecision이 생성되어 현재 원하는 페일오버 클러스터에 워크로드를 배치합니다.정리해야 하는 클러스터를 가리키는 ApplicationSet에 대한 새
PlacementDecision을 생성합니다.예를 들면 다음과 같습니다.
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-gitops새로 생성된
PlacementDecision을 status 하위 리소스로 업데이트합니다.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=mergeApplicationSet의 애플리케이션 리소스가 원하는 클러스터에 배치되었는지 확인합니다.
$ oc get application -n openshift-gitops <applicationset-name>-<managedcluster-name-to-clean-up>출력에서 SYNC STATUS가
Synced로 표시되고 HEALTH STATUS가Healthy로 표시되는지 확인합니다.ArgoCD가 <managedcluster-name-to-clean-up>에서 워크로드 리소스를 수집할 수 있도록 3단계에서 생성된 PlacementDecision을 삭제합니다.
$ oc delete placementdecision -n openshift-gitops <placemen-name>-decision-<n>
지역 DRPolicy를 사용하여 DR로 보호되는 ApplicationSet은
VolumeSynchronizationDelay경고 실행을 중지합니다.-
BZ 참조: [2268594]