第 2 章 使用 Relax-and-Recover 工具备份 undercloud 和 control plane 节点
升级或更新 Red Hat Openstack Platform (RHOSP)时,您必须备份 undercloud 节点和 control plane 节点。您可以使用 Relax-and-Recover (ReaR)工具备份 undercloud 节点和 control plane 节点。要使用 ReaR 工具备份和恢复 undercloud 和 control plane 节点,您必须完成以下步骤:
- 备份 undercloud 节点
- 备份 control plane 节点
- 恢复 undercloud 和 control plane 节点
2.1. 使用 Relax-and-Recover 工具备份 undercloud 节点 复制链接链接已复制到粘贴板!
要备份 undercloud 节点,请配置备份节点,在 undercloud 节点上安装 Relax-and-Recover 工具,然后创建备份镜像。您可以将备份创建作为常规环境维护的一部分。
另外,您必须在执行更新或升级前备份 undercloud 节点。如果在更新或升级过程中出现错误,您可以使用备份将 undercloud 节点恢复到之前的状态。
2.1.1. 支持的备份格式和协议 复制链接链接已复制到粘贴板!
undercloud 和备份和恢复过程使用开源工具 Relax-and-Recover (ReaR)创建和恢复可引导备份镜像。ReaR 使用 Bash 编写,支持多个镜像格式和多个传输协议。
以下列表显示了 Red Hat OpenStack Platform 在使用 ReaR 备份和恢复 undercloud 和 control plane 时支持的备份格式和协议。
- 可引导介质格式
- ISO
- 文件传输协议
- SFTP
- NFS
2.1.2. 配置备份存储位置 复制链接链接已复制到粘贴板!
在创建 control plane 节点的备份前,在 bar-vars.yaml 环境文件中配置备份存储位置。此文件存储要传递给备份执行的键值参数。
流程
-
以
stack用户的身份登录 undercloud。 Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
bar-vars.yaml文件:touch /home/stack/bar-vars.yaml
touch /home/stack/bar-vars.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
bar-vars.yaml文件中,配置备份存储位置:如果使用 NFS 服务器,请添加以下参数并设置 NFS 服务器的 IP 地址和备份存储文件夹:
tripleo_backup_and_restore_server: <ip_address> tripleo_backup_and_restore_shared_storage_folder: <backup_dir>
tripleo_backup_and_restore_server: <ip_address> tripleo_backup_and_restore_shared_storage_folder: <backup_dir>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 <ip_address> 和 <backup_dir> 替换为应用到您的环境的值。默认情况下,
tripleo_backup_and_restore_server参数值为192.168.24.1。
-
将 <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/
tripleo_backup_and_restore_output_url: sftp://<user>:<password>@<backup_node>/ tripleo_backup_and_restore_backup_url: iso:///backup/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 &
lt;user> , <password> , 和 <backup_node> 替换为备份节点 URL 和凭证。
2.1.3. 可选:配置备份加密 复制链接链接已复制到粘贴板!
您可以将备份加密为额外的安全措施,以保护敏感数据。
流程
在
bar-vars.yaml文件中,添加以下参数:tripleo_backup_and_restore_crypt_backup_enabled: true tripleo_backup_and_restore_crypt_backup_password: <password>
tripleo_backup_and_restore_crypt_backup_enabled: true tripleo_backup_and_restore_crypt_backup_password: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<password> 替换为您要用来加密备份的密码。
2.1.4. 在备份节点上安装和配置 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 凭证:
source stackrc
[stack@undercloud-0 ~]$ source stackrc (undercloud) [stack@undercloud ~]$Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 undercloud 节点上,为备份节点创建一个清单文件:
(undercloud) [stack@undercloud ~]$ cat <<'EOF'> ~/nfs-inventory.yaml [BackupNode] <backup_node> ansible_host=<ip_address> ansible_user=<user> EOF
(undercloud) [stack@undercloud ~]$ cat <<'EOF'> ~/nfs-inventory.yaml [BackupNode] <backup_node> ansible_host=<ip_address> ansible_user=<user> EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 &
lt;backup_node> , <ip_address> , 和 <user> 替换为应用到您的环境的值。将公共 SSH 密钥从 undercloud 节点复制到备份节点。
ssh-copy-id -i ~/.ssh/id_rsa.pub <backup_node>
(undercloud) [stack@undercloud ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub <backup_node>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<backup_node>替换为备份节点的路径和名称。在备份节点上配置 NFS 服务器:
openstack undercloud backup --setup-nfs --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/nfs-inventory.yaml
(undercloud) [stack@undercloud ~]$ openstack undercloud backup --setup-nfs --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/nfs-inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1.5. 在 undercloud 节点上安装 ReaR 复制链接链接已复制到粘贴板!
在创建 undercloud 节点的备份前,在 undercloud 上安装和配置 Relax 和 Recover (ReaR)。
先决条件
- 您已在备份节点上安装并配置了 NFS 或 SFTP 服务器。有关创建新 NFS 服务器的详情请参考 第 2.1.4 节 “在备份节点上安装和配置 NFS 服务器”。
流程
在 undercloud 节点上,提供 undercloud 凭证:
source stackrc
[stack@undercloud-0 ~]$ source stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您之前还没有这样做,请从安装过程中保存它的位置提取静态 ansible 清单文件:
cp ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml ~/tripleo-inventory.yaml
(undercloud) [stack@undercloud ~]$ cp ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml ~/tripleo-inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<stack>替换为您的堆栈的名称。默认情况下,堆栈的名称是overcloud。
-
将
在 undercloud 节点上安装 ReaR:
openstack undercloud backup --setup-rear --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/tripleo-inventory.yaml
(undercloud) [stack@undercloud ~]$ openstack undercloud backup --setup-rear --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/tripleo-inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的系统使用 UEFI 引导装载程序,请在 undercloud 节点上执行以下步骤:
安装以下工具:
sudo dnf install dosfstools efibootmgr
$ sudo dnf install dosfstools efibootmgrCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
通过将
USING_UEFI_BOOTLOADER参数值0替换为值1,在/etc/rear/local.conf中的 ReaR 配置文件中启用 UEFI 备份。
2.1.6. 可选:创建 undercloud 节点的独立数据库备份 复制链接链接已复制到粘贴板!
您可以在常规备份调度中包含独立 undercloud 数据库备份,以提供额外的数据安全性。undercloud 节点的完整备份包括 undercloud 节点的数据库备份。但是,如果完整 undercloud 恢复失败,您可能会丢失对完整 undercloud 备份的数据库部分的访问。在这种情况下,您可以从独立 undercloud 数据库备份中恢复数据库。
您可以与 ReaR 工具和 Snapshot 和 Revert 工具结合使用创建独立 undercloud 数据库备份。但是,建议您备份整个 undercloud。有关创建 undercloud 节点备份的更多信息,请参阅创建 undercloud 节点的备份。
流程
创建 undercloud 节点的数据库备份:
openstack undercloud backup --db-only
openstack undercloud backup --db-onlyCopy to Clipboard Copied! Toggle word wrap Toggle overflow db 备份文件存储在
/home/stack 中,其名称为 openstack-backup-mysql-<timestamp>.sql。
2.1.7. 配置 Open vSwitch (OVS)接口以进行备份 复制链接链接已复制到粘贴板!
如果您在环境中使用 Open vSwitch (OVS)网桥,则必须在创建 undercloud 或 control plane 节点的备份前手动配置 OVS 接口。恢复过程使用此信息来恢复网络接口。
流程
在
/etc/rear/local.conf文件中,以以下格式添加NETWORKING_PREPARATION_COMMANDS参数:NETWORKING_PREPARATION_COMMANDS=('<command_1>' '<command_2>' ...')NETWORKING_PREPARATION_COMMANDS=('<command_1>' '<command_2>' ...')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<command_1> 和 <command_2> 替换为配置网络接口名称或 IP 地址的命令。例如,您可以添加ip link add br-ctlplane type bridge命令来配置 control plane 网桥名称,或者添加ip link set eth0 up命令来设置接口名称。您可以根据网络配置在 参数中添加更多命令。
2.1.8. 创建 undercloud 节点的备份 复制链接链接已复制到粘贴板!
要创建 undercloud 节点的备份,请使用 openstack undercloud backup 命令。然后,当节点变得损坏或无法访问时,您可以使用备份将 undercloud 节点恢复到之前的状态。undercloud 节点的备份包括 undercloud 节点上运行的数据库的备份。
建议您按照以下流程创建 undercloud 节点的备份。但是,如果您已完成 创建 undercloud 节点的独立数据库备份,您可以跳过这个过程。
先决条件
- 您已在备份节点上安装并配置了 NFS 或 SFTP 服务器。有关创建新 NFS 服务器的详情请参考 第 2.1.4 节 “在备份节点上安装和配置 NFS 服务器”。
- 您已在 undercloud 节点上安装了 ReaR。更多信息请参阅 第 2.1.5 节 “在 undercloud 节点上安装 ReaR”。
- 如果您的网络接口使用 OVS 网桥,您已配置 OVS 接口。更多信息请参阅 第 2.1.7 节 “配置 Open vSwitch (OVS)接口以进行备份”。
步骤
-
以
stack用户的身份登录 undercloud。 检索 MySQL root 密码:
PASSWORD=$(sudo /bin/hiera -c /etc/puppet/hiera.yaml mysql::server::root_password)
[stack@undercloud ~]$ PASSWORD=$(sudo /bin/hiera -c /etc/puppet/hiera.yaml mysql::server::root_password)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 undercloud 节点的数据库备份:
sudo podman exec mysql bash -c "mysqldump -uroot -p$PASSWORD --opt --all-databases" | sudo tee /root/undercloud-all-databases.sql
[stack@undercloud ~]$ sudo podman exec mysql bash -c "mysqldump -uroot -p$PASSWORD --opt --all-databases" | sudo tee /root/undercloud-all-databases.sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在 undercloud 节点上,提供 undercloud 凭证:
source stackrc
[stack@undercloud-0 ~]$ source stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 undercloud 节点的备份:
openstack undercloud backup
(undercloud) [stack@undercloud ~]$ openstack undercloud backup --inventory /home/stack/tripleo-inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1.9. 使用 cron 调度 undercloud 节点备份 复制链接链接已复制到粘贴板!
您可以使用 Ansible backup-and-restore 角色使用 ReaR 调度 undercloud 节点的备份。您可以查看 /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 undercloud backup --cron
openstack undercloud backup --cronCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:根据您的部署自定义调度的备份:
要更改默认备份调度,请在
tripleo_backup_and_restore_cron参数上传递不同的 cron 调度:openstack undercloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron": "0 0 * * 0"}'openstack undercloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron": "0 0 * * 0"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要定义在 cron 运行调度备份时添加到 backup 命令中的其他参数,请将
tripleo_backup_and_restore_cron_extra参数传递给 backup 命令,如下例所示:openstack undercloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_extra":"--extra-vars bar-vars.yaml --inventory /home/stack/tripleo-inventory.yaml"}'openstack undercloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_extra":"--extra-vars bar-vars.yaml --inventory /home/stack/tripleo-inventory.yaml"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要更改执行备份的默认用户,请将
tripleo_backup_and_restore_cron_user参数传递给 backup 命令,如下例所示:openstack undercloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_user": "root"}openstack undercloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_user": "root"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow