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 受管集群failoverrelocate,我们需要一个简单的应用程序。

先决条件

  • 在创建用于常规消耗的应用程序时,请确保应用程序仅部署到一个集群。
  • 使用名为 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。

  6. 滚动表单,直到您看到 Deploy application resources only on clusters matching specified labels,然后在 RHACM 集群列表视图中添加一个值为 Primary managed cluster 名称的标签。

    ACM Select cluster for deployment
  7. 点位于右上角的 Create

    在接下来的屏幕中,进入 Topology 选项卡。您可以看到应用程序拓扑上有所有的绿色对勾图标。

    注意

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

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

    现在,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 保护。

流程

  1. 在 Hub 集群中,返回到 Multicluster Web 控制台,进入到 All Clusters
  2. 登录到 All Clusters 下列出的所有集群。
  3. 进入到 Data Services,然后点 Data policies
  4. 点 DRPolicy 末尾的 Actions 菜单,以查看可用操作的列表。
  5. Apply DRPolicy
  6. 显示 Apply DRPolicy 模式时,选择 busybox 应用程序,再输入 PVC 标签 作为 appname=busybox

    注意

    如果选择了同一应用程序或多个应用程序下的多个放置规则,则应用程序命名空间中的所有 PVC 都会被默认保护。

  7. 应用
  8. 验证在 Hub 集群busybox-sample 命名空间中创建了 DRPlacementControlDRPC,并它的 CURRENTSTATE 显示为 Deployed。此资源用于此应用的故障切换和重定位操作。

    $ oc get drpc -n busybox-sample

    输出示例:

    NAME                       AGE     PREFERREDCLUSTER   FAILOVERCLUSTER   DESIREDSTATE   CURRENTSTATE
    busybox-placement-1-drpc   6m59s   ocp4bos1                                            Deployed
  9. [可选] 在主集群中验证 Rados 块设备(RBD) volumereplicationvolumereplicationgroup

    $ 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
  10. [可选] 验证 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 和受管集群中删除之前,不应执行示例应用程序的说明。

流程

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

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

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

    1. 登录到 Hub 集群的 OpenShift Web 控制台,再进入为 busybox-sample 项目安装的 Operators。
    2. 单击 OpenShift DR Hub Operator,然后单击 DRPlacementControl 选项卡。
    3. 点击您要删除的 busybox 应用程序 DRPlacementControl 旁边的 Action Menu (⋮)
    4. 单击 Delete DRPlacementControl
    5. 单击 Delete
注意

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.