搜索

6.5. 从灾难中恢复

download PDF

作为存储管理员,您可以通过了解如何从配置了镜像功能的另一个存储集群恢复数据,为最终的硬件故障做好准备。

在示例中,主存储集群称为 site-a,辅助存储集群称为 site-b。此外,存储集群还拥有一个含有两个镜像,image1image2data 池。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 配置了单向或双向镜像。

6.5.1. 灾难恢复

在两个或多个 Red Hat Ceph Storage 集群间异步复制块数据可减少停机时间,并防止发生重大数据中心故障时出现数据丢失。这些故障具有广泛的影响,也称为 大刀片,并且可能源自对电网和危险性的影响。

客户数据需要在这些情况下受到保护。卷必须遵循一致性和效率,并在恢复点目标 (RPO) 和恢复时间目标 (RTO) 目标内进行复制。此解决方案称为广域网灾难恢复 (WAN-DR)。

在这种情况下,很难恢复主系统和数据中心。恢复的最快速方法是将应用程序故障转移到备用的 Red Hat Ceph Storage 集群(灾难恢复站点),并使集群能够运行最新可用数据副本。用于从这些故障场景中恢复的解决方案由应用程序指导:

  • 恢复点目标 (RPO):在最坏的情况下,应用程序允许的数据丢失的数量。
  • 恢复时间目标(RTO) :使用最新可用数据副本使应用程序重新上线所需的时间。

其它资源

  • 详情请参阅 Red Hat Ceph Storage 块设备指南中的镜像 Ceph 块设备一节。
  • 请参阅 Red Hat Ceph Storage 数据安全和硬化指南中的加密传输部分,以了解更多有关通过加密状态通过线路传输数据的信息。

6.5.2. 使用单向镜像从灾难中恢复

要使用单向镜像功能,可以从灾难中恢复,请使用以下步骤:它们显示在主集群终止后如何切换到次集群,以及如何恢复故障。关闭可以按照一定顺序进行,也可以不按照一定顺序进行。

重要

单向镜像支持多个次要站点。如果使用额外的次集群,请选择一个二级集群来切换到它。在故障恢复期间从同一集群进行同步。

6.5.3. 使用双向镜像从灾难中恢复

要使用双向镜像功能,可以从灾难中恢复,请使用以下步骤:它们演示了如何在主集群终止后切换到次要集群中的镜像数据,以及如何故障恢复。关闭可以按照一定顺序进行,也可以不按照一定顺序进行。

6.5.4. 有序关闭后故障转移

正常关闭后故障转移到次存储集群。

先决条件

  • 至少两个正在运行的 Red Hat Ceph Storage 集群。
  • 节点的根级别访问权限。
  • 使用单向镜像配置的池镜像或镜像镜像。

流程

  1. 停止使用主镜像的所有客户端。此步骤取决于哪些客户端使用该镜像。例如,从使用该镜像的任何 OpenStack 实例分离卷。
  2. site-a 集群中的监控节点中运行以下命令来降级位于 site-a 集群中的主镜像:

    语法

    rbd mirror image demote POOL_NAME/IMAGE_NAME

    示例

    [root@rbd-client ~]# rbd mirror image demote data/image1
    [root@rbd-client ~]# rbd mirror image demote data/image2

  3. site-b 集群中的监控节点中运行以下命令来提升位于 site-b 集群中的非主镜像:

    语法

    rbd mirror image promote POOL_NAME/IMAGE_NAME

    示例

    [root@rbd-client ~]# rbd mirror image promote data/image1
    [root@rbd-client ~]# rbd mirror image promote data/image2

  4. 经过一段时间后,检查 site-b 集群中监控节点中的镜像状态。它们应当显示 up+stopped 状态,并列为主要状态:

    [root@rbd-client ~]# rbd mirror image status data/image1
    image1:
      global_id:   08027096-d267-47f8-b52e-59de1353a034
      state:       up+stopped
      description: local image is primary
      last_update: 2019-04-17 16:04:37
    [root@rbd-client ~]# rbd mirror image status data/image2
    image2:
      global_id:   596f41bc-874b-4cd4-aefe-4929578cc834
      state:       up+stopped
      description: local image is primary
      last_update: 2019-04-17 16:04:37
  5. 恢复对镜像的访问。此步骤取决于哪些客户端使用该镜像。

其它资源

  • 请参阅 Red Hat OpenStack Platform 指南中的块存储和卷章节。

6.5.5. 非有序关闭后故障转移

非有序关闭后故障转移到次要存储集群。

先决条件

  • 至少两个正在运行的 Red Hat Ceph Storage 集群。
  • 节点的根级别访问权限。
  • 使用单向镜像配置的池镜像或镜像镜像。

