3.11. 创建用于测试灾难恢复解决方案的示例应用程序


OpenShift Data Foundation 灾难恢复(DR)解决方案支持由 RHACM 管理的基于 Subscription 和 ApplicationSet 的应用程序的灾难恢复。如需了解更多详细信息,请参阅 订阅和 ApplicationSet 文档。

以下小节详细介绍了如何创建应用程序并将 DRPolicy 应用到应用程序。

3.11.1. 基于订阅的应用程序

3.11.1.1. 创建基于订阅的示例应用程序

为了测试从主 受管集群到 二级受管集群的 故障切换 我们需要一个示例应用程序。

先决条件

  • 在创建用于常规消耗的应用程序时,请确保应用程序仅部署到一个集群。
  • 使用名为 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 工作流控制引用放置规则的所有订阅。

流程

  1. 在 Hub 集群中,进入到 Applications,再点 Create application
  2. 选择类型 Subscription
  3. 输入应用程序 Name (如 busybox)和 Namespace (如 busybox-sample)。
  4. 在 Repository location for resources 部分中,选择 Repository type Git
  5. 输入示例应用程序的 Git 存储库 URL、github BranchPath,在其中创建资源 busybox Pod 和 PVC。

    使用示例应用程序存储库作为 https://github.com/red-hat-storage/ocm-ramen-samples,其中 Branchrelease-4.17Pathbusybox-odr-metro

  6. 以表单向下滚动,直到您看到 具有所有指定标签的集群中 Deploy application resources

    • 选择全局 Cluster set 或包含适用于您的环境的正确受管集群的集群。
    • 添加一个标签 & lt;name >,其 值设置为受管集群名称
  7. 点位于右上角的 Create

    在下一屏幕上,进入 Topology 选项卡。您应该会看到应用程序拓扑上存在所有绿色的复选标记。

    注意

    要获得更多信息,请点击任何拓扑元素,拓扑视图右侧会显示一个窗口。

  8. 验证示例应用程序部署。

    现在 busybox 应用程序已部署到您首选的集群,现在可以验证部署。

    登录到您的受管集群,其中 busybox 由 RHACM 部署。

    $ oc get pods,pvc -n busybox-sample
    Copy to Clipboard Toggle word wrap

    输出示例:

    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
    Copy to Clipboard Toggle word wrap

3.11.1.2. 将数据策略应用到示例应用程序

先决条件

  • 确保 Data 策略中引用的两个受管集群都可访问。如果没有,在两个集群都在线前,应用程序不会受到灾难恢复的保护。

流程

  1. 在 Hub 集群中,进入到 All Clusters Applications
  2. 单击应用程序末尾的 Actions 菜单,以查看可用操作的列表。
  3. Manage data policy Assign data policy
  4. 选择 Policy,再单击 Next
  5. 选择 Application 资源,然后使用 PVC 标签选择器 为所选应用程序资源选择 PVC 标签

    注意

    您可以为所选应用程序资源选择多个 PVC 标签。您还可以使用 Add application resource 选项来添加多个资源。

  6. 添加所有应用程序资源后,点 Next
  7. 检查 策略配置详情,然后单击 Assign。新分配的 Data 策略会显示在 Manage data policy modal 列表视图中。
  8. 验证您可以在 Applications 页面中查看分配的策略详情。

    1. 在 Applications 页面上,导航到 Data policy 列,再单击 策略链接 以展开视图。
    2. 验证您可以看到分配的策略数量以及故障转移和重新定位状态。
    3. View more details 查看与应用程序一起使用的策略的状态。
  9. 将 DRPolicy 应用到应用程序后,确认 drpc yaml 输出中是否将 ClusterDataProtected 设置为 True

3.11.2. 基于 ApplicationSet 的应用程序

3.11.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
    Copy to Clipboard Toggle word wrap

    如果没有添加容限,请参阅为 Red Hat Advanced Cluster Management 和 OpenShift GitOps 配置应用程序放置容限

  • 确保已在 PrimarySecondary 受管集群 上创建 ClusterRoleBinding yaml。具体步骤请查看 RHACM 文档中的 先决条件 章节

