5장. 재해 복구 문제 해결
5.1. Metro-DR 문제 해결
5.1.1. 장애 조치 후 statefulset 애플리케이션이 중지됨
- 문제
기본 클러스터로 재배치하는 동안 DRPlacementControl은 PROGRESSION을 "MovingToSecondary"로 보고했습니다.
이전에는 Kubernetes v1.23 이전에는 Kubernetes 컨트롤 플레인에서 StatefulSets용으로 생성된 PVC를 정리하지 않았습니다. 이 활동은 클러스터 관리자 또는 StatefulSets를 관리하는 소프트웨어 운영자에게 맡았습니다. 이로 인해 Pod가 삭제될 때 StatefulSets의 PVC가 변경되지 않았습니다. 이렇게 하면 Ramen에서 애플리케이션을 기본 클러스터에 재배치하지 않습니다.
- 해결
워크로드가 StatefulSets를 사용하고 재배치가 PROGRESSION으로 "MovingToSecondary"로 고정되면 다음을 실행합니다.
oc get pvc -n <namespace>
$ oc get pvc -n <namespace>
Copy to Clipboard Copied! StatefulSet에 속하는 해당 네임스페이스의 바인딩된 각 PVC에 대해 다음을 실행합니다.
oc delete pvc <pvcname> -n namespace
$ oc delete pvc <pvcname> -n namespace
Copy to Clipboard Copied! 모든 PVC가 삭제되면 VRG( Volume Replication Group)가 보조로 전환된 후 삭제됩니다.
다음 명령을 실행하십시오.
oc get drpc -n <namespace> -o wide
$ oc get drpc -n <namespace> -o wide
Copy to Clipboard Copied! 몇 초에서 몇 분 후에 PROGRESSION은 "완전"을 보고하고 재배치가 완료됩니다.
- 결과
- 워크로드를 기본 클러스터로 재배치
BZ 참조: [2118270]
5.1.2. DR 정책은 동일한 네임스페이스의 모든 애플리케이션을 보호합니다.
- 문제
-
DR 정책에서 사용하도록 단일 애플리케이션만 선택되지만 동일한 네임스페이스의 모든 애플리케이션은 보호됩니다. 이로 인해 여러 워크로드에서
DRPlacementControl
spec.pvcSelector
와 일치하는 PVC가 생성되거나 모든 워크로드에서 선택기가 누락된 경우 복제 관리가 각 PVC를 여러 번 관리하고 개별DRPlacementControl
작업을 기반으로 데이터 손상 또는 유효하지 않은 작업을 유발할 수 있습니다. - 해결
-
워크로드에 고유한 레이블 PVC를 지정하고 선택한 레이블을 DRPlacementControl
spec.pvcSelector
로 사용하여 네임스페이스 내에서 PVC의 하위 집합을 보호하고 관리합니다. 사용자 인터페이스를 사용하여 DRPlacementControl에 대한spec.pvcSelector
필드를 지정할 수 없으므로 이러한 애플리케이션에 대한 DRPlacementControl을 삭제하고 명령줄을 사용하여 생성해야 합니다.
BZ 참조: [2111163]
5.1.3. 애플리케이션의 장애 복구 중 Relocating 상태로 유지됨
- 문제
-
이 문제는 애플리케이션의 장애 조치 및 장애 조치를 수행한 후 발생할 수 있습니다(모든 노드 또는 클러스터가 가동됨). 장애 복구 애플리케이션이 PV 복원이 완료될
때까지 대기
중이라는 메시지와 함께재배치
상태로 고정되는 경우입니다. - 해결
- S3 클라이언트 또는 동등한 기능을 사용하여 s3 저장소에서 중복된 PV 오브젝트를 정리합니다. 타임스탬프가 있는 경우에만 장애 조치(failover) 또는 재배치 시간에 가까운 상태로 두십시오.
BZ 참조: [2120201]
5.1.4. RHACM 2.8을 사용하여 서브스크립션 워크로드에 DRPolicy를 적용할 수 없음
- 문제
-
RHACM(Red Hat Advanced Cluster Management) 2.8 콘솔은
PlacementRule
유형을 더 이상 사용하지 않고 서브스크립션 애플리케이션의배치 유형으로
이동했습니다. 따라서 사용자가 RHACM 2.8 콘솔을 사용하여 서브스크립션 애플리케이션을 생성하면 배치만 사용하여 애플리케이션이 생성됩니다. OpenShift Data Foundation 4.12 재해 복구 사용자 인터페이스와 Ramen Operator는 서브스크립션 애플리케이션에 대한 배치를 지원하지 않으므로 재해 복구 사용자 인터페이스는 애플리케이션을 감지하고 정책 할당 세부 정보를 표시할 수 없습니다. - 해결
RHACM 2.8 콘솔은 CLI(명령줄 인터페이스)를 사용하여 생성된
PlacementRule
을 탐지할 수 있으므로PlacementRule
을 사용하여 RHACM 2.8에서 서브스크립션 애플리케이션을 생성하기 위한 다음 단계를 수행합니다.-
애플리케이션 네임스페이스를 사용하여 새 프로젝트를 생성합니다. (예:
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
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
Copy to Clipboard Copied! -
서브스크립션 애플리케이션 페이지에서 RHACM 콘솔을 사용하여 애플리케이션을 생성하는 동안 이 새
PlacementRule
을 선택합니다. -
YAML 편집기에서
PlacementRule
을 삭제하여 선택한 항목을 다시 사용할 수 있습니다.
-
애플리케이션 네임스페이스를 사용하여 새 프로젝트를 생성합니다. (예:
BZ 참조: [2216190]