第5章 障害復旧のトラブルシューティング
5.1. Regional-DR のトラブルシューティング
5.1.1. 一部のイメージで RBD ミラーリングのスケジューリングが停止する
- 問題
一部のイメージで RBD ミラーリングスケジューリングが停止する一般的な原因がいくつかあります。
アプリケーションをミラーリング用にマークした後、何らかの理由で複製されない場合は、ツールボックス Pod を使用して次のコマンドを実行し、どのイメージのスケジューリングが停止されているかを確認します。
$ rbd snap ls <poolname/imagename> –all
- 解決方法
- プライマリークラスターでマネージャーデーモンを再起動します。
- プライマリークラスター上の影響を受けるイメージのミラーリングを無効にして、すぐに再度有効にします。
5.1.2. 移転失敗
- 問題
- ピア (ターゲットクラスター) がクリーンな状態になる前に再配置が開始されると、再配置は永遠に停止します。
- 解決方法
次のコマンドを実行して、状態の ステータス を確認します。
$ oc get drpc -A -o wide
DRPC.Spec.Action
をFailover
に戻し、PeerReady
条件のステータスがTRUE
になるまで待ちます。アクションを変更するには、次のコマンドを使用します。$ oc patch drpc <drpc_name> --type json -p "[{'op': 'add', 'path': '/spec/failoverCluster', 'value': "<failoverCluster_name>"}]" -n <application_namespace> $ oc patch drpc <drpc_name> --type json -p "[{'op': 'add', 'path': '/spec/action', 'value': 'Failover'}]" -n <application_namespace>
フェイルオーバー検証
ワークロードがフェイルオーバーしたかどうかを確認するには、次のコマンドを実行して、DRPC リソースで利用可能な状態のステータスを確認します。
JSONPATH='{range @.status.conditions[*]}{@.type}={@.status};{end}' && oc get drpc busybox-drpc -n busybox-sample -o jsonpath="$JSONPATH" | grep "Available=True"
BZ リファレンス: 2056871
5.1.3. rbd-mirror
デーモンのヘルスが警告状態です
- 問題
ミラーサービス
::get_mirror_service_status
がCeph
モニターを呼び出してrbd-mirror
のサービスステータスを取得すると、WARNING が報告されるケースが多数あるようです。ネットワークの切断後、
rbd-mirror
デーモンのヘルスはwarning
状態になりますが、両方の管理対象クラスター間の接続は良好です。- 解決方法
ツールボックスで次のコマンドを実行し、
leader:false
を探します。rbd mirror pool status --verbose ocs-storagecluster-cephblockpool | grep 'leader:'
出力に次のように表示される場合:
leader: false
これは、デーモンの起動に問題があることを示しており、最も可能性の高い根本原因は、セカンダリークラスターへの確実な接続の問題である可能性があります。
回避策: Pod を削除するだけで
rbd-mirror
Pod を別のノードに移動し、別のノードで再スケジュールされていることを確認します。leader: true
または出力なし
BZ リファレンス: 2118627
5.1.4. フェイルオーバー後に statefulset
アプリケーションがスタックする
- 問題
-
アプリケーションは、フェイルオーバーまたは再配置後に
terminating
状態にあります。 - 解決方法
次のコマンドを使用して、アプリケーションの persistent volume claim (PVC) を削除します。
$ oc delete pvc <namespace/name>
BZ リファレンス: 2087782
5.1.5. フェイルオーバー後にアプリケーションが実行されていない
- 問題
- アプリケーションのフェイルオーバー後、ミラーリングされた RBD をアタッチできますが、まだ使用中のファイルシステムをマウントすることはできません。
- 解決方法
アプリケーション Pod が上記のエラーから回復できるまで、RBD ミラーデーモンのデプロイメントを
0
にスケールダウンします。$ oc scale deployment rook-ceph-rbd-mirror-a -n openshift-storage --replicas=0
復旧後、RBD ミラーデーモンのデプロイメントを
1
に戻します。$ oc scale deployment rook-ceph-rbd-mirror-a -n openshift-storage --replicas=1
BZ リファレンス: 2007376