流程

  1. 在 Hub 集群中,进入到 All Clusters Applications 并点 Create application
  2. 将应用程序类型选择为 Argo CD ApplicationSet - Pull model
  3. General 步骤中,输入 应用程序设置名称
  4. 选择 Argo 服务器 openshift-gitopsRequeue time 作为 180 秒。
  5. 单击下一步
  6. 在 Repository location for resources 部分中,选择 Repository type Git
  7. 输入示例应用程序的 Git 存储库 URL、github Branch 和 Path,在其中创建资源 busybox Pod 和 PVC。

    1. 使用示例应用程序存储库作为 https://github.com/red-hat-storage/ocm-ramen-samples
    2. 选择 Revision 作为 release-4.17
    3. 选择 Path 作为 busybox-odr-metro
  8. 输入 Remote namespace value. (example, busybox-sample),然后单击 Next
  9. 根据您的要求选择 Sync policy 设置,或选择默认选择,然后单击 Next

    您可以选择一个或多个选项。

  10. 在 Label 表达式中,添加一个标签 & lt;name >,其 值设置为受管集群名称
  11. 单击下一步
  12. 检查设置详情,然后点 Submit

先决条件

  • 确保 Data 策略中引用的两个受管集群都可访问。如果没有,在两个集群都在线前,应用程序不会受到灾难恢复的保护。

流程

  1. 在 Hub 集群中,进入到 All Clusters Applications
  2. 单击应用程序末尾的 Actions 菜单,以查看可用操作的列表。
  3. Manage data policy Assign data policy
  4. 选择 Policy,再单击 Next
  5. 选择 Application 资源,然后使用 PVC 标签选择器 为所选应用程序资源选择 PVC 标签

    注意

    您可以为所选应用程序资源选择多个 PVC 标签。

  6. 添加所有应用程序资源后,点 Next
  7. 检查 策略配置详情,然后单击 Assign。新分配的 Data 策略会显示在 Manage data policy modal 列表视图中。
  8. 验证您可以在 Applications 页面中查看分配的策略详情。

    1. 在 Applications 页面上,导航到 Data policy 列,再单击 策略链接 以展开视图。
    2. 验证您可以看到分配的策略数量以及故障转移和重新定位状态。
  9. 将 DRPolicy 应用到应用程序后,确认 drpc yaml 输出中是否将 ClusterDataProtected 设置为 True

3.11.3. 删除示例应用程序

本节提供有关使用 RHACM 控制台删除示例应用程序 busybox 的说明。

重要

删除 DR 保护应用程序时,需要访问属于 DRPolicy 的两个集群。这是为了确保清理相应 S3 存储中的所有受保护的 API 资源和资源,作为删除 DR 保护的一部分。如果对其中一个集群的访问不健康,在 hub 上删除应用程序的 DRPlacementControl 资源将保持在 Deleting 状态。

先决条件

  • 在故障转移和重新定位测试完成并且应用程序已准备好从 RHACM 和受管集群中删除之前,不应执行这些示例应用程序。

流程

  1. 在 RHACM 控制台上,导航到 Applications
  2. 搜索要删除的示例应用程序(例如 busybox)。
  3. 点击您要删除的应用程序旁边的 Action Menu (swig)
  4. 单击 Delete application

    选择了 Delete application 时,将显示一个新屏幕,询问是否还应删除与应用程序相关的资源。

  5. 选中 Remove application 相关资源 复选框,以删除 Subscription 和 PlacementRule。
  6. 单击 删除。这将删除主受管集群(或应用程序运行的任何集群)上的 busybox 应用程序。
  7. 除了使用 RHACM 控制台删除资源外,在删除 busybox 应用后没有自动删除,请删除 DRPlacementControl

    1. 登录 Hub 集群的 OpenShift Web 控制台,再导航到 busybox-sample 项目的 Installed Operators。

      对于 ApplicationSet 应用程序,将项目选择为 openshift-gitops

    2. 单击 OpenShift DR Hub Operator,然后单击 DRPlacementControl 选项卡。
    3. 点您要删除的 busybox 应用程序 DRPlacementControl 旁边的 Action Menu (swig)
    4. 单击 Delete DRPlacementControl
    5. 单击 删除
注意

此过程可用于使用 DRPlacementControl 资源删除任何应用。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat