5.4. 使用并置 Ceph 监控器恢复 undercloud 和 control plane 节点
如果在更新或升级过程中发生错误,您可以使用 ReaR 备份将 undercloud 或 overcloud control plane 节点或两者恢复到之前的状态。
前提条件
- 安装和配置 ReaR。如需更多信息,请参阅 安装和配置 ReaR。
- 准备备份节点。如需更多信息,请参阅准备 备份节点。
- 执行备份过程。如需更多信息,请参阅 执行备份过程。
流程
在备份节点上,导出 NFS 目录以托管 Ceph 备份。将
<IP_ADDRESS/24> 替换为网络的 IP 地址和子网掩码:[root@backup ~]# cat >> /etc/exports << EOF /ceph_backups <IP_ADDRESS/24>(rw,sync,no_root_squash,no_subtree_check) EOF在 undercloud 节点上,提供 undercloud 凭证并运行以下脚本:
# source stackrc#! /bin/bash for i in `openstack server list -c Name -c Networks -f value | grep controller | awk -F'=' '{print $2}' | awk -F' ' '{print $1}'`; do ssh -q heat-admin@$i 'sudo systemctl stop ceph-mon@$(hostname -s) ceph-mgr@$(hostname -s)'; done要验证
ceph-mgr@controller.service容器是否已停止,请输入以下命令:[heat-admin@overcloud-controller-x ~]# sudo docker ps | grep ceph在 undercloud 节点上,提供 undercloud 凭证并运行以下脚本:
# source stackrc#! /bin/bash for i in `openstack server list -c Name -c Networks -f value | grep controller | awk -F'=' '{print $2}' | awk -F' ' '{print $1}'`; do ssh -q heat-admin@$i 'sudo mkdir /ceph_backups'; done #! /bin/bash for i in `openstack server list -c Name -c Networks -f value | grep controller | awk -F'=' '{print $2}' | awk -F' ' '{print $1}'`; do ssh -q heat-admin@$i 'sudo mount -t nfs <BACKUP_NODE_IP_ADDRESS>:/ceph_backups /ceph_backups'; done #! /bin/bash for i in `openstack server list -c Name -c Networks -f value | grep controller | awk -F'=' '{print $2}' | awk -F' ' '{print $1}'`; do ssh -q heat-admin@$i 'sudo mkdir /ceph_backups/$(hostname -s)'; done #! /bin/bash for i in `openstack server list -c Name -c Networks -f value | grep controller | awk -F'=' '{print $2}' | awk -F' ' '{print $1}'`; do ssh -q heat-admin@$i 'sudo tar -zcv --xattrs-include=*.* --xattrs --xattrs-include=security.capability --xattrs-include=security.selinux --acls -f /ceph_backups/$(hostname -s)/$(hostname -s).tar.gz /var/lib/ceph'; done在您要恢复的节点上完成以下任务:
- 在继续操作前关闭该节点。
-
使用您在备份过程中创建的 ReaR 备份文件恢复节点。该文件位于备份节点的
/ceph_backups目录中。 -
在
Relax-and-Recoverboot 菜单中,选择Recover <CONTROL_PLANE_NODE>,其中 <CONTROL_PLANE_NODE> 是 control plane 节点的名称。 在提示符处输入以下命令:
RESCUE <CONTROL_PLANE_NODE> :~ # rear recover镜像恢复过程完成后,控制台会显示以下信息:
Finished recovering your system Exiting rear recover Running exit tasks对于您要恢复的节点,将
/ceph_backups目录中的 Ceph 备份复制到/var/lib/ceph目录中:确定系统挂载点:
RESCUE <CONTROL_PLANE_NODE>:~# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 16G 0 16G 0% /dev tmpfs 16G 0 16G 0% /dev/shm tmpfs 16G 8.4M 16G 1% /run tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/vda2 30G 13G 18G 41% /mnt/local/dev/vda2文件系统被挂载到/mnt/local上。创建临时目录:
RESCUE <CONTROL_PLANE_NODE>:~ # mkdir /tmp/restore RESCUE <CONTROL_PLANE_NODE>:~ # mount -v -t nfs -o rw,noatime <BACKUP_NODE_IP_ADDRESS>:/ceph_backups /tmp/restore/在 control plane 节点上,删除现有
/var/lib/ceph目录:RESCUE <CONTROL_PLANE_NODE>:~ # rm -rf /mnt/local/var/lib/ceph/*恢复前面的 Ceph 映射。将
<CONTROL_PLANE_NODE> 替换为 control plane 节点的名称:RESCUE <CONTROL_PLANE_NODE>:~ # tar -xvC /mnt/local/ -f /tmp/restore/<CONTROL_PLANE_NODE>/<CONTROL_PLANE_NODE>.tar.gz --xattrs --xattrs-include='*.*' var/lib/ceph验证文件是否已恢复:
RESCUE <CONTROL_PLANE_NODE>:~ # ls -l total 0 drwxr-xr-x 2 root 107 26 Jun 18 18:52 bootstrap-mds drwxr-xr-x 2 root 107 26 Jun 18 18:52 bootstrap-osd drwxr-xr-x 2 root 107 26 Jun 18 18:52 bootstrap-rbd drwxr-xr-x 2 root 107 26 Jun 18 18:52 bootstrap-rgw drwxr-xr-x 3 root 107 31 Jun 18 18:52 mds drwxr-xr-x 3 root 107 31 Jun 18 18:52 mgr drwxr-xr-x 3 root 107 31 Jun 18 18:52 mon drwxr-xr-x 2 root 107 6 Jun 18 18:52 osd drwxr-xr-x 3 root 107 35 Jun 18 18:52 radosgw drwxr-xr-x 2 root 107 6 Jun 18 18:52 tmp
关闭节点:
RESCUE <CONTROL_PLANE_NODE> :~ # poweroff- 打开节点。节点恢复之前的状态。