4.14. Regional-DR を使用した代替クラスターへの復旧


プライマリークラスターに障害が発生した場合、修復するか、既存のクラスターの回復を待つか、クラスターが交換不可能な場合はクラスター全体を交換するかのオプションが表示されます。このソリューションは、障害が発生したプライマリークラスターを新しいクラスターに置き換えるときにガイドし、この新しいクラスターへのフォールバック (再配置) を有効にします。

この手順では、アプリケーションをインストールして保護した後に、RHACM マネージドクラスターを置き換える必要があることを前提としています。このセクションでは、RHACM マネージドクラスターを 代替クラスター とし、置換されないクラスターを 存続クラスター、新しいクラスターを リカバリークラスター とします。

注記

検出対象アプリケーションの代替クラスターへの復旧は、現在サポートされていません。管理対象アプリケーションのみがサポートされています。

前提条件

  • Regional-DR 環境が、Red Hat Advance Cluster Management (RHACM) を使用してインストールされたアプリケーションで設定されている。
  • アプリケーションをクラスター障害から保護するデータポリシーが割り当てられている。

手順

  1. ハブクラスターで、Applications に移動し、障害が発生した代替クラスター上の保護されたすべてのアプリケーションを、存続クラスターにフェイルオーバーします。
  2. 次のステップに進む前に、保護されたすべてのアプリケーションが存続クラスター上で実行されていることを確認します。

    注記

    各アプリケーションの DRPlacementControl の PROGRESSION 状態には、Cleaning Up と表示されます。代替クラスターがオフラインの場合またはダウンしている場合、これは想定される動作です。

  3. ハブクラスターから、代替クラスター の DRCluster を削除します。

    $ oc delete drcluster <drcluster_name> --wait=false
    注記

    DRCluster は後の手順まで削除されないため、--wait=false を使用します。

  4. 存続クラスター上の保護された各アプリケーションの障害復旧を無効にします。次のサブステップは、すべてハブクラスターで実行します。

    1. 各アプリケーションについて、Placement を編集し、存続クラスターが選択されていることを確認します。

      $ oc edit placement <placement_name> -n <namespace>
      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
      [...]
      注記

      サブスクリプションベースのアプリケーションの場合、関連する Placement は、マネージドクラスターと同様に、ハブクラスター上の同じ namespace にあります。ApplicationSets ベースのアプリケーションの場合、関連する Placement は、ハブクラスター上の openshift-gitops namespace にあります。

    2. 保護されたアプリケーションの VolumeReplicationGroup ごとに、残りのクラスター上で次のコマンドを実行して、代替クラスターの s3Profile が削除されていることを確認します。

      $ oc get vrg -n <application_namespace> -o jsonpath='{.items[0].spec.s3Profiles}' | jq
    3. 保護されたアプリケーションから削除された存続クラスターと代替クラスターの s3Profile を使用するように、保護されたアプリケーションの Placement リソースをすべて設定した後に、ハブクラスター からすべての DRPlacementControl (DRPC) リソースを削除します。

      1. DRPC を削除する前に、各アプリケーションの DRPC を編集し、アノテーション drplacementcontrol.ramendr.openshift.io/do-not-delete-pvc: "true" を追加します。

        $ oc edit drpc {drpc_name} -n {namespace}
        apiVersion: ramendr.openshift.io/v1alpha1
           kind: DRPlacementControl
           metadata:
             annotations:
             ## Add this annotation
             drplacementcontrol.ramendr.openshift.io/do-not-delete-pvc: "true"
      2. 保護された各アプリケーションについて、存続クラスター上の関連する VolumeReplicationGroup (VRG) にアノテーションがコピーされていることを確認します。

        $ oc get vrg -n {namespace} -o jsonpath='{.items[*].metadata.annotations}' | jq
      3. DRPC を削除します。

        $ oc delete drpc {drpc_name} -n {namespace}
        注記

        サブスクリプションベースのアプリケーションの場合、関連する DRPlacementControl は、ハブクラスター上のマネージドクラスターと同じ namespace にあります。ApplicationSets ベースのアプリケーションの場合、関連する DRPlacementControl は、ハブクラスターの openshift-gitops namespace にあります。

      4. 次の手順に進む前に、すべての DRPlacementControl リソースが削除されていることを確認してください。このコマンドは、すべての namespace を対象にするクエリーです。リソースが見つからないはずです。

        $ oc get drpc -A
    4. 各アプリケーションの Placement を編集し、アノテーション cluster.open-cluster-management.io/experimental-scheduling-disable: "true" を削除します。

      $ oc edit placement {placement_name} -n {namespace}
      apiVersion: cluster.open-cluster-management.io/v1beta1
      kind: Placement
      metadata:
      annotations:
        ## Remove this annotation
        cluster.open-cluster-management.io/experimental-scheduling-disable: "true"
      [...]
  5. 存続したクラスター上で保護されたアプリケーションごとに、最後のステップとサブステップで説明したプロセスを繰り返します。保護されたアプリケーションの DR の無効化が完了しました。
  6. ハブクラスター で次のスクリプトを実行して、存続クラスターハブクラスター からすべての障害復旧設定を削除します。

    #!/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
    注記

    このスクリプトでは、コマンド oc delete project openshift-operators を使用して、ハブクラスター上のこの namespace にある Disaster Recovery (DR) Operator を削除します。この namespace に他の DR 以外の Operator がある場合は、OperatorHub から再度インストールする必要があります。

  7. openshift-operators namespace が再び作成された後に、障害復旧メトリクスを収集するために monitoring ラベルを追加します。

    $ oc label namespace openshift-operators openshift.io/cluster-monitoring='true'
  8. 存続クラスター で、DR のインストール中に作成されたオブジェクトバケットが削除されていることを確認します。スクリプトによって削除されなかった場合は、オブジェクトバケットを削除します。DR に使用されるオブジェクトバケットの名前は、odrbucket で始まります。

    $ oc get obc -n openshift-storage
  9. RHACM コンソールを使用して、代替クラスター (障害が発生したクラスター) の Submariner だけをアンインストールします。

    1. Infrastructure Clusters Clustersets Submariner add-ons ビューに移動し、代替クラスターの Submariner だけをアンインストールします。

      注記

      代替クラスター (障害が発生したクラスター) の Submariner のアンインストールプロセスは、代替クラスターが RHACM コンソールからデタッチされるまで、緑色のままになり、完了しません。

    2. Clusters view に戻り、代替クラスターをデタッチします。
    3. 新しい OpenShift クラスター (リカバリークラスター) を作成し、Infrastructure Clusters view にインポートします。
    4. Submariner が使用する Clusterset に新しいリカバリークラスターを追加します。
    5. 新しい リカバリークラスター に対してのみ Submariner アドオン をインストールします。

      注記

      存続クラスターに GlobalNet が使用されている場合は、リカバリークラスターでも GlobalNet を有効にしてください。

  10. リカバリークラスターOpenShift Data Foundation をインストールします。OpenShift Data Foundation のバージョンは、OpenShift Data Foundation 4.16 (またはそれ以上) であり、存続クラスターと同じバージョンの ODF である必要があります。ストレージクラスターの作成中に、Data Protection ステップで、Prepare cluster for disaster recovery (Regional-DR only) チェックボックスを選択する必要があります。

    注記

    Submariner のインストール時に GlobalNet を有効にした場合は、ドキュメントのオプションの手順に従って、必ずリカバリークラスター上の OpenShift Data Foundation ストレージクラスターを変更してください。

  11. ハブクラスター で、OperatorHub から ODF Multicluster Orchestrator Operator をインストールします。手順は、OpenShift Data Foundation Multicluster Orchestrator Operator のインストール の章を参照してください。
  12. RHACM コンソールを使用して、Data Services Disaster recovery Policies タブに移動します。

    1. Create DRPolicy を選択し、ポリシーに名前を付けます。
    2. リカバリークラスター存続クラスター を選択します。
    3. ポリシーを作成します。手順は、ハブクラスターでの障害復旧ポリシーの作成 の章を参照してください。

    DRPolicy のステータスが Validated に変更された後にのみ、次の手順に進みます。

  13. cephblockpool の ID が変更されていないことを確認します。

    1. リカバリークラスター で次のコマンドを実行します。

      $ oc get cm -n openshift-storage rook-ceph-csi-mapping-config -o yaml

      この結果はサンプルの出力です。

      apiVersion: v1
      data:
        csi-mapping-config-json: '[{"ClusterIDMapping":{"openshift-storage":"openshift-storage"},"RBDPoolIDMapping":[{"1":"1"}]}]'
      kind: ConfigMap
      [...]
    2. 存続クラスター で次のコマンドを実行します。

      $ oc get cm -n openshift-storage rook-ceph-csi-mapping-config -o yaml

      この結果はサンプルの出力です。

      apiVersion: v1
      data:
        csi-mapping-config-json: '[{"ClusterIDMapping":{"openshift-storage":"openshift-storage"},"RBDPoolIDMapping":[{"3":"1"}]}]'
      kind: ConfigMap
      [...]
    3. 両方のクラスターの yaml 内の RBDPoolIDMapping を確認します。RBDPoolIDMapping が一致しない場合は、次の例に示すように、リカバリークラスターrook-ceph-csi-mapping-config config map を編集して、追加または不足している RBDPoolIDMapping を直接追加します。

      csi-mapping-config-json: '[{"ClusterIDMapping":{"openshift-storage":"openshift-storage"},"RBDPoolIDMapping":[{"1":"1"}]},{"ClusterIDMapping":{"openshift-storage":"openshift-storage"},"RBDPoolIDMapping":[{"1":"3"}]}]’
      注記

      configmap を編集した後、Pod を削除して、存続クラスターの namespace openshift-storage 内の rook-ceph-operator Pod を再起動してください。

  14. 代替クラスターに障害が発生する前に元々保護されていた、存続クラスター上のアプリケーションに DRPolicy を適用します。
  15. 存続クラスター 上の新しい保護されたアプリケーションを新しい リカバリークラスター に再配置します。RHACM コンソールを使用して、Applications メニューに移動して再配置を実行します。
注記

このプロセスの実行中に問題が発生した場合は、Red Hat カスタマーサポート にお問い合わせください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.