3.17. Metro-DR を使用した代替クラスターへの復旧
プライマリークラスターに障害が発生した場合、修復するか、既存のクラスターの回復を待つか、クラスターが交換不可能な場合はクラスター全体を交換するかのオプションが表示されます。このソリューションは、障害が発生したプライマリークラスターを新しいクラスターに置き換えるときにガイドし、この新しいクラスターへのフォールバック (再配置) を有効にします。
この手順では、アプリケーションをインストールして保護した後に、RHACM マネージドクラスターを置き換える必要があることを前提としています。このセクションでは、RHACM マネージドクラスターを 代替クラスター とし、置換されないクラスターを 存続クラスター、新しいクラスターを リカバリークラスター とします。
検出対象アプリケーションの代替クラスターへの復旧は、現在サポートされていません。管理対象アプリケーションのみがサポートされています。
前提条件
- Metro-DR 環境が、Red Hat Advance Cluster Management (RHACM) を使用してインストールされたアプリケーションで設定されている。
- アプリケーションをクラスター障害から保護するデータポリシーが割り当てられている。
手順
ハブクラスター で以下の手順を実行します。
CLI ターミナルを使用して DRCluster リソースを編集し、代替クラスターをフェンスします。<drcluster_name> は代替クラスター名です。
oc edit drcluster <drcluster_name>
apiVersion: ramendr.openshift.io/v1alpha1 kind: DRCluster metadata: [...] spec: ## Add or modify this line clusterFence: Fenced cidrs: [...] [...]
- RHACM コンソールを使用して、Applications に移動し、障害が発生したクラスターから存続クラスターに、保護されたすべてのアプリケーションをフェイルオーバーします。
保護されたすべてのアプリケーションが、存続クラスター上で実行されていることを確認します。
注記各アプリケーションの DRPlacementControl の PROGRESSION 状態には、
Cleaning Up
と表示されます。代替クラスターがオフラインの場合またはダウンしている場合、これは想定される動作です。
代替クラスターのフェンスを解除します。
CLI ターミナルを使用して、DRCluster リソースを編集します。<drcluster_name> は代替クラスター名です。
$ oc edit drcluster <drcluster_name>
apiVersion: ramendr.openshift.io/v1alpha1 kind: DRCluster metadata: [...] spec: ## Modify this line clusterFence: Unfenced cidrs: [...] [...]
代替クラスターの DRCluster を削除します。
$ oc delete drcluster <drcluster_name> --wait=false
注記DRCluster は後のステップまで削除されないため、--wait=false を使用します。
ハブクラスター で、存続クラスター上の保護された各アプリケーションの障害復旧を無効にします。
各アプリケーションについて、Placement を編集し、存続クラスターが選択されていることを確認します。
注記サブスクリプションベースのアプリケーションの場合、関連する Placement は、マネージドクラスターと同様に、ハブクラスター上の同じ namespace にあります。ApplicationSets ベースのアプリケーションの場合、関連する Placement は、ハブクラスター上の
openshift-gitops
namespace にあります。$ 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 [...]
保護されたアプリケーションの VolumeReplicationGroup ごとに、残りのクラスター上で次のコマンドを実行して、代替クラスターの
s3Profile
が削除されていることを確認します。$ oc get vrg -n <application_namespace> -o jsonpath='{.items[0].spec.s3Profiles}' | jq
保護されたアプリケーションの Placement リソースが、保護されたアプリケーションから削除された存続クラスターと代替クラスター s3Profile を使用するようにすべて設定された後に、すべての
DRPlacementControl
リソースを ハブクラスター から削除する必要があります。$ oc delete drpc <drpc_name> -n <namespace>
注記サブスクリプションベースのアプリケーションの場合、関連する DRPlacementControl は、ハブクラスター上のマネージドクラスターと同じ namespace にあります。ApplicationSets ベースのアプリケーションの場合、関連付けられた DRPlacementControl はハブクラスターの
openshift-gitops
namespace にあります。次の手順に進む前に、すべての DRPlacementControl リソースが削除されていることを確認してください。このコマンドは、すべての namespace を対象にするクエリーです。リソースが見つからないはずです。
$ oc get drpc -A
最後のステップでは、各アプリケーション 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" [...]
- 存続したクラスター上で保護されたアプリケーションごとに、最後のステップとサブステップで説明したプロセスを繰り返します。保護されたアプリケーションの DR の無効化が完了しました。
ハブクラスターで、次のスクリプトを実行して、存続クラスター と ハブクラスター からすべての障害復旧設定を削除します。
#!/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 から再度インストールする必要があります。openshift-operators
namespace が再び作成された後に、障害復旧メトリクスを収集するために monitoring ラベルを追加します。$ oc label namespace openshift-operators openshift.io/cluster-monitoring='true'
存続クラスターで、DR のインストール中に作成されたオブジェクトバケットが削除されていることを確認します。スクリプトによって削除されなかった場合は、オブジェクトバケットを削除します。DR に使用されるオブジェクトバケットの名前は、
odrbucket
で始まります。$ oc get obc -n openshift-storage
RHACM コンソールで、Infrastructure
Clusters ビュー に移動します。 - 代替クラスターの割り当てを解除します。
- 新しい OpenShift クラスター (リカバリークラスター) を作成し、その新しいクラスターを RHACM コンソールにインポートします。手順は、クラスターの作成 および ターゲットのマネージドクラスターをハブクラスターにインポートする を参照してください。
リカバリークラスターに OpenShift Data Foundation Operator をインストールし、それを存続クラスターと同じ外部 Ceph Storage システムに接続します。詳しい手順は、外部モードでの OpenShift Data Foundation のデプロイ を参照してください。
注記OpenShift Data Foundation のバージョンが 4.15 (またはそれ以降) であり、同じバージョンの OpenShift Data Foundation が存続クラスター上にあることを確認してください。
- ハブクラスターで、OperatorHub から ODF Multicluster Orchestrator Operator をインストールします。手順は、OpenShift Data Foundation Multicluster Orchestrator Operator のインストール の章を参照してください。
RHACM コンソールを使用して、Data Services
Data policies に移動します。 - Create DRPolicy を選択し、ポリシーに名前を付けます。
- リカバリークラスター と 存続クラスター を選択します。
- ポリシーを作成します。手順は、ハブクラスターでの障害復旧ポリシーの作成 の章を参照してください。
DRPolicy のステータスが
Validated
に変更された後にのみ、次の手順に進みます。- 代替クラスターに障害が発生する前に元々保護されていた、存続クラスター上のアプリケーションに DRPolicy を適用します。
- 存続クラスター上で新しく保護されたアプリケーションを新しい回復 (プライマリー) クラスターに再配置します。RHACM コンソールを使用して、Applications メニューに移動して再配置を実行します。