4.8. 为测试灾难恢复解决方案创建示例应用程序
OpenShift Data Foundation 灾难恢复 (DR) 解决方案支持针对由 RHACM 管理的基于 Subscription 和 ApplicationSet 的应用程序的灾难恢复。如需了解更多详细信息,请参阅 订阅和 ApplicationSet 文档。
以下小节详细介绍了如何创建应用程序并将 DRPolicy 应用到应用程序。
没有 cluster-admin 权限的 OpenShift 用户,请参阅知识库文章 如何为应用程序用户分配必要的权限来执行灾难恢复操作。
没有 cluster-admin 权限的 OpenShift 用户无法创建基于 ApplicationSet 的应用程序。
4.8.1. 基于订阅的应用程序 复制链接链接已复制到粘贴板!
4.8.1.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.15
。 选择以下 路径之一 :
-
busybox-odr
使用 RBD Regional-DR。 -
busybox-odr-cephfs
使用 CephFS Regional-DR。
-
-
使用示例应用程序存储库作为
向下滚动,直到您看到 Deploy application resources on cluster with all specified labels。
- 选择全局 Cluster set 或包含环境正确受管集群的全局集群。
- 添加一个 <name> 标签,将其值设置为受管集群的名称。
点位于右上角的 Create。
在接下来的屏幕中,进入
Topology
选项卡。您可以看到应用程序拓扑上有所有的绿色对勾图标。注意要获取更多信息,请点击任何拓扑元素,拓扑视图右侧会显示一个窗口。
验证示例应用程序部署。
现在,
busybox
应用程序已部署到首选集群,现在可以验证部署。登录到您的受管集群,其中
busybox
由 RHACM 部署。oc get pods,pvc -n busybox-sample
$ oc get pods,pvc -n busybox-sample
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.1.2. 将数据策略应用到示例应用程序 复制链接链接已复制到粘贴板!
先决条件
- 确保 Data 策略中引用的两个受管集群都可以访问。如果没有,在两个集群都在线前,应用程序不会受到灾难恢复的影响。
流程
-
在 Hub 集群中,进入到 All Clusters
Applications。 - 点应用程序末尾的 Actions 菜单,以查看可用操作的列表。
-
点 Manage data policy
Assign data policy。 - 选择 Policy,再单击 Next。
选择 Application resource,然后使用 PVC 标签选择器 为所选应用程序资源选择
PVC 标签
。注意您可以为所选应用程序资源选择多个 PVC 标签。您还可以使用 Add application resource 选项添加多个资源。
- 添加所有应用程序资源后,点 Next。
-
检查
Policy 配置详情
并点 Assign。新分配的 Data 策略显示在Manage data policy
modal 列表视图中。 验证您可以在 Applications 页面中查看分配的策略详情。
- 在 Applications 页面上,进入到 Data policy 列,再单击 策略链接 以展开视图。
- 验证您可以看到分配的策略数量以及故障转移和重新定位状态。
- 单击 View more details,以查看与应用程序一起使用的策略持续活动的状态。
可选:在主集群中验证 RADOS 块设备(RBD)
volumereplication
和volumereplicationgroup
。oc get volumereplications.replication.storage.openshift.io -A
$ oc get volumereplications.replication.storage.openshift.io -A
Copy 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 Primary
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get volumereplicationgroups.ramendr.openshift.io -A
$ oc get volumereplicationgroups.ramendr.openshift.io -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME DESIREDSTATE CURRENTSTATE busybox-drpc primary Primary
NAME DESIREDSTATE CURRENTSTATE busybox-drpc primary Primary
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:验证 CephFS volsync 复制源已在主集群中成功设置,在故障切换集群中设置了 VolSync ReplicationDestination。
oc get replicationsource -n busybox-sample
$ oc get replicationsource -n busybox-sample
Copy 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:00Z
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get replicationdestination -n busybox-sample
$ oc get replicationdestination -n busybox-sample
Copy 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.52261108s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.2. 基于 ApplicationSet 的应用程序 复制链接链接已复制到粘贴板!
4.8.2.1. 创建基于 ApplicationSet 的应用程序 复制链接链接已复制到粘贴板!
前提条件
- 确保 Hub 集群上安装了 Red Hat OpenShift GitOps Operator。具体步骤请查看 RHACM 文档。
确保主和从受管集群都注册到 GitOps。有关注册说明,请参阅 将受管集群注册到 GitOps。然后,检查
GitOpsCluster
资源使用的放置是否用于注册两个受管集群,具有处理集群的容限。您可以使用oc get placement <placement-name> -n openshift-gitops -o yaml
命令来验证以下容限是否已添加到放置中。tolerations: - key: cluster.open-cluster-management.io/unreachable operator: Exists - key: cluster.open-cluster-management.io/unavailable operator: Exists
tolerations: - key: cluster.open-cluster-management.io/unreachable operator: Exists - key: cluster.open-cluster-management.io/unavailable operator: Exists
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有添加容限,请参阅为 Red Hat Advanced Cluster Management 和 OpenShift GitOps 配置应用程序放置容限。
流程
-
在 Hub 集群中,进入到 All Clusters
Applications 并点 Create application。 - 选择应用程序类型作为 Argo CD ApplicationSet - Push model
- 在常规步骤 1 中,输入您的应用程序集名称。
-
选择 Argo server
openshift-gitops
和 Requeue time 为180
秒。 - 点击 Next。
-
在 Repository location for resources 部分中,选择 Repository type
Git
。 输入示例应用程序的 Git 存储库 URL、github Branch 和 Path,在其中创建资源 busybox Pod 和 PVC。
- 使用示例应用程序存储库作为 https://github.com/red-hat-storage/ocm-ramen-samples
-
选择 Revision 作为
release-4.15
选择以下路径之一:
-
busybox-odr
使用 RBD Regional-DR。 -
busybox-odr-cephfs
使用 CephFS Regional-DR。
-
- 输入 Remote namespace 值。(例如 busybox-sample),然后点 Next。
选择 Sync policy 设置并点 Next。
您可以选择一个或多个选项。
- 添加一个 <name> 标签,将其值设置为受管集群的名称。
- 点击 Next。
- 检查设置详情并点 Submit。
4.8.2.2. 将 Data policy 应用到基于 ApplicationSet 的应用程序示例 复制链接链接已复制到粘贴板!
先决条件
- 确保 Data 策略中引用的两个受管集群都可以访问。如果没有,在两个集群都在线前,应用程序不会受到灾难恢复的影响。
流程
-
在 Hub 集群中,进入到 All Clusters
Applications。 - 点应用程序末尾的 Actions 菜单,以查看可用操作的列表。
-
点 Manage data policy
Assign data policy。 - 选择 Policy,再单击 Next。
选择 Application resource,然后使用 PVC 标签选择器 为所选应用程序资源选择
PVC 标签
。注意您可以为所选应用程序资源选择多个 PVC 标签。
- 添加所有应用程序资源后,点 Next。
-
检查
Policy 配置详情
并点 Assign。新分配的 Data 策略显示在Manage data policy
modal 列表视图中。 验证您可以在 Applications 页面中查看分配的策略详情。
- 在 Applications 页面上,进入到 Data policy 列,再单击 策略链接 以展开视图。
- 验证您可以看到分配的策略数量以及故障转移和重新定位状态。
可选:在主集群中验证 Rados 块设备(RBD)
volumereplication
和volumereplicationgroup
。oc get volumereplications.replication.storage.openshift.io -A
$ oc get volumereplications.replication.storage.openshift.io -A
Copy 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 Primary
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get volumereplicationgroups.ramendr.openshift.io -A
$ oc get volumereplicationgroups.ramendr.openshift.io -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME DESIREDSTATE CURRENTSTATE busybox-drpc primary Primary
NAME DESIREDSTATE CURRENTSTATE busybox-drpc primary Primary
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [可选] 验证 CephFS volsync 复制源已在主集群中成功设置,在故障转移集群中已设置了 VolSync ReplicationDestination。
oc get replicationsource -n busybox-sample
$ oc get replicationsource -n busybox-sample
Copy 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:00Z
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get replicationdestination -n busybox-sample
$ oc get replicationdestination -n busybox-sample
Copy 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.52261108s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.3. 删除示例应用程序 复制链接链接已复制到粘贴板!
本节提供了使用 RHACM 控制台删除示例应用程序 busybox
的说明。
当删除 DR 保护的应用程序时,需要可以访问属于 DRPolicy 的这两个集群。这是为了确保根据删除 DR 保护的一部分清理相应 S3 存储中的所有受保护的 API 资源和资源。如果访问其中一个集群不是健康,删除应用程序的 DRPlacementControl
资源(在 hub 上)将处于 Deleting 状态。
先决条件
- 这些说明在故障转移和重新定位测试完成前不应执行示例应用程序,且应用程序已准备好从 RHACM 和受管集群中删除。
流程
- 在 RHACM 控制台上,前往 Applications。
-
搜索要删除的示例应用程序(例如
busybox
)。 - 点击您要删除的应用程序旁边的 Action Menu (⋮)。
点击 Delete application。
选择了 Delete application 时,将显示一个新屏幕,询问是否还应删除与应用相关的资源。
- 选中 Remove application 相关资源复选框,以删除 Subscription 和 PlacementRule。
- 单击 Delete。这将删除主受管集群(或应用程序所运行的任何群集)上的 busybox 应用程序。
除了使用 RHACM 控制台删除的资源外,如果删除
busybox
应用后没有自动删除,则删除DRPlacementControl
。登录到 Hub 集群的 OpenShift Web 控制台,再进入到 项目
busybox-sample
的 Installed Operators。对于 ApplicationSet 应用程序,将项目选为
openshift-gitops
。- 单击 OpenShift DR Hub Operator,然后单击 DRPlacementControl 选项卡。
-
点击您要删除的
busybox
应用程序 DRPlacementControl 旁边的 Action Menu (⋮)。 - 单击 Delete DRPlacementControl。
- 单击 Delete。
此过程可用于使用 DRPlacementControl
资源删除任何应用。