4.8. 障害復旧ソリューションをテストするためのサンプルアプリケーションを作成する
OpenShift Data Foundation Disaster Recovery (DR) ソリューションは、RHACM によって管理されるサブスクリプションベースおよび ApplicationSet ベースのアプリケーションの障害復旧をサポートします。詳細は、サブスクリプション と ApplicationSet のドキュメントを参照してください。
次のセクションでは、アプリケーションを作成して DRPolicy をアプリケーションに適用する方法を詳しく説明します。
cluster-admin パーミッションを持たない OpenShift ユーザーは、ナレッジ記事 で、障害復旧アクションを実行するために必要なパーミッションをアプリケーションユーザーに割り当てる方法を参照してください。
クラスター管理者権限を持たない OpenShift ユーザーは、ApplicationSet ベースのアプリケーションを作成できません。
4.8.1. サブスクリプションベースのアプリケーション リンクのコピーリンクがクリップボードにコピーされました!
4.8.1.1. サンプルアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
プライマリーマネージドクラスター から セカンダリーマネージドクラスター への failover および relocate をテストするには、サンプルアプリケーションが必要です。
前提条件
- Red Hat OpenShift GitOps Operator が Hub クラスターにインストールされている。手順は、RHACM のドキュメント を参照してください。
- 一般消費用のアプリケーションを作成する場合は、アプリケーションが 1 つのクラスターのみにデプロイされるようにします。
-
busyboxというサンプルアプリケーションを例として使用します。 - アプリケーションのすべての外部ルートが、アプリケーションがフェイルオーバーまたは再配置されたときのトラフィックリダイレクト用に Global Traffic Manager (GTM) または Global Server Load Balancing (GLSB) サービスを使用して設定されていることを確認します。
ベストプラクティスとして、一緒に属する Red Hat Advanced Cluster Management (RHACM) サブスクリプションをグループ化し、それらをグループとして DR で保護する単一の配置ルールを参照します。さらに、フェイルオーバーや再配置などの将来の DR アクションのために、その配置ルールを、サブスクリプションを論理的にグループ化する単一のアプリケーションとして作成します。
注記関連のないサブスクリプションが配置アクションで同じ配置ルールを参照している場合、配置ルールを参照するすべてのサブスクリプションが DR ワークフローによって制御されるため、これらのサブスクリプションも DR で保護されます。
手順
- ハブクラスターで、Applications に移動し、Create application をクリックします。
- 種類は Subscriptionを選択します。
-
アプリケーションの Name (
busyboxなど) および Namespace (busybox-sampleなど) を入力します。 -
Repository location for resources セクションで Repository type
Gitを選択します。 サンプルアプリケーションの github Branch および Path で、Git リポジトリー URL を入力します。リソース
busyboxPod および PVC が作成されます。-
サンプルアプリケーションリポジトリーを
https://github.com/red-hat-storage/ocm-ramen-samplesとして使用します。 -
Branch を
release-4.13として選択します。 次の パス のいずれかを選択します
-
RBD Regional-DR を使用するための
busybox-odr。 -
CephFS Regional-DR を使用するための
busybox-odr-cephfs。
-
RBD Regional-DR を使用するための
-
サンプルアプリケーションリポジトリーを
Deploy application resources on clusters with all specified labels が表示されるまで、フォームを下にスクロールします。
- グローバル Cluster sets、またはお使いの環境で、正しいマネージドクラスターが含まれるクラスターを選択します。
- ラベル <name> を追加し、その値を マネージドクラスター 名に設定します。
右上隅にある 作成 をクリックします。
後続の画面で、
Topologyタブに移動します。アプリケーショントポロジーのチェックマークがすべて緑であることが確認できるはずです。注記詳細な情報を表示するには、トポロジー要素のいずれかをクリックすると、トポロジービューの右側にウィンドウが表示されます。
サンプルアプリケーションのデプロイを検証しています。
busyboxアプリケーションが優先クラスターにデプロイされたので、デプロイを検証できます。busyboxが RHACM によってデプロイされたマネージドクラスターにログオンします。oc get pods,pvc -n busybox-sample
$ oc get pods,pvc -n busybox-sampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.1.2. DRPolicy をサンプルアプリケーションに適用する リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- DRPolicy で参照されている両方の管理対象クラスターが到達可能であることを確認する。そうでない場合、両方のクラスターがオンラインになるまで、アプリケーションは DR で保護されません。
手順
- ハブクラスターで、All Clusters に移動します。
- Data Services に移動し、Data policies をクリックします。
- DRPolicy の最後にあるアクションメニューをクリックして、使用可能なアクションのリストを表示します。
- Assign DRPolicy をクリックします。
-
Apply DRPolicy モーダルが表示されたら、
busyboxアプリケーションを選択し、PVC ラベル をappname=busyboxとして入力します。 - Apply をクリックします。
DRPlacementControlまたはDRPCが ハブクラスター のbusybox-samplenamespace に作成され、CURRENTSTATE がDeployedとして表示されていることを確認します。このリソースは、このアプリケーションのフェイルオーバーと再配置の両方のアクションに使用されます。注記yaml 内の
PlacementRef、DRPolicyRefおよびPVCSelectorフィールド値の編集はサポートされていません。oc get drpc -n busybox-sample
$ oc get drpc -n busybox-sampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME AGE PREFERREDCLUSTER FAILOVERCLUSTER DESIREDSTATE CURRENTSTATE busybox-placement-1-drpc 6m59s ocp4bos1 Deployed
NAME AGE PREFERREDCLUSTER FAILOVERCLUSTER DESIREDSTATE CURRENTSTATE busybox-placement-1-drpc 6m59s ocp4bos1 DeployedCopy to Clipboard Copied! Toggle word wrap Toggle overflow [オプション] プライマリークラスターの Rados ブロックデバイス (RBD)
volumereplicationとvolumereplicationgroupを確認します。oc get volumereplications.replication.storage.openshift.io
$ oc get volumereplications.replication.storage.openshift.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME AGE VOLUMEREPLICATIONCLASS PVCNAME DESIREDSTATE CURRENTSTATE busybox-pvc 2d16h rbd-volumereplicationclass-1625360775 busybox-pvc primary Primary
NAME AGE VOLUMEREPLICATIONCLASS PVCNAME DESIREDSTATE CURRENTSTATE busybox-pvc 2d16h rbd-volumereplicationclass-1625360775 busybox-pvc primary PrimaryCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get volumereplicationgroups.ramendr.openshift.io
$ oc get volumereplicationgroups.ramendr.openshift.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME DESIREDSTATE CURRENTSTATE busybox-drpc primary Primary
NAME DESIREDSTATE CURRENTSTATE busybox-drpc primary PrimaryCopy to Clipboard Copied! Toggle word wrap Toggle overflow [オプション] CephFS volsync レプリケーションソースがプライマリークラスターで正常にセットアップされ、VolSync ReplicationDestination がフェイルオーバークラスターでセットアップされていることを確認します。
oc get replicationsource -n busybox-sample
$ oc get replicationsource -n busybox-sampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME SOURCE LAST SYNC DURATION NEXT SYNC busybox-pvc busybox-pvc 2022-12-20T08:46:07Z 1m7.794661104s 2022-12-20T08:50:00Z
NAME SOURCE LAST SYNC DURATION NEXT SYNC busybox-pvc busybox-pvc 2022-12-20T08:46:07Z 1m7.794661104s 2022-12-20T08:50:00ZCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get replicationdestination -n busybox-sample
$ oc get replicationdestination -n busybox-sampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME LAST SYNC DURATION NEXT SYNC busybox-pvc 2022-12-20T08:46:32Z 4m39.52261108s
NAME LAST SYNC DURATION NEXT SYNC busybox-pvc 2022-12-20T08:46:32Z 4m39.52261108sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.2. ApplicationSet ベースのアプリケーション リンクのコピーリンクがクリップボードにコピーされました!
4.8.2.1. ApplicationSet ベースのアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- Red Hat OpenShift GitOps Operator が Hub クラスターにインストールされている。手順は、RHACM のドキュメント を参照してください。
プライマリーとセカンダリーの両方のマネージドクラスターが GitOps に登録されていることを確認します。登録手順は、GitOps へのマネージドクラスターの登録 を参照してください。次に、
GitOpsClusterリソースによる両方のマネージドクラスターの登録に使用される Placement に、クラスターが使用不可になった場合に対処するための toleration があるかどうかを確認します。oc get placement <placement-name> -n openshift-gitops -o yamlコマンドを使用して、次の toleration が Placement に追加されているかどうかを確認できます。tolerations: - key: cluster.open-cluster-management.io/unreachable operator: Exists - key: cluster.open-cluster-management.io/unavailable operator: Existstolerations: - key: cluster.open-cluster-management.io/unreachable operator: Exists - key: cluster.open-cluster-management.io/unavailable operator: ExistsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 許容が追加されない場合は、 Red Hat Advanced Cluster Management および OpenShift GitOps のアプリケーション配置許容範囲の設定 を参照してください。
手順
-
ハブクラスターで、All Clusters
Applications に移動し、Create application をクリックします。 - タイプとして Application set を選択します。
- 一般ステップ 1 で、Application set name を入力します。
-
Argo サーバー
openshift-gitopsを選択し、Requeue time を180秒に設定します。 - Next をクリックします。
-
Repository location for resources セクションで Repository type
Gitを選択します。 サンプルアプリケーションの github Branch および Path で、Git リポジトリー URL を入力します。リソース busybox Pod および PVC が作成されます。
- サンプルアプリケーションリポジトリーを https://github.com/red-hat-storage/ocm-ramen-samples として使用します。
-
Revision を
release-4.13として選択します。 次のパスのいずれかを選択します
-
RBD Regional-DR を使用するための
busybox-odr。 -
CephFS Regional-DR を使用するための
busybox-odr-cephfs。
-
RBD Regional-DR を使用するための
- Remote namespace の値 (例: busybox-sample) を入力し、Next をクリックします。
Sync policy を選択し、Next をクリックします。
1 つ以上のオプションを選択できます。
- ラベル <name> を追加し、その値を マネージドクラスター 名に設定します。
- Next をクリックします。
- 設定の詳細を確認し、Submit をクリックします。
4.8.2.2. ApplicationSet ベースのサンプルアプリケーションへの DRPolicy の適用 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- DRPolicy で参照されている両方の管理対象クラスターが到達可能であることを確認する。そうでない場合、両方のクラスターがオンラインになるまで、アプリケーションは DR で保護されません。
手順
- ハブクラスターで、All Clusters に移動します。
- Data Services に移動し、Data policies をクリックします。
- DRPolicy の最後にあるアクションメニューをクリックして、使用可能なアクションのリストを表示します。
- Manage policy for Application sets をクリックします。
-
PVC label を
appname=busyboxとして入力します。 -
Save changes をクリックします。アプリケーションには
protectedというタグが付けられています。 - Apply をクリックします。
DRPlacementControlまたはDRPCが ハブクラスター のbusybox-samplenamespace に作成され、CURRENTSTATE がDeployedとして表示されていることを確認します。このリソースは、このアプリケーションのフェイルオーバーと再配置の両方のアクションに使用されます。注記yaml 内の
PlacementRef、DRPolicyRefおよびPVCSelectorフィールド値の編集はサポートされていません。oc get drpc -n busybox-sample
$ oc get drpc -n busybox-sampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME AGE PREFERREDCLUSTER FAILOVERCLUSTER DESIREDSTATE CURRENTSTATE busybox-placement-1-drpc 6m59s ocp4bos1 Deployed
NAME AGE PREFERREDCLUSTER FAILOVERCLUSTER DESIREDSTATE CURRENTSTATE busybox-placement-1-drpc 6m59s ocp4bos1 DeployedCopy to Clipboard Copied! Toggle word wrap Toggle overflow [オプション] プライマリークラスターの Rados ブロックデバイス (RBD)
volumereplicationとvolumereplicationgroupを確認します。oc get volumereplications.replication.storage.openshift.io
$ oc get volumereplications.replication.storage.openshift.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME AGE VOLUMEREPLICATIONCLASS PVCNAME DESIREDSTATE CURRENTSTATE busybox-pvc 2d16h rbd-volumereplicationclass-1625360775 busybox-pvc primary Primary
NAME AGE VOLUMEREPLICATIONCLASS PVCNAME DESIREDSTATE CURRENTSTATE busybox-pvc 2d16h rbd-volumereplicationclass-1625360775 busybox-pvc primary PrimaryCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get volumereplicationgroups.ramendr.openshift.io
$ oc get volumereplicationgroups.ramendr.openshift.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME DESIREDSTATE CURRENTSTATE busybox-drpc primary Primary
NAME DESIREDSTATE CURRENTSTATE busybox-drpc primary PrimaryCopy to Clipboard Copied! Toggle word wrap Toggle overflow [オプション] CephFS volsync レプリケーションソースがプライマリークラスターで正常にセットアップされ、VolSync ReplicationDestination がフェイルオーバークラスターでセットアップされていることを確認します。
oc get replicationsource -n busybox-sample
$ oc get replicationsource -n busybox-sampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME SOURCE LAST SYNC DURATION NEXT SYNC busybox-pvc busybox-pvc 2022-12-20T08:46:07Z 1m7.794661104s 2022-12-20T08:50:00Z
NAME SOURCE LAST SYNC DURATION NEXT SYNC busybox-pvc busybox-pvc 2022-12-20T08:46:07Z 1m7.794661104s 2022-12-20T08:50:00ZCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get replicationdestination -n busybox-sample
$ oc get replicationdestination -n busybox-sampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME LAST SYNC DURATION NEXT SYNC busybox-pvc 2022-12-20T08:46:32Z 4m39.52261108s
NAME LAST SYNC DURATION NEXT SYNC busybox-pvc 2022-12-20T08:46:32Z 4m39.52261108sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.3. サンプルアプリケーションの削除 リンクのコピーリンクがクリップボードにコピーされました!
RHACM コンソールを使用してサンプルアプリケーション busybox を削除できます。
サンプルアプリケーションを削除する手順は、フェイルオーバーと再配置のテストが完了し、アプリケーションを RHACM とマネージドクラスターから削除する準備ができるまで実行しないでください。
手順
- RHACM コンソールで、Applications に移動します。
-
削除するサンプルアプリケーションを検索します (例:
busybox)。 - 削除するアプリケーションの横にある Action メニュー (⋮) をクリックします。
Delete application をクリックします。
Delete application を選択すると、アプリケーション関連のリソースも削除すべきかどうかを求める新規画面が表示されます。
- Remove application related resources チェックボックスを選択して、Subscription および PlacementRule を削除します。
- Delete をクリックします。これにより、Primary マネージドクラスター (またはアプリケーションが実行しているクラスター) の busybox アプリケーションが削除されます。
RHACM コンソールを使用して削除されたリソースのほかに、
busyboxアプリケーションの削除後にDRPlacementControlも削除する必要があります。-
ハブクラスターの OpenShift Web コンソールにログインし、プロジェクト
busybox-sampleの Installed Operators に移動します。 - OpenShift DR Hub Operator をクリックした後、DRPlacementControl タブをクリックします。
-
削除する
busyboxアプリケーション DRPlacementControl の横にあるアクションメニュー (⋮) をクリックします。 - Delete DRPlacementControl をクリックします。
- Delete をクリックします。
-
ハブクラスターの OpenShift Web コンソールにログインし、プロジェクト
このプロセスを使用して、DRPlacementControl リソースでアプリケーションを削除できます。