4.14. Regional-DR로 대체 클러스터 복구


기본 클러스터에 오류가 발생하면 복구하거나, 기존 클러스터의 복구를 기다리거나, 클러스터를 확인할 수 없는 경우 클러스터를 완전히 교체할 수 있는 옵션이 제공됩니다. 이 솔루션은 실패한 기본 클러스터를 새 클러스터로 교체하고 이 새 클러스터로 장애 조치(복구)를 활성화할 때 안내합니다.

이 지침에서는 애플리케이션을 설치하고 보호한 후 RHACM 관리 클러스터를 교체해야 한다고 가정합니다. 이 섹션의 경우 RHACM 관리 클러스터는 대체 클러스터이며 교체 되지 않은 클러스터는 남아 있는 클러스터 이며 새 클러스터는 복구 클러스터 입니다.

참고

Discovered 애플리케이션의 클러스터 복구는 현재 지원되지 않습니다. 관리형 애플리케이션만 지원됩니다.

사전 요구 사항

  • Regional-DR 환경이 RHACM(Red Hat Advance Cluster Management)을 사용하여 설치된 애플리케이션으로 구성되어 있는지 확인합니다.
  • 애플리케이션에 클러스터 오류로부터 보호하는 데이터 정책이 할당되었는지 확인합니다.

