4.8. 为测试灾难恢复解决方案创建示例应用程序
OpenShift Data Foundation 灾难恢复 (DR) 解决方案为由 RHACM 管理的应用程序支持灾难恢复。如需了解更多详细信息,请参阅管理应用程序。
OpenShift Data Foundation DR 解决方案不支持 ApplicationSet,这是通过 ArgoCD 部署的应用程序所需的。
当应用程序在 DRPolicy 中移动应用程序以便进行故障转移或重新定位要求时,ODF DR 使用 PlacementRule 编排 RHACM 应用程序放置。以下小节详细介绍了如何对应用程序应用 DRPolicy,以及如果在集群不可用期间或之后管理应用程序放置生命周期。
没有 cluster-admin 权限的 OpenShift 用户,请参阅知识库文章 如何为应用程序用户分配必要的权限来执行灾难恢复操作。
4.8.1. 创建示例应用程序
为了测试从 Primary 受管集群到 Secondary 受管集群的 failover
和 relocate
,我们需要一个简单的应用程序。
先决条件
- 在创建用于常规消耗的应用程序时,请确保应用程序仅部署到一个集群。
-
使用名为
busybox
的示例应用作为示例。 - 当应用程序通过或重新定位失败时,确保使用全局流量管理器(GTM)或 Global Server Load Balancing (GLSB)服务配置应用程序的所有外部路由。
作为最佳实践,将属于 Red Hat Advanced Cluster Management (RHACM) 订阅的 Red Hat Advanced Cluster Management (RHACM) 订阅分组在一起,以指代单个 Placement Rule 到 DR 保护它们作为组。进一步将它们创建为一个应用程序,用于订阅的逻辑分组,以备将来 DR 操作,如故障转移和重新定位。
注意如果不相关的订阅引用与放置操作相同的放置规则,它们也会受到 DR 保护,因为 DR 工作流控制引用放置规则的所有订阅。
流程
- 在 Hub 集群中,进入到 Applications,再点 Create application。
- 选择类型 Subscription。
-
输入应用程序 Name (如
busybox
)和 Namespace (如busybox-sample
)。 -
在 Repository location for resources 部分中,选择 Repository type
Git
。 输入示例应用程序的 Git 存储库 URL、github Branch 和 Path,在其中创建资源
busybox
Pod 和 PVC。-
使用示例应用程序仓库作为
https://github.com/red-hat-storage/ocm-ramen-samples
-
选择 Branch 作为
release-4.12
。 选择以下 路径之一
-
busybox-odr
使用 RBD Regional-DR。 -
busybox-odr-cephfs
使用 CephFS Regional-DR。
-
-
使用示例应用程序仓库作为
滚动表单,直到您看到 Deploy application resources only on clusters matching specified labels,然后在 RHACM 集群列表视图中添加一个值为 Primary managed cluster 名称的标签。
点位于右上角的 Create。
在接下来的屏幕中,进入
Topology
选项卡。您可以看到应用程序拓扑上有所有的绿色对勾图标。注意要获取更多信息,请点击任何拓扑元素,拓扑视图右侧会显示一个窗口。
验证示例应用程序部署。
现在,
busybox
应用程序已部署到首选集群,现在可以验证部署。登录到您的受管集群,其中
busybox
由 RHACM 部署。$ oc get pods,pvc -n busybox-sample
输出示例:
NAME READY STATUS RESTARTS AGE pod/busybox-67bf494b9-zl5tr 1/1 Running 0 77s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/busybox-pvc Bound pvc-c732e5fe-daaf-4c4d-99dd-462e04c18412 5Gi RWO ocs-storagecluster-ceph-rbd 77s
4.8.2. 将 DRPolicy 应用到示例应用程序
先决条件
- 确保 DRPolicy 中引用的两个受管集群都可以访问。如果不能访问,则应用程序在两个集群都在线前无法受到 DR 保护。
流程
- 在 Hub 集群中,返回到 Multicluster Web 控制台,进入到 All Clusters。
- 登录到 All Clusters 下列出的所有集群。
- 进入到 Data Services,然后点 Data policies。
- 点 DRPolicy 末尾的 Actions 菜单,以查看可用操作的列表。
- 点 Apply DRPolicy。
显示 Apply DRPolicy 模式时,选择
busybox
应用程序,再输入 PVC 标签 作为appname=busybox
。注意如果选择了同一应用程序或多个应用程序下的多个放置规则,则应用程序命名空间中的所有 PVC 都会被默认保护。
- 点应用。
验证在 Hub 集群的
busybox-sample
命名空间中创建了DRPlacementControl
或DRPC
,并它的 CURRENTSTATE 显示为Deployed
。此资源用于此应用的故障切换和重定位操作。$ oc get drpc -n busybox-sample
输出示例:
NAME AGE PREFERREDCLUSTER FAILOVERCLUSTER DESIREDSTATE CURRENTSTATE busybox-placement-1-drpc 6m59s ocp4bos1 Deployed
[可选] 在主集群中验证 Rados 块设备(RBD)
volumereplication
和volumereplicationgroup
。$ oc get volumereplications.replication.storage.openshift.io
输出示例:
NAME AGE VOLUMEREPLICATIONCLASS PVCNAME DESIREDSTATE CURRENTSTATE busybox-pvc 2d16h rbd-volumereplicationclass-1625360775 busybox-pvc primary Primary
$ oc get volumereplicationgroups.ramendr.openshift.io
输出示例:
NAME DESIREDSTATE CURRENTSTATE busybox-drpc primary Primary
[可选] 验证 CephFS volsync 复制源已在主集群中成功设置,在故障转移集群中已设置了 VolSync ReplicationDestination。
$ oc get replicationsource -n busybox-sample
输出示例:
NAME SOURCE LAST SYNC DURATION NEXT SYNC busybox-pvc busybox-pvc 2022-12-20T08:46:07Z 1m7.794661104s 2022-12-20T08:50:00Z
$ oc get replicationdestination -n busybox-sample
输出示例:
NAME LAST SYNC DURATION NEXT SYNC busybox-pvc 2022-12-20T08:46:32Z 4m39.52261108s
4.8.3. 删除示例应用程序
您可以使用 RHACM 控制台删除示例 application busybox
。
在故障转移和故障恢复(重复)测试完成以及应用程序已可以从 RHACM 和受管集群中删除之前,不应执行示例应用程序的说明。
流程
- 在 RHACM 控制台上,前往 Applications。
-
搜索要删除的示例应用程序(例如
busybox
)。 - 点击您要删除的应用程序旁边的 Action Menu (⋮)。
点击 Delete application。
选择了 Delete application 时,将显示一个新屏幕,询问是否还应删除与应用相关的资源。
- 选中 Remove application 相关资源复选框,以删除 Subscription 和 PlacementRule。
- 单击 Delete。这将删除主受管集群(或应用程序所运行的任何群集)上的 busybox 应用程序。
除了使用 RHACM 控制台删除资源外,在删除
busybox
应用后,还必须立即删除DRPlacementControl
。-
登录到 Hub 集群的 OpenShift Web 控制台,再进入为
busybox-sample
项目安装的 Operators。 - 单击 OpenShift DR Hub Operator,然后单击 DRPlacementControl 选项卡。
-
点击您要删除的
busybox
应用程序 DRPlacementControl 旁边的 Action Menu (⋮)。 - 单击 Delete DRPlacementControl。
- 单击 Delete。
-
登录到 Hub 集群的 OpenShift Web 控制台,再进入为
此过程可用于使用 DRPlacementControl
资源删除任何应用。