7장. 재해 복구 문제 해결
7.1. Metro-DR 문제 해결
7.1.1. 페일오버 후 상태 저장 세트 애플리케이션
- 문제
기본 클러스터로 재배치하는 동안 DRPlacementControl은 PROGRESSION을 "MovingToSecondary"로 보고하고 있습니다.
이전에는 Kubernetes v1.23 이전에는 Kubernetes 컨트롤 플레인에서 StatefulSets용으로 생성된 PVC를 정리하지 않았습니다. 이 작업은 클러스터 관리자 또는 StatefulSets를 관리하는 소프트웨어 Operator에 남아 있었습니다. 이로 인해 Pod가 삭제되면 StatefulSets의 PVC가 변경되지 않았습니다. 이렇게 하면 Ramen에서 애플리케이션을 기본 클러스터로 재배치하지 않습니다.
- 해결
워크로드에서 StatefulSets를 사용하고 재배치가 "MovingToSecondary"로 PROGRESSION으로 중단된 경우 다음을 실행합니다.
$ oc get pvc -n <namespace>
StatefulSet에 속하는 해당 네임스페이스의 바인딩된 각 PVC에 대해 다음을 실행합니다.
$ oc delete pvc <pvcname> -n namespace
모든 PVC가 삭제되면 VRG(볼륨 복제 그룹)가 보조로 전환된 다음 삭제됩니다.
다음 명령을 실행합니다.
$ oc get drpc -n <namespace> -o wide
몇 초에서 몇 분 후에 PROGRESSION은 "완료" 및 재배치가 완료된 것으로 보고합니다.
- 결과
- 워크로드가 기본 클러스터로 재배치됨
BZ 참조: [2118270]
7.1.2. DR 정책은 동일한 네임스페이스의 모든 애플리케이션을 보호합니다.
- 문제
-
DR 정책에서 사용하도록 단일 애플리케이션만 선택되지만 동일한 네임스페이스의 모든 애플리케이션은 보호됩니다. 이렇게 하면 PVC가 여러 워크로드에서
DRPlacementControl
spec.pvcSelector
와 일치하거나 선택기가 모든 워크로드에서 누락된 경우 각 PVC를 여러 번 관리하고 개별DRPlacementControl
작업을 기반으로 데이터 손상 또는 유효하지 않은 작업을 발생시킵니다. - 해결
-
워크로드에 고유하게 속하는 라벨 PVC를 DRPlacementControl
spec.pvcSelector
로 사용하여 네임스페이스 내의 PVC 하위 집합을 보호하고 관리하는 DRPlacementControl을 분리합니다. 사용자 인터페이스를 사용하여 DRPlacementControl에 대해spec.pvcSelector
필드를 지정할 수 없으므로 명령줄을 사용하여 이러한 애플리케이션에 대한 DRPlacementControl을 삭제하고 생성해야 합니다.
BZ 참조: [2128860]
7.1.3. 애플리케이션 장애 복구 중 상태 재할당 중
- 문제
-
이 문제는 애플리케이션의 장애 조치 및 장애 조치(모든 노드 또는 클러스터 작동)를 수행한 후 발생할 수 있습니다. failback을 수행할 때 애플리케이션이
Relocating
상태에서 PV 복원을 완료하라는 메시지가 표시됩니다. - 해결
- S3 클라이언트를 사용하여 s3 저장소에서 중복된 PV 오브젝트를 정리합니다. 타임스탬프가 장애 조치(failover) 또는 재배치 시간에 더 가깝게 있는 하나만 유지합니다.
BZ 참조: [2120201]
7.1.4. 재배치 또는 실패가 Initiating
상태로 중단될 수 있습니다.
- 문제
-
보조 서비스가 중단되는 동안 기본 클러스터가 중단되어 온라인 상태가 되면
재배치
또는장애 복구가
Initiating
상태가 될 수 있습니다. - 해결
이러한 상황을 방지하려면 이전 활성 허브에서 관리 클러스터로의 모든 액세스를 차단하십시오.
또는 워크로드를 이동하기 전에 또는 정리 단계에 있을 때 이전 활성 허브 클러스터에서 ApplicationSet 컨트롤러를 축소할 수 있습니다.
이전 활성 허브에서 다음 명령을 사용하여 두 배포를 축소합니다.
$ oc scale deploy -n openshift-gitops-operator openshift-gitops-operator-controller-manager --replicas=0 $ oc scale statefulset -n openshift-gitops openshift-gitops-application-controller --replicas=0
BZ 참조: [2243804]