4.14. Regional-DR로 대체 클러스터 복구
기본 클러스터에 오류가 발생하면 복구하거나, 기존 클러스터의 복구를 기다리거나, 클러스터를 확인할 수 없는 경우 클러스터를 완전히 교체할 수 있는 옵션이 제공됩니다. 이 솔루션은 실패한 기본 클러스터를 새 클러스터로 교체하고 이 새 클러스터로 장애 조치(복구)를 활성화할 때 안내합니다.
이 지침에서는 애플리케이션을 설치하고 보호한 후 RHACM 관리 클러스터를 교체해야 한다고 가정합니다. 이 섹션의 경우 RHACM 관리 클러스터는 대체 클러스터이며 교체 되지 않은 클러스터는 남아 있는 클러스터 이며 새 클러스터는 복구 클러스터 입니다.
Discovered 애플리케이션의 클러스터 복구는 현재 지원되지 않습니다. 관리형 애플리케이션만 지원됩니다.
사전 요구 사항
- Regional-DR 환경이 RHACM(Red Hat Advance Cluster Management)을 사용하여 설치된 애플리케이션으로 구성되어 있는지 확인합니다.
- 애플리케이션에 클러스터 오류로부터 보호하는 데이터 정책이 할당되었는지 확인합니다.
프로세스
- Hub 클러스터에서 애플리케이션으로 이동하여 실패한 교체 클러스터에서 남은 클러스터로 모든 보호된 애플리케이션을 장애 조치(failover)합니다.
다음 단계로 이동하기 전에 보호된 모든 애플리케이션이 남아 있는 클러스터에서 실행 중인지 확인합니다.
참고각 애플리케이션
DRPlacementControl의 PROGRESSION 상태는정리로 표시됩니다. 교체 클러스터가 오프라인 상태이거나 다운된 경우 이를 예상해야 합니다.Hub 클러스터에서 교체 클러스터 의 DRCluster를 삭제합니다.
oc delete drcluster <drcluster_name> --wait=false
$ oc delete drcluster <drcluster_name> --wait=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고DRCluster는 이후 단계까지 삭제되지 않으므로
--wait=false를 사용합니다.남아 있는 클러스터에서 각 보호된 애플리케이션의 재해 복구를 비활성화합니다. hub 클러스터에서 모든 하위 단계를 수행합니다.
각 애플리케이션에 대해 배치를 편집하고 남아 있는 클러스터가 선택되어 있는지 확인합니다.
oc edit placement <placement_name> -n <namespace>
$ oc edit placement <placement_name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고서브스크립션 기반 애플리케이션의 경우 연결된 배치는 관리 클러스터와 유사한 허브 클러스터의 동일한 네임스페이스에 있습니다. ApplicationSets 기반 애플리케이션의 경우 관련 배치는 hub 클러스터의
openshift-gitops네임스페이스에서 확인할 수 있습니다.보호된 각 애플리케이션의 VolumeReplicationGroup에 대해 남아 있는 클러스터에서 다음 명령을 실행하여
s3Profile이 교체 클러스터에 대해 제거되었는지 확인합니다.oc get vrg -n <application_namespace> -o jsonpath='{.items[0].spec.s3Profiles}' | jq$ oc get vrg -n <application_namespace> -o jsonpath='{.items[0].spec.s3Profiles}' | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 보호된 애플리케이션 배치 리소스가 모두 보호된 클러스터 및 보호된 애플리케이션에서 제거된 교체 클러스터 s3Profile(s)을 사용하도록 구성된 후 Hub 클러스터에서 모든 DRPC(DDR
PlacementControl ) 리소스를 삭제합니다.DRPC를 삭제하기 전에 각 애플리케이션의 DRPC를 편집하고
drplacementcontrol.ramendr.openshift.io/do-not-delete-pvc: "true"주석을 추가합니다.oc edit drpc {drpc_name} -n {namespace}$ oc edit drpc {drpc_name} -n {namespace}Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 주석이 각 보호된 애플리케이션의 남아 있는 클러스터의 관련
VolumeReplicationGroup(VRG)에 복사되었는지 확인합니다.oc get vrg -n {namespace} -o jsonpath='{.items[*].metadata.annotations}' | jq$ oc get vrg -n {namespace} -o jsonpath='{.items[*].metadata.annotations}' | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow DRPC를 삭제합니다.
oc delete drpc {drpc_name} -n {namespace}$ oc delete drpc {drpc_name} -n {namespace}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고서브스크립션 기반 애플리케이션의 경우 연결된 DRPlacementControl은 hub 클러스터의 관리 클러스터와 동일한 네임스페이스에서 찾을 수 있습니다. ApplicationSet 기반 애플리케이션의 경우 연결된 DRPlacementControl은 hub 클러스터의
openshift-gitops네임스페이스에서 확인할 수 있습니다.다음 단계를 진행하기 전에 모든 DRPlacementControl 리소스가 삭제되었는지 확인합니다. 이 명령은 모든 네임스페이스에 대한 쿼리입니다. 리소스를 찾을 수 없습니다.
oc get drpc -A
$ oc get drpc -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow
각 애플리케이션 배치를 편집하고 주석
cluster.open-cluster-management.io/experimental-scheduling-disable: "true"를 제거합니다.oc edit placement {placement_name} -n {namespace}$ oc edit placement {placement_name} -n {namespace}Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 남아 있는 클러스터의 모든 보호된 애플리케이션에 대해 마지막 단계에 자세히 설명된 프로세스를 반복합니다. 이제 보호된 애플리케이션에 대한 DR 비활성화가 완료되었습니다.
hub 클러스터에서 다음 스크립트를 실행하여 남아 있는 클러스터 및 허브 클러스터에서 모든 재해 복구 구성을 제거합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이 스크립트는
oc delete project openshift-operators명령을 사용하여 hub 클러스터에서 이 네임스페이스의 Disaster Recovery(DR) Operator를 제거합니다. 이 네임스페이스에 다른 non-DR Operator가 있는 경우 OperatorHub 에서 다시 설치해야 합니다.네임스페이스
openshift-operators가 자동으로 생성된 후 재해 복구 메트릭을 수집하기 위해 모니터링 레이블을 다시 추가합니다.oc label namespace openshift-operators openshift.io/cluster-monitoring='true'
$ oc label namespace openshift-operators openshift.io/cluster-monitoring='true'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 남아 있는 클러스터에서 DR 설치 중에 생성된 오브젝트 버킷이 삭제되었는지 확인합니다. 스크립트에서 제거되지 않은 경우 오브젝트 버킷을 삭제합니다. DR에 사용되는 오브젝트 버킷의 이름은
odrbucket으로 시작됩니다.oc get obc -n openshift-storage
$ oc get obc -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHACM 콘솔을 사용하는 대체 클러스터 (클러스터)에 대해서만 Submariner 를 설치 제거합니다.
Infrastructure
Clusters Clustersets Submariner 애드온 보기로 이동하여 대체 클러스터에 대해서만 Submariner를 제거합니다. 참고교체 클러스터(실패 클러스터)의 Submariner 설치 제거 프로세스는 GREEN 상태로 유지되며 RHACM 콘솔에서 교체 클러스터가 분리될 때까지 완료되지 않습니다.
- 클러스터 보기로 돌아가서 교체 클러스터를 분리합니다.
-
새 OpenShift 클러스터(복구 클러스터)를 생성하고 인프라
클러스터 보기로 가져옵니다. -
Submariner에서 사용하는
Clusterset에 새 복구 클러스터를 추가합니다. 새 복구 클러스터에 대해서만 Submariner 애드온 을 설치합니다.
참고남아 있는 클러스터에 GlobalNet을 사용하는 경우 복구 클러스터에도 GlobalNet을 활성화해야 합니다.
복구 클러스터에 OpenShift Data Foundation 을 설치합니다. OpenShift Data Foundation 버전은 OpenShift Data Foundation 4.16 이상 및 나머지 클러스터와 동일한 ODF 버전이어야 합니다. 스토리지 클러스터를 생성하는 동안 데이터 보호 단계에서 재해 복구(지역 복구 전용) 확인란을 선택해야 합니다.
참고Submariner를 설치할 때 GlobalNet이 활성화된 경우 문서의 선택적 지침에 따라 복구 클러스터에서 OpenShift Data Foundation 스토리지 클러스터를 수정합니다.
- Hub 클러스터에서 OperatorHub에서 ODF Multicluster Orchestrator Operator를 설치합니다. 자세한 내용은 OpenShift Data Foundation Multicluster Orchestrator Operator 설치 장을 참조하십시오.
RHACM 콘솔을 사용하여 데이터 서비스
재해 복구 정책 탭으로 이동합니다. - Create DRPolicy 를 선택하고 정책 이름을 지정합니다.
- 복구 클러스터 및 남아 있는 클러스터를 선택합니다.
- 정책을 생성합니다. Hub 클러스터에서 재해 복구 정책 생성 장을 참조하십시오.
DRPolicy 상태가
Validated로 변경된 경우에만 다음 단계로 이동합니다.cephblockpoolID가 변경되지 않은 상태로 남아 있는지 확인합니다.복구 클러스터에서 다음 명령을 실행합니다.
oc get cm -n openshift-storage rook-ceph-csi-mapping-config -o yaml
$ oc get cm -n openshift-storage rook-ceph-csi-mapping-config -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 결과는 샘플 출력입니다.
apiVersion: v1 data: csi-mapping-config-json: '[{"ClusterIDMapping":{"openshift-storage":"openshift-storage"},"RBDPoolIDMapping":[{"1":"1"}]}]' kind: ConfigMap [...]apiVersion: v1 data: csi-mapping-config-json: '[{"ClusterIDMapping":{"openshift-storage":"openshift-storage"},"RBDPoolIDMapping":[{"1":"1"}]}]' kind: ConfigMap [...]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 남아 있는 클러스터에서 다음 명령을 실행합니다.
oc get cm -n openshift-storage rook-ceph-csi-mapping-config -o yaml
$ oc get cm -n openshift-storage rook-ceph-csi-mapping-config -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 결과는 샘플 출력입니다.
apiVersion: v1 data: csi-mapping-config-json: '[{"ClusterIDMapping":{"openshift-storage":"openshift-storage"},"RBDPoolIDMapping":[{"3":"1"}]}]' kind: ConfigMap [...]apiVersion: v1 data: csi-mapping-config-json: '[{"ClusterIDMapping":{"openshift-storage":"openshift-storage"},"RBDPoolIDMapping":[{"3":"1"}]}]' kind: ConfigMap [...]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 두 클러스터의 yaml에서
RBDPoolIDMapping을 확인합니다.RBDPoolIDMapping이 일치하지 않는 경우 복구 클러스터 의rook-ceph-csi-mapping-config구성 맵을 편집하여 다음 예와 같이 추가 또는 누락된RBDPoolIDMapping을 추가합니다.csi-mapping-config-json: '[{"ClusterIDMapping":{"openshift-storage":"openshift-storage"},"RBDPoolIDMapping":[{"1":"1"}]},{"ClusterIDMapping":{"openshift-storage":"openshift-storage"},"RBDPoolIDMapping":[{"1":"3"}]}]’csi-mapping-config-json: '[{"ClusterIDMapping":{"openshift-storage":"openshift-storage"},"RBDPoolIDMapping":[{"1":"1"}]},{"ClusterIDMapping":{"openshift-storage":"openshift-storage"},"RBDPoolIDMapping":[{"1":"3"}]}]’Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고configmap을 편집한 후 Pod를 삭제하여 남아 있는 클러스터의 네임스페이스
openshift-storage에서 rook-ceph-operator Pod를 다시 시작합니다.
- 교체 클러스터가 실패하기 전에 원래 보호되었던 클러스터의 애플리케이션에 DRPolicy를 적용합니다.
- 남아 있는 클러스터에서 새로 보호된 애플리케이션을 새 복구 클러스터로 다시 재배치합니다. RHACM 콘솔을 사용하여 애플리케이션 메뉴로 이동하여 재배치를 수행합니다.
이 프로세스를 수행하는 동안 문제가 발생하면 Red Hat 고객 지원팀에 문의하십시오.