流程

  1. 验证主存储集群是否已关闭。
  2. 停止使用主镜像的所有客户端。此步骤取决于哪些客户端使用该镜像。例如,从使用该镜像的任何 OpenStack 实例分离卷。
  3. site-b 存储集群中的 Ceph 监控节点提升非主镜像。使用 --force 选项,因为降级无法传播到 site-a 存储集群:

    语法

    rbd mirror image promote --force POOL_NAME/IMAGE_NAME

    示例

    [root@rbd-client ~]# rbd mirror image promote --force data/image1
    [root@rbd-client ~]# rbd mirror image promote --force data/image2

  4. 检查 site-b 存储集群中 Ceph 监控节点的镜像状态。它们应当显示 up+stopping_replay 状态。描述应该 强制提升,这意味着它处于间歇性状态。等待状态变为 up+stopped 以验证站点已成功提升。

    示例

    [root@rbd-client ~]# rbd mirror image status data/image1
    image1:
      global_id:   08027096-d267-47f8-b52e-59de1353a034
      state:       up+stopping_replay
      description: force promoted
      last_update: 2023-04-17 13:25:06
    
    [root@rbd-client ~]# rbd mirror image status data/image1
    image1:
      global_id:   08027096-d267-47f8-b52e-59de1353a034
      state:       up+stopped
      description: force promoted
      last_update: 2023-04-17 13:25:06

其它资源

  • 请参阅 Red Hat OpenStack Platform 指南中的块存储和卷章节。

6.5.6. 准备故障恢复

如果两个存储集群最初只配置为单向镜像,为了避免故障,请配置主存储集群以进行镜像,以便按照相反方向复制镜像。

在故障恢复场景中,必须先删除无法访问的现有对等点,然后才能向现有集群添加新对等点。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 客户端节点的根级别访问权限。

流程

  1. 登录到 Cephadm shell:

    示例

    [root@rbd-client ~]# cephadm shell

  2. site-a 存储集群上,运行以下命令:

    示例

    [ceph: root@rbd-client /]# ceph orch apply rbd-mirror --placement=host01

  3. 删除任何无法访问的对等点。

    重要

    此步骤必须在启动和运行的对等站点上运行。

    注意

    多个对等点仅支持单方向镜像。

    1. 获取池 UUID:

      语法

      rbd mirror pool info POOL_NAME

      示例

      [ceph: root@host01 /]# rbd mirror pool info pool_failback

    2. 删除无法访问的对等点:

      语法

      rbd mirror pool peer remove POOL_NAME PEER_UUID

      示例

      [ceph: root@host01 /]# rbd mirror pool peer remove pool_failback f055bb88-6253-4041-923d-08c4ecbe799a

  4. 创建名称与对等镜像池相同的块设备池。

    1. 要创建 rbd 池,请执行以下操作:

      语法

      ceph osd pool create POOL_NAME PG_NUM
      ceph osd pool application enable POOL_NAME rbd
      rbd pool init -p POOL_NAME

      示例

      [root@rbd-client ~]# ceph osd pool create pool1
      [root@rbd-client ~]# ceph osd pool application enable pool1 rbd
      [root@rbd-client ~]# rbd pool init -p pool1

  5. 在 Ceph 客户端节点上,引导存储集群对等点。

    1. 创建 Ceph 用户帐户,并将存储集群对等注册到池:

      语法

      rbd mirror pool peer bootstrap create --site-name LOCAL_SITE_NAME POOL_NAME > PATH_TO_BOOTSTRAP_TOKEN

      示例

      [ceph: root@rbd-client-site-a /]# rbd mirror pool peer bootstrap create --site-name site-a data > /root/bootstrap_token_site-a

      注意

      这个示例 bootstrap 命令创建 client.rbd-mirror.site-aclient.rbd-mirror-peer Ceph 用户。

    2. 将 bootstrap 令牌文件复制到 site-b 存储集群。
    3. site-b 存储集群中导入 bootstrap 令牌:

      语法

      rbd mirror pool peer bootstrap import --site-name LOCAL_SITE_NAME --direction rx-only POOL_NAME PATH_TO_BOOTSTRAP_TOKEN

      示例

      [ceph: root@rbd-client-site-b /]# rbd mirror pool peer bootstrap import --site-name site-b --direction rx-only data /root/bootstrap_token_site-a

      注意

      对于单向 RBD 镜像功能,您必须使用 --direction rx-only 参数,因为在引导对等时双向镜像是默认设置。

  6. site-a 存储集群中的监控节点中,验证 site-b 存储集群是否已成功添加为对等集群:

    示例

    [ceph: root@rbd-client /]# rbd mirror pool info -p data
    Mode: image
    Peers:
      UUID                                 NAME   CLIENT
      d2ae0594-a43b-4c67-a167-a36c646e8643 site-b client.site-b

其它资源

  • 如需更多信息,请参阅 Red Hat Ceph Storage Administration Guide 中的用户管理 一章。

6.5.6.1. 返回主存储集群失败

当以前的主存储集群恢复时,失败回主存储集群。

注意

如果您在镜像级别上调度了快照,则需要重新添加计划,因为镜像重新同步操作会更改 RBD 镜像 ID,之前的调度会变得过时。