프로세스

  1. Hub 클러스터에서 애플리케이션으로 이동하여 실패한 교체 클러스터에서 남은 클러스터로 모든 보호된 애플리케이션을 장애 조치(failover)합니다.
  2. 다음 단계로 이동하기 전에 보호된 모든 애플리케이션이 남아 있는 클러스터에서 실행 중인지 확인합니다.

    참고

    각 애플리케이션 DRPlacementControl 의 PROGRESSION 상태는 정리 로 표시됩니다. 교체 클러스터가 오프라인 상태이거나 다운된 경우 이를 예상해야 합니다.

  3. Hub 클러스터에서 교체 클러스터 의 DRCluster를 삭제합니다.

    $ oc delete drcluster <drcluster_name> --wait=false
    Copy to Clipboard Toggle word wrap
    참고

    DRCluster는 이후 단계까지 삭제되지 않으므로 --wait=false 를 사용합니다.

  4. 남아 있는 클러스터에서 각 보호된 애플리케이션의 재해 복구를 비활성화합니다. hub 클러스터에서 모든 하위 단계를 수행합니다.

    1. 각 애플리케이션에 대해 배치를 편집하고 남아 있는 클러스터가 선택되어 있는지 확인합니다.

      $ oc edit placement <placement_name> -n <namespace>
      Copy to Clipboard Toggle word wrap
      apiVersion: cluster.open-cluster-management.io/v1beta1
      kind: Placement
      metadata:
      annotations:
        cluster.open-cluster-management.io/experimental-scheduling-disable: "true"
      [...]
      spec:
      clusterSets:
      - submariner
      predicates:
      - requiredClusterSelector:
          claimSelector: {}
          labelSelector:
            matchExpressions:
            - key: name
              operator: In
              values:
              - cluster1  <-- Modify to be surviving cluster name
      [...]
      Copy to Clipboard Toggle word wrap
      참고

      서브스크립션 기반 애플리케이션의 경우 연결된 배치는 관리 클러스터와 유사한 허브 클러스터의 동일한 네임스페이스에 있습니다. ApplicationSets 기반 애플리케이션의 경우 관련 배치는 hub 클러스터의 openshift-gitops 네임스페이스에서 확인할 수 있습니다.

    2. 보호된 각 애플리케이션의 VolumeReplicationGroup에 대해 남아 있는 클러스터에서 다음 명령을 실행하여 s3Profile 이 교체 클러스터에 대해 제거되었는지 확인합니다.

      $ oc get vrg -n <application_namespace> -o jsonpath='{.items[0].spec.s3Profiles}' | jq
      Copy to Clipboard Toggle word wrap
    3. 보호된 애플리케이션 배치 리소스가 모두 보호된 클러스터 및 보호된 애플리케이션에서 제거된 교체 클러스터 s3Profile(s)을 사용하도록 구성된 후 Hub 클러스터에서 모든 DRPC(DDR Placement Control ) 리소스를 삭제합니다.

      1. DRPC를 삭제하기 전에 각 애플리케이션의 DRPC를 편집하고 drplacementcontrol.ramendr.openshift.io/do-not-delete-pvc: "true" 주석을 추가합니다.

        $ oc edit drpc {drpc_name} -n {namespace}
        Copy to Clipboard Toggle word wrap
        apiVersion: ramendr.openshift.io/v1alpha1
           kind: DRPlacementControl
           metadata:
             annotations:
             ## Add this annotation
             drplacementcontrol.ramendr.openshift.io/do-not-delete-pvc: "true"
        Copy to Clipboard Toggle word wrap
      2. 주석이 각 보호된 애플리케이션의 남아 있는 클러스터의 관련 VolumeReplicationGroup (VRG)에 복사되었는지 확인합니다.

        $ oc get vrg -n {namespace} -o jsonpath='{.items[*].metadata.annotations}' | jq
        Copy to Clipboard Toggle word wrap
      3. DRPC를 삭제합니다.

        $ oc delete drpc {drpc_name} -n {namespace}
        Copy to Clipboard Toggle word wrap
        참고

        서브스크립션 기반 애플리케이션의 경우 연결된 DRPlacementControl은 hub 클러스터의 관리 클러스터와 동일한 네임스페이스에서 찾을 수 있습니다. ApplicationSet 기반 애플리케이션의 경우 연결된 DRPlacementControl은 hub 클러스터의 openshift-gitops 네임스페이스에서 확인할 수 있습니다.

      4. 다음 단계를 진행하기 전에 모든 DRPlacementControl 리소스가 삭제되었는지 확인합니다. 이 명령은 모든 네임스페이스에 대한 쿼리입니다. 리소스를 찾을 수 없습니다.

        $ oc get drpc -A
        Copy to Clipboard Toggle word wrap
    4. 각 애플리케이션 배치를 편집하고 주석 cluster.open-cluster-management.io/experimental-scheduling-disable: "true" 를 제거합니다.

      $ oc edit placement {placement_name} -n {namespace}
      Copy to Clipboard Toggle word wrap
      apiVersion: cluster.open-cluster-management.io/v1beta1
      kind: Placement
      metadata:
      annotations:
        ## Remove this annotation
        cluster.open-cluster-management.io/experimental-scheduling-disable: "true"
      [...]
      Copy to Clipboard Toggle word wrap
  5. 남아 있는 클러스터의 모든 보호된 애플리케이션에 대해 마지막 단계에 자세히 설명된 프로세스를 반복합니다. 이제 보호된 애플리케이션에 대한 DR 비활성화가 완료되었습니다.
  6. hub 클러스터에서 다음 스크립트를 실행하여 남아 있는 클러스터 및 허브 클러스터에서 모든 재해 복구 구성을 제거합니다.

    #!/bin/bash
    
    secrets=$(oc get secrets -n openshift-operators | grep Opaque | cut -d" " -f1)
    echo $secrets
    for secret in $secrets
    do
        oc patch -n openshift-operators secret/$secret -p '{"metadata":{"finalizers":null}}' --type=merge
    done
    
    mirrorpeers=$(oc get mirrorpeer -o name)
    echo $mirrorpeers
    for mp in $mirrorpeers
    do
        oc patch $mp -p '{"metadata":{"finalizers":null}}' --type=merge
        oc delete $mp
    done
    
    drpolicies=$(oc get drpolicy -o name)
    echo $drpolicies
    for drp in $drpolicies
    do
        oc patch $drp -p '{"metadata":{"finalizers":null}}' --type=merge
        oc delete $drp
    done
    
    drclusters=$(oc get drcluster -o name)
    echo $drclusters
    for drp in $drclusters
    do
        oc patch $drp -p '{"metadata":{"finalizers":null}}' --type=merge
        oc delete $drp
    done
    
    oc delete project openshift-operators
    
    managedclusters=$(oc get managedclusters -o name | cut -d"/" -f2)
    echo $managedclusters
    for mc in $managedclusters
    do
        secrets=$(oc get secrets -n $mc | grep multicluster.odf.openshift.io/secret-type | cut -d" " -f1)
        echo $secrets
        for secret in $secrets
        do
            set -x
            oc patch -n $mc secret/$secret -p '{"metadata":{"finalizers":null}}' --type=merge
            oc delete -n $mc secret/$secret
        done
    done
    
    oc delete clusterrolebinding spoke-clusterrole-bindings
    Copy to Clipboard Toggle word wrap
    참고

    이 스크립트는 oc delete project openshift-operators 명령을 사용하여 hub 클러스터에서 이 네임스페이스의 Disaster Recovery(DR) Operator를 제거합니다. 이 네임스페이스에 다른 non-DR Operator가 있는 경우 OperatorHub 에서 다시 설치해야 합니다.

  7. 네임스페이스 openshift-operators 가 자동으로 생성된 후 재해 복구 메트릭을 수집하기 위해 모니터링 레이블을 다시 추가합니다.

    $ oc label namespace openshift-operators openshift.io/cluster-monitoring='true'
    Copy to Clipboard Toggle word wrap
  8. 남아 있는 클러스터에서 DR 설치 중에 생성된 오브젝트 버킷이 삭제되었는지 확인합니다. 스크립트에서 제거되지 않은 경우 오브젝트 버킷을 삭제합니다. DR에 사용되는 오브젝트 버킷의 이름은 odrbucket 으로 시작됩니다.

    $ oc get obc -n openshift-storage
    Copy to Clipboard Toggle word wrap
  9. RHACM 콘솔을 사용하는 대체 클러스터 (클러스터)에 대해서만 Submariner 를 설치 제거합니다.

    1. Infrastructure Clusters Clustersets Submariner 애드온 보기로 이동하여 대체 클러스터에 대해서만 Submariner를 제거합니다.

      참고

      교체 클러스터(실패 클러스터)의 Submariner 설치 제거 프로세스는 GREEN 상태로 유지되며 RHACM 콘솔에서 교체 클러스터가 분리될 때까지 완료되지 않습니다.

    2. 클러스터 보기로 돌아가서 교체 클러스터를 분리합니다.
    3. 새 OpenShift 클러스터(복구 클러스터)를 생성하고 인프라 클러스터 보기로 가져옵니다.
    4. Submariner에서 사용하는 Clusterset 에 새 복구 클러스터를 추가합니다.
    5. 복구 클러스터에 대해서만 Submariner 애드온 을 설치합니다.

      참고

      남아 있는 클러스터에 GlobalNet을 사용하는 경우 복구 클러스터에도 GlobalNet을 활성화해야 합니다.

  10. 복구 클러스터에 OpenShift Data Foundation 을 설치합니다. OpenShift Data Foundation 버전은 OpenShift Data Foundation 4.16 이상 및 나머지 클러스터와 동일한 ODF 버전이어야 합니다. 스토리지 클러스터를 생성하는 동안 데이터 보호 단계에서 재해 복구(지역 복구 전용) 확인란을 선택해야 합니다.

    참고

    Submariner를 설치할 때 GlobalNet이 활성화된 경우 문서의 선택적 지침에 따라 복구 클러스터에서 OpenShift Data Foundation 스토리지 클러스터를 수정합니다.

  11. Hub 클러스터에서 OperatorHub에서 ODF Multicluster Orchestrator Operator를 설치합니다. 자세한 내용은 OpenShift Data Foundation Multicluster Orchestrator Operator 설치 장을 참조하십시오.
  12. RHACM 콘솔을 사용하여 데이터 서비스 재해 복구 정책 탭으로 이동합니다.

    1. Create DRPolicy 를 선택하고 정책 이름을 지정합니다.
    2. 복구 클러스터남아 있는 클러스터를 선택합니다.
    3. 정책을 생성합니다. Hub 클러스터에서 재해 복구 정책 생성 장을 참조하십시오.

    DRPolicy 상태가 Validated 로 변경된 경우에만 다음 단계로 이동합니다.

  13. cephblockpool ID가 변경되지 않은 상태로 남아 있는지 확인합니다.

    1. 복구 클러스터에서 다음 명령을 실행합니다.

      $ oc get cm -n openshift-storage rook-ceph-csi-mapping-config -o yaml
      Copy to Clipboard Toggle word wrap

      결과는 샘플 출력입니다.

      apiVersion: v1
      data:
        csi-mapping-config-json: '[{"ClusterIDMapping":{"openshift-storage":"openshift-storage"},"RBDPoolIDMapping":[{"1":"1"}]}]'
      kind: ConfigMap
      [...]
      Copy to Clipboard Toggle word wrap
    2. 남아 있는 클러스터에서 다음 명령을 실행합니다.

      $ oc get cm -n openshift-storage rook-ceph-csi-mapping-config -o yaml
      Copy to Clipboard Toggle word wrap

      결과는 샘플 출력입니다.

      apiVersion: v1
      data:
        csi-mapping-config-json: '[{"ClusterIDMapping":{"openshift-storage":"openshift-storage"},"RBDPoolIDMapping":[{"3":"1"}]}]'
      kind: ConfigMap
      [...]
      Copy to Clipboard Toggle word wrap
    3. 두 클러스터의 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"}]}]’
      Copy to Clipboard Toggle word wrap
      참고

      configmap을 편집한 후 Pod를 삭제하여 남아 있는 클러스터의 네임스페이스 openshift-storage 에서 rook-ceph-operator Pod를 다시 시작합니다.

  14. 교체 클러스터가 실패하기 전에 원래 보호되었던 클러스터의 애플리케이션에 DRPolicy를 적용합니다.
  15. 남아 있는 클러스터에서 새로 보호된 애플리케이션을 새 복구 클러스터로 다시 재배치합니다. RHACM 콘솔을 사용하여 애플리케이션 메뉴로 이동하여 재배치를 수행합니다.
참고

이 프로세스를 수행하는 동안 문제가 발생하면 Red Hat 고객 지원팀에 문의하십시오.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동