第13章 マネージドクラスター間のアプリケーションの再配置
再配置操作はフェイルオーバーと非常に似ています。再配置はアプリケーションベースで、DRPlacementControl
を使用して再配置をトリガーします。フォールバックの主な違いは、アプリケーションが failoverCluster でスケールダウンされるため、NetworkFence を作成する必要がないことです。
手順
NetworkFence リソースを削除し、
Fencing
を無効にします。フォールバックまたは再配置アクションを成功させる前に、プライマリーマネージドクラスターの NetworkFence を削除する必要があります。
セカンダリーマネージドクラスターでこのコマンドを実行し、前のセクションで作成した NetworkFenceYAML ファイル名に合わせて <cluster1> を変更します。
$ oc delete -f network-fence-<cluster1>.yaml
出力例:
networkfence.csiaddons.openshift.io "network-fence-ocp4perf1" deleted
Fenced
になっている OpenShift Container Platform ノードを再起動します。以前のフェンスされたクラスター (この場合はプライマリーマネージドクラスター) 上の一部のアプリケーション Pod が異常な状態にあるため (例: CreateContainerError、CrashLoopBackOff)、この手順が必要です。これは、すべてのワーカー OpenShift ノードを一度に 1 つずつ再起動することで最も簡単に修正できます。
注記OpenShift Web Console ダッシュボードと 概要 ページを使用して、アプリケーションと外部ストレージの正常性を評価することもできます。OpenShiftDataFoundation ダッシュボードの詳細は、Storage
Data Foundation に移動すると表示されます。 すべての OpenShift ノードが再起動されてステータスが
Ready
になった後、プライマリーマネージドクラスターでこのコマンドを実行して、すべての Pod が正常な状態にあることを確認します。このクエリーの出力はゼロ Pod である必要があります。$ oc get pods -A | egrep -v 'Running|Completed'
出力例:
NAMESPACE NAME READY STATUS RESTARTS AGE
重要ストレージ通信が切断されたために Pod がまだ異常な状態にある場合は、続行する前にトラブルシューティングを行って解決してください。ストレージクラスターは OpenShift の外部にあるため、OpenShift アプリケーションを正常に動作させるには、サイトの停止後にストレージクラスターを適切に復元する必要もあります。
DRPolicy を
Unfenced
ステータスに変更します。ODR HUB 演算子が、プライマリーマネージドクラスターの NetworkFence が削除されたことを知るには、新しい
Unfenced
クラスターの DRPolicy を変更する必要があります。ハブクラスターの DRPolicy を編集し、<cluster1> (例:
ocp4perf1
) をManuallyFenced
からUnfenced
に変更します。$ oc edit drpolicy odr-policy
出力例:
[...] spec: drClusterSet: - clusterFence: Unfenced ## <-- Modify from ManuallyFenced to Unfenced name: ocp4perf1 region: metro s3ProfileName: s3-primary - clusterFence: Unfenced name: ocp4perf2 region: metro s3ProfileName: s3-secondary [...]
出力例:
drpolicy.ramendr.openshift.io/odr-policy edited
プライマリーマネージドクラスターのハブクラスターで、DRPolicy のステータスが
Unfenced
に変更されていることを確認します。$ oc get drpolicies.ramendr.openshift.io odr-policy -o yaml | grep -A 6 drClusters
出力例:
drClusters: ocp4perf1: status: Unfenced string: ocp4perf1 ocp4perf2: status: Unfenced string: ocp4perf2
DRPlacementControl を failback に変更します
- ハブクラスターで Installed Operators に移動し、Openshift DR Hub Operator をクリックします。
- DRPlacementControl タブをクリックします。
-
DRPC
busybox-drpc
をクリックしてから、YAML ビューをクリックします。 action を
Relocate
に変更しますDRPlacementControl modify action to Relocate
- Save をクリックします。
アプリケーション
busybox
がプライマリーマネージドクラスターで実行されているかどうかを確認します。フェイルオーバー操作の前にアプリケーションが実行していた YAML ファイルで指定されている preferredClusterocp4perf1
へのフェイルバックが行われます。$ oc get pods,pvc -n busybox-sample
出力例:
NAME READY STATUS RESTARTS AGE pod/busybox 1/1 Running 0 60s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/busybox-pvc Bound pvc-79f2a74d-6e2c-48fb-9ed9-666b74cfa1bb 5Gi RWO ocs-storagecluster-ceph-rbd 61s
busybox
がセカンダリーマネージドクラスターで実行しているかどうかを確認します。busybox アプリケーションは、このマネージドクラスターでは実行しないようにしてください。$ oc get pods,pvc -n busybox-sample
出力例:
No resources found in busybox-sample namespace.
リリースノートの 既知の問題 に記載されている既知の Metro-DR の問題に注意してください。