先决条件

  • 至少两个正在运行的 Red Hat Ceph Storage 集群。
  • 节点的根级别访问权限。
  • 使用单向镜像配置的池镜像或镜像镜像。

流程

  1. 再次检查 site-b 集群中监控节点的镜像状态。它们应该显示 up-stopped 状态,描述应该会指出 local image is primary

    示例

    [root@rbd-client ~]# rbd mirror image status data/image1
    image1:
      global_id:   08027096-d267-47f8-b52e-59de1353a034
      state:       up+stopped
      description: local image is primary
      last_update: 2019-04-22 17:37:48
    [root@rbd-client ~]# rbd mirror image status data/image2
    image2:
      global_id:   08027096-d267-47f8-b52e-59de1353a034
      state:       up+stopped
      description: local image is primary
      last_update: 2019-04-22 17:38:18

  2. site-a 存储集群的 Ceph 监控节点确定镜像是否仍然是主镜像:

    语法

    rbd mirror pool info POOL_NAME/IMAGE_NAME

    示例

    [root@rbd-client ~]# rbd info data/image1
    [root@rbd-client ~]# rbd info data/image2

    在命令的输出中,查找 mirroring primary: truemirroring primary: false 以确定状态。

  3. site-a 存储集群中的 Ceph monitor 节点运行以下命令来降级列为主要镜像:

    语法

    rbd mirror image demote POOL_NAME/IMAGE_NAME

    示例

    [root@rbd-client ~]# rbd mirror image demote data/image1

  4. 如果未按顺序关闭,则仅重新同步镜像。在 site-a 存储集群中的监控节点上运行以下命令,以重新同步从 site-bsite-a 的镜像:

    语法

    rbd mirror image resync POOL_NAME/IMAGE_NAME

    示例

    [root@rbd-client ~]# rbd mirror image resync data/image1
    Flagged image for resync from primary
    [root@rbd-client ~]# rbd mirror image resync data/image2
    Flagged image for resync from primary

  5. 一段时间后,通过验证镜像是否处于 up+replaying 状态确保完成镜像重新同步。通过在 site-a 存储集群中的监控节点中运行以下命令来检查其状态:

    语法

    rbd mirror image status POOL_NAME/IMAGE_NAME

    示例

    [root@rbd-client ~]# rbd mirror image status data/image1
    [root@rbd-client ~]# rbd mirror image status data/image2

  6. site-b 存储集群中的 Ceph monitor 节点上运行以下命令来降级 site-b 存储集群中的镜像:

    语法

    rbd mirror image demote POOL_NAME/IMAGE_NAME

    示例

    [root@rbd-client ~]# rbd mirror image demote data/image1
    [root@rbd-client ~]# rbd mirror image demote data/image2

    注意

    如果有多个次要存储集群,则只需要从提升它的次要存储集群完成。

  7. site-a 存储集群中的 Ceph monitor 节点中运行以下命令来提升位于 site-a 存储集群中的以前主镜像:

    语法

    rbd mirror image promote POOL_NAME/IMAGE_NAME

    示例

    [root@rbd-client ~]# rbd mirror image promote data/image1
    [root@rbd-client ~]# rbd mirror image promote data/image2

  8. 检查 site-a 存储集群中 Ceph 监控节点的镜像状态。它们应当显示 up+stopped 状态,描述应该为 local image is primary:

    语法

    rbd mirror image status POOL_NAME/IMAGE_NAME

    示例

    [root@rbd-client ~]# rbd mirror image status data/image1
    image1:
      global_id:   08027096-d267-47f8-b52e-59de1353a034
      state:       up+stopped
      description: local image is primary
      last_update: 2019-04-22 11:14:51
    [root@rbd-client ~]# rbd mirror image status data/image2
    image2:
      global_id:   596f41bc-874b-4cd4-aefe-4929578cc834
      state:       up+stopped
      description: local image is primary
      last_update: 2019-04-22 11:14:51

6.5.7. 删除双向镜像

恢复失败后,您可以移除双向镜像功能,并禁用 Ceph 块设备镜像服务。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 节点的根级别访问权限。

流程

  1. site-b 存储集群作为对等集群从 site-a 存储集群中删除:

    示例

    [root@rbd-client ~]# rbd mirror pool peer remove data client.remote@remote --cluster local
    [root@rbd-client ~]# rbd --cluster site-a mirror pool peer remove data client.site-b@site-b -n client.site-a

  2. site-a 客户端中停止并禁用 rbd-mirror 守护进程:

    语法

    systemctl stop ceph-rbd-mirror@CLIENT_ID
    systemctl disable ceph-rbd-mirror@CLIENT_ID
    systemctl disable ceph-rbd-mirror.target

    示例

    [root@rbd-client ~]# systemctl stop ceph-rbd-mirror@site-a
    [root@rbd-client ~]# systemctl disable ceph-rbd-mirror@site-a
    [root@rbd-client ~]# systemctl disable ceph-rbd-mirror.target

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.