4.9. 为测试灾难恢复解决方案创建示例应用程序
OpenShift Data Foundation 灾难恢复 (DR) 解决方案支持针对由 RHACM 管理的基于 Subscription 和 ApplicationSet 的应用程序的灾难恢复。如需了解更多详细信息,请参阅 订阅和 ApplicationSet 文档。
以下小节详细介绍了如何创建应用程序并将 DRPolicy 应用到应用程序。
没有 cluster-admin 权限的 OpenShift 用户,请参阅知识库文章 如何为应用程序用户分配必要的权限来执行灾难恢复操作。
没有 cluster-admin 权限的 OpenShift 用户无法创建基于 ApplicationSet 的应用程序。
4.9.1. 基于订阅的应用程序
4.9.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.17
。 选择以下 路径之一
-
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
输出示例:
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.9.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
输出示例:
NAME AGE VOLUMEREPLICATIONCLASS PVCNAME DESIREDSTATE CURRENTSTATE busybox-pvc 2d16h rbd-volumereplicationclass-1625360775 busybox-pvc primary Primary
$ oc get volumereplicationgroups.ramendr.openshift.io -A
输出示例:
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.9.2. 基于 ApplicationSet 的应用程序
4.9.2.1. 创建基于 ApplicationSet 的应用程序
前提条件
- 确保在所有三个集群中安装 Red Hat OpenShift GitOps operator: Hub 集群、Primary 受管集群和 Secondary 受管集群。具体步骤,请参阅在 Web 控制台中安装 Red Hat OpenShift GitOps Operator。
在 Hub 集群中,确保 Primary 和 Secondary 受管集群都注册到 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
如果没有添加容限,请参阅为 Red Hat Advanced Cluster Management 和 OpenShift GitOps 配置应用程序放置容限。
-
确保已在 Primary 和 Secondary 受管集群 上创建
ClusterRoleBinding
yaml。具体步骤请查看 RHACM 文档中的 先决条件 章节。
步骤
-
在 Hub 集群中,进入到 All Clusters
Applications 并点 Create application。 - 将应用程序类型选择为 Argo CD ApplicationSet - Pull model。
- 在 General 步骤中,输入 应用程序设置名称。
-
选择 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.17
选择以下路径之一:
-
busybox-odr
使用 RBD Regional-DR。 -
busybox-odr-cephfs
使用 CephFS Regional-DR。
-
- 输入 Remote namespace 值。(例如 busybox-sample),然后点 Next。
根据您的要求选择 Sync policy 设置,或选择默认选择,然后单击 Next。
您可以选择一个或多个选项。
- 在 Label 表达式中,添加一个标签 & lt;name >,其 值设置为受管集群名称。
- 点击 Next。
- 检查设置详情并点 Submit。
4.9.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
输出示例:
NAME AGE VOLUMEREPLICATIONCLASS PVCNAME DESIREDSTATE CURRENTSTATE busybox-pvc 2d16h rbd-volumereplicationclass-1625360775 busybox-pvc primary Primary
$ oc get volumereplicationgroups.ramendr.openshift.io -A
输出示例:
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.9.3. 删除示例应用程序
本节提供有关使用 RHACM 控制台删除示例应用程序 busybox
的说明。
删除 DR 保护应用程序时,需要访问属于 DRPolicy 的两个集群。这是为了确保清理相应 S3 存储中的所有受保护的 API 资源和资源,作为删除 DR 保护的一部分。如果对其中一个集群的访问不健康,在 hub 上删除应用程序的 DRPlacementControl
资源将保持在 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
资源删除任何应用。