2.2. 使用 Relax-and-Recover 工具备份 control plane 节点
要备份 control plane 节点,请配置备份节点,在 control plane 节点上安装 Relax-and-Recover 工具,并创建备份镜像。您可以将备份创建作为常规环境维护的一部分。
另外,您必须在执行更新或升级前备份 control plane 节点。如果在更新或升级过程中出现错误,您可以使用备份将 control plane 节点恢复到之前的状态。
2.2.1. 支持的备份格式和协议
undercloud 和备份和恢复过程使用开源工具 Relax-and-Recover (ReaR)创建和恢复可引导备份镜像。ReaR 使用 Bash 编写,支持多个镜像格式和多个传输协议。
以下列表显示了 Red Hat OpenStack Platform 在使用 ReaR 备份和恢复 undercloud 和 control plane 时支持的备份格式和协议。
- 可引导介质格式
- ISO
- 文件传输协议
- SFTP
- NFS
2.2.2. 在备份节点上安装和配置 NFS 服务器
您可以安装和配置新的 NFS 服务器来存储备份文件。要在备份节点上安装和配置 NFS 服务器,请创建一个清单文件,创建 SSH 密钥,并使用 NFS 服务器选项运行 openstack undercloud backup
命令。
- 如果您之前安装和配置了 NFS 或 SFTP 服务器,则不需要完成此流程。当您在要备份的节点上设置 ReaR 时,输入服务器信息。
-
默认情况下,NFS 服务器的 Relax 和 Recover (ReaR) IP 地址参数是
192.168.24.1
。您必须添加参数tripleo_backup_and_restore_server
来设置与您的环境匹配的 IP 地址值。
流程
在 undercloud 节点上,提供 undercloud 凭证:
[stack@undercloud-0 ~]$ source stackrc (undercloud) [stack@undercloud ~]$
在 undercloud 节点上,为备份节点创建一个清单文件:
(undercloud) [stack@undercloud ~]$ cat <<'EOF'> ~/nfs-inventory.yaml [BackupNode] <backup_node> ansible_host=<ip_address> ansible_user=<user> EOF
将 &
lt;backup_node>
; , <ip_address
> , 和 <user
> 替换为应用到您的环境的值。将公共 SSH 密钥从 undercloud 节点复制到备份节点。
(undercloud) [stack@undercloud ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub <backup_node>
将
<backup_node>
替换为备份节点的路径和名称。在备份节点上配置 NFS 服务器:
(undercloud) [stack@undercloud ~]$ openstack undercloud backup --setup-nfs --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/nfs-inventory.yaml
2.2.3. 在 control plane 节点上安装 ReaR
在创建 control plane 节点的备份前,在每个 control plane 节点上安装和配置 Relax 和 Recover (ReaR)。
由于一个已知问题,即使 Controller 节点停机,overcloud 节点的 ReaR 备份也会继续。在运行 ReaR 备份前,请确保所有 Controller 节点都在运行。计划在以后的 Red Hat OpenStack Platform (RHOSP)发行版本进行修复。有关更多信息,请参阅 BZ#2077335 - 即使一个控制器无法访问,也会保留 overcloud ctlplane。
先决条件
- 您已在备份节点上安装并配置了 NFS 或 SFTP 服务器。有关创建新 NFS 服务器的详情请参考 第 2.2.2 节 “在备份节点上安装和配置 NFS 服务器”。
流程
在 undercloud 节点上,提供 undercloud 凭证:
[stack@undercloud-0 ~]$ source stackrc
如果您之前还没有这样做,请从安装过程中保存它的位置提取静态 ansible 清单文件:
(undercloud) [stack@undercloud ~]$ cp ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml ~/tripleo-inventory.yaml
-
将
<stack>
替换为您的堆栈的名称。默认情况下,堆栈的名称是overcloud
。
-
将
在
bar-vars.yaml
文件中,配置备份存储位置:如果您安装并配置了自己的 NFS 服务器,请添加
tripleo_backup_and_restore_server
参数,并将值设为 NFS 服务器的 IP 地址:tripleo_backup_and_restore_server: <ip_address> tripleo_backup_and_restore_shared_storage_folder: <backup_dir>
-
将 <ip_address> 和 <backup_dir> 替换为应用到您的环境的值。默认情况下,
tripleo_backup_and_restore_server
参数值为192.168.24.1
adtrust
-
将 <ip_address> 和 <backup_dir> 替换为应用到您的环境的值。默认情况下,
如果您使用 SFTP 服务器,请添加
tripleo_backup_and_restore_output_url
参数并设置 SFTP 服务器的 URL 和凭证的值:tripleo_backup_and_restore_output_url: sftp://<user>:<password>@<backup_node>/ tripleo_backup_and_restore_backup_url: iso:///backup/
将 &
lt;user&
gt; , <password
> , 和 <backup_node
> 替换为备份节点 URL 和凭证。
在 control plane 节点上安装 ReaR:
(undercloud) [stack@undercloud ~]$ openstack overcloud backup --setup-rear --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/tripleo-inventory.yaml
如果您的系统使用 UEFI 引导装载程序,请在 control plane 节点上执行以下步骤:
安装以下工具:
$ sudo dnf install dosfstools efibootmgr
-
通过将
USING_UEFI_BOOTLOADER
参数值0
替换为值1
,在/etc/rear/local.conf
中的 ReaR 配置文件中启用 UEFI 备份。
2.2.4. 配置 Open vSwitch (OVS)接口以进行备份
如果您在环境中使用 Open vSwitch (OVS)网桥,则必须在创建 undercloud 或 control plane 节点的备份前手动配置 OVS 接口。恢复过程使用此信息来恢复网络接口。
流程
在
/etc/rear/local.conf
文件中,以以下格式添加NETWORKING_PREPARATION_COMMANDS
参数:NETWORKING_PREPARATION_COMMANDS=('<command_1>' '<command_2>' ...')
将
<command_
1> 和 <command_
2> 替换为配置网络接口名称或 IP 地址的命令。例如,您可以添加ip link add br-ctlplane type bridge
命令来配置 control plane 网桥名称,或者添加ip link set eth0 up
命令来设置接口名称。您可以根据网络配置在 参数中添加更多命令。
2.2.5. 创建 control plane 节点的备份
要创建 control plane 节点的备份,请使用 openstack overcloud backup
命令。然后,如果节点被破坏或无法访问,您可以使用备份将 control plane 节点恢复到之前的状态。control plane 节点的备份包括在 control plane 节点上运行的数据库的备份。
先决条件
- 您已在备份节点上安装并配置了 NFS 或 SFTP 服务器。有关创建新 NFS 服务器的详情请参考 第 2.2.2 节 “在备份节点上安装和配置 NFS 服务器”。
- 您已在 control plane 节点上安装 ReaR。更多信息请参阅 第 2.2.3 节 “在 control plane 节点上安装 ReaR”。
- 如果您的网络接口使用 OVS 网桥,您已配置 OVS 接口。更多信息请参阅 第 2.2.4 节 “配置 Open vSwitch (OVS)接口以进行备份”。
流程
在每个 control plane 节点上找到
config-drive
分区:[stack@undercloud-0 ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 55G 0 disk ├─vda1 253:1 0 1M 0 part 1 ├─vda2 253:2 0 100M 0 part /boot/efi └─vda3 253:3 0 54.9G 0 part /
- 1
config-drive
分区是未挂载的 1M 分区。
在每个 control plane 节点上,以
root
用户身份备份每个节点的config-drive
分区:[root@controller-x ~]# dd if=<config_drive_partition> of=/mnt/config-drive
将
<config_drive_partition
> 替换为在第 1 步中的config-drive
分区的名称。在 undercloud 节点上,提供 undercloud 凭证:
[stack@undercloud-0 ~]$ source stackrc
创建 control plane 节点的备份:
(undercloud) [stack@undercloud ~]$ openstack overcloud backup --inventory /home/stack/tripleo-inventory.yaml
备份过程在每个 control plane 节点上按顺序运行,而不会破坏您的环境的服务。
2.2.6. 使用 cron 调度 control plane 节点备份
您可以使用 Ansible backup-and-restore
角色使用 ReaR 调度 control plane 节点的备份。您可以查看 /var/log/rear-cron
目录中的日志。
先决条件
- 您已在备份节点上安装并配置了 NFS 或 SFTP 服务器。有关创建新 NFS 服务器的详情请参考 第 2.1.4 节 “在备份节点上安装和配置 NFS 服务器”。
- 您已在 undercloud 和 control plane 节点上安装 ReaR。更多信息请参阅 第 2.2.3 节 “在 control plane 节点上安装 ReaR”。
- 在您的备份位置有足够的可用磁盘空间来存储备份。
流程
要调度 control plane 节点的备份,请运行以下命令。默认调度为 Sundays 在午夜:
openstack overcloud backup --cron
可选:根据您的部署自定义调度的备份:
要更改默认备份调度,请在
tripleo_backup_and_restore_cron
参数上传递不同的 cron 调度:openstack overcloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron": "0 0 * * 0"}'
要定义在 cron 运行调度备份时添加到 backup 命令中的其他参数,请将
tripleo_backup_and_restore_cron_extra
参数传递给 backup 命令,如下例所示:openstack overcloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_extra":"--extra-vars bar-vars.yaml --inventory /home/stack/tripleo-inventory.yaml"}'
要更改执行备份的默认用户,请将
tripleo_backup_and_restore_cron_user
参数传递给 backup 命令,如下例所示:openstack overcloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_user": "root"}