4.8. 使用双向镜像从灾难中恢复
要使用双向镜像功能,可以从灾难中恢复,请使用以下步骤:它们演示了如何在主集群终止后切换到次要集群中的镜像数据,以及如何故障恢复。关闭可以按照一定顺序进行,也可以不按照一定顺序进行。
在以下示例中,主集群称为 site-a 集群,辅助集群称为 site-b 集群。此外,集群同时有一个含有两个镜像、image1 和 image2 的数据池。
先决条件
- 至少两个正在运行的集群。
- 使用镜像镜像配置的池 镜像或镜像镜像。
顺序关闭后故障转移
- 停止使用主镜像的所有客户端。此步骤取决于哪些客户端使用该镜像。例如,从使用该镜像的任何 OpenStack 实例分离卷。请参阅 Red Hat OpenStack Platform 10 存储指南中的 块存储和卷 章节。
在
site-a集群中的监控节点中运行以下命令来降级位于site-a集群中的主镜像:rbd mirror image demote data/image1 rbd mirror image demote data/image2
# rbd mirror image demote data/image1 # rbd mirror image demote data/image2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
site-b集群中的监控节点中运行以下命令来提升位于site-b集群中的非主镜像:rbd mirror image promote data/image1 rbd mirror image promote data/image2
# rbd mirror image promote data/image1 # rbd mirror image promote data/image2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 经过一段时间后,检查
site-b集群中监控节点中的镜像状态。它们应当显示up+stopped状态,并列为主要状态:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 恢复对镜像的访问。此步骤取决于哪些客户端使用该镜像。
Non-Orderly Shutdown 后故障转移
- 验证主集群是否已停机。
- 停止使用主镜像的所有客户端。此步骤取决于哪些客户端使用该镜像。例如,从使用该镜像的任何 OpenStack 实例分离卷。请参阅 Red Hat OpenStack Platform 10 存储指南中的 块存储和卷 章节。
从
site-b集群中的监控节点提升非主镜像。使用--force选项,因为降级无法传播到site-a集群:rbd mirror image promote --force data/image1 rbd mirror image promote --force data/image2
# rbd mirror image promote --force data/image1 # rbd mirror image promote --force data/image2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
site-b集群中监控节点的镜像状态。它们应当显示up+stopping_replay状态,描述应显示force promoted:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
failback
当以前的主集群恢复时,无法将其恢复。
再次检查
site-b集群中监控节点的镜像状态。它们应该显示up-stopped状态,描述应该会指出local image is primary:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
site-a集群中的监控节点中确定镜像是否仍然是主镜像:rbd info data/image1 rbd info data/image2
# rbd info data/image1 # rbd info data/image2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在命令的输出中,查找
mirroring primary: true或mirroring primary: false以确定状态。从
site-a集群中的监控节点运行以下命令来降级列为主镜像:rbd mirror image demote data/image1
# rbd mirror image demote data/image1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果未按顺序关闭,则仅重新同步镜像。在
site-a集群的监控节点上运行以下命令,以重新同步从site-b到site-a的镜像:rbd mirror image resync data/image1 rbd mirror image resync data/image2
# rbd mirror image resync data/image1 Flagged image for resync from primary # rbd mirror image resync data/image2 Flagged image for resync from primaryCopy to Clipboard Copied! Toggle word wrap Toggle overflow 一段时间后,通过验证镜像是否处于
up+replaying状态确保完成镜像重新同步。通过在site-a集群中的监控节点上运行以下命令来检查其状态:rbd mirror image status data/image1 rbd mirror image status data/image2
# rbd mirror image status data/image1 # rbd mirror image status data/image2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
site-b集群的监控节点中运行以下命令来降级site-b集群中的镜像:rbd mirror image demote data/image1 rbd mirror image demote data/image2
# rbd mirror image demote data/image1 # rbd mirror image demote data/image2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果有多个次要集群,则只需要从提升它的二级集群完成。
在
site-a集群的监控节点上运行以下命令来提升位于site-a集群上的以前主镜像:rbd mirror image promote data/image1 rbd mirror image promote data/image2
# rbd mirror image promote data/image1 # rbd mirror image promote data/image2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
site-a集群中监控节点的镜像状态。它们应当显示up+stopped状态,描述应该为local image is primary:Copy to Clipboard Copied! Toggle word wrap Toggle overflow