备份和恢复 Director Undercloud
备份和恢复 director undercloud
摘要
第 1 章 备份 Undercloud 复制链接链接已复制到粘贴板!
本指南论述了如何备份 Red Hat OpenStack Platform director 中使用的 undercloud。undercloud 通常是一个物理节点(尽管使用虚拟机中运行的双节点 pacemaker 集群)存在一个物理节点(尽管高可用性选项)用于部署和管理 OpenStack 环境。
1.1. 备份注意事项 复制链接链接已复制到粘贴板!
制定一个强大的备份和恢复策略,以最大程度降低数据丢失和系统停机时间。在确定您的备份策略时,您需要回答以下问题:
- 从数据丢失中恢复需要多长时间?如果您根本不能有数据丢失,除了使用备份外,还必须在部署策略中包含高可用性。您需要考虑获取物理备份介质(包括从非现场位置、如果使用)以及有多少磁带驱动器可用于恢复操作所需的时间。
- 您应该保留多少个备份?您需要考虑一些法律法规要求,它们会影响您应该存储数据的时间。
- 您的备份是否应该保持非现场?存储备份介质将有助于缓解发生物理位置所带来的风险。
- 要测试备份的频率?强大的备份策略包括常规恢复测试备份数据。这有助于验证是否仍备份正确的数据,在备份或恢复过程中不会引入任何损坏。这些分析应假定在实际的灾难恢复条件下执行。
- 将备份什么?以下小节描述了组件的数据库和文件系统备份,以及恢复备份的信息。
1.2. Undercloud 节点的高可用性 复制链接链接已复制到粘贴板!
您可以自由考虑 Undercloud 节点的首选高可用性(HA)选项;红帽不预先考虑这一特定要求。例如,您可能会考虑将 Undercloud 节点作为红帽企业虚拟化(RHEV)中的高可用性虚拟机运行。您还可以考虑在 Pacemaker 中使用物理节点为所需服务提供 HA。
在处理 Undercloud 节点的高可用性时,您应该查阅您决定最适合您环境的解决方案的文档和最佳做法。
1.3. 创建裸机 Undercloud 备份 复制链接链接已复制到粘贴板!
完整的 undercloud 备份包括以下数据库和文件:
- undercloud 节点上的所有 MariaDB 数据库
- undercloud 上的 MariaDB 配置文件(因此您可以准确恢复数据库)
-
配置数据:
/etc -
日志数据:
/var/log -
镜像数据:
/var/lib/glance -
如果使用 SSL:
/var/lib/certmonger,证书生成数据 -
任何容器镜像数据:
/var/lib/docker和/var/lib/registry -
所有 swift 数据:
/srv/node -
stack 用户主目录中的所有数据:
/home/stack
在执行备份过程前,确认 undercloud 上有足够的磁盘空间。如果不存在,存档文件至少为 3.5 GB。
流程
-
以
root用户身份登录 undercloud。 备份数据库:
mysqldump --opt --all-databases > /root/undercloud-all-databases.sql
[root@director ~]# mysqldump --opt --all-databases > /root/undercloud-all-databases.sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
备份目录,并将目录的用户所有权改为stack用户:mkdir /backup chown stack: /backup
[root@director ~]# mkdir /backup [root@director ~]# chown stack: /backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您将使用此目录存储包含 undercloud 数据库和文件系统的存档。
进入
备份目录cd /backup
[root@director ~]# cd /backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow 归档数据库备份和配置文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
--ignore-failed-read选项跳过任何不适用于 undercloud 的目录。 -
--xattrs和--xattrs-include='*'选项包括扩展属性,这是存储 Object Storage (swift)和 SELinux 的元数据所必需的。
这会创建一个名为
undercloud-backup-<date>.tar.gz的文件,其中 <date> 是系统日期。将此tar文件复制到安全位置。-
1.4. 验证完成的备份 复制链接链接已复制到粘贴板!
您可以通过运行和验证恢复过程来验证已完成的备份过程是否成功。有关从备份中恢复的详情,请参见下一节。
部分 I. 恢复 Undercloud 复制链接链接已复制到粘贴板!
这部分论述了如何恢复 Red Hat OpenStack Platform Director 中使用的 undercloud。
此过程包含将数据从 OpenStack Platform director 备份恢复到新的 undercloud 安装的步骤。因此,恢复的 undercloud 使用最新的软件包。
第 2 章 恢复 undercloud 复制链接链接已复制到粘贴板!
以下恢复过程会假定 undercloud 节点失败,且处于不可恢复的状态。这个过程包括在全新安装中恢复数据库和关键文件系统。它假设如下:
- 您已重新安装了最新版本的 Red Hat Enterprise Linux 7。
- 硬件布局相同。
- 机器的主机名和 undercloud 设置相同。
-
备份存档已复制到
根目录。
流程
-
以
root用户身份登录 undercloud。 使用 Content Delivery Network 注册您的系统,在提示时输入您的客户门户网站用户名和密码:
subscription-manager register
[root@director ~]# subscription-manager registerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 附加 Red Hat OpenStack Platform 权利:
subscription-manager attach --pool=Valid-Pool-Number-123456
[root@director ~]# subscription-manager attach --pool=Valid-Pool-Number-123456Copy to Clipboard Copied! Toggle word wrap Toggle overflow 禁用所有默认的软件仓库,然后启用所需的 Red Hat Enterprise Linux 软件仓库:
subscription-manager repos --disable=* subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-rh-common-rpms --enable=rhel-ha-for-rhel-7-server-rpms --enable=rhel-7-server-openstack-13-rpms
[root@director ~]# subscription-manager repos --disable=* [root@director ~]# subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-rh-common-rpms --enable=rhel-ha-for-rhel-7-server-rpms --enable=rhel-7-server-openstack-13-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在系统上执行更新,确保您有最新的基本系统软件包:
yum update -y reboot
[root@director ~]# yum update -y [root@director ~]# rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确保同步 undercloud 上的时间。例如:
yum install -y ntp systemctl start ntpd systemctl enable ntpd ntpdate pool.ntp.org systemctl restart ntpd
[root@director ~]# yum install -y ntp [root@director ~]# systemctl start ntpd [root@director ~]# systemctl enable ntpd [root@director ~]# ntpdate pool.ntp.org [root@director ~]# systemctl restart ntpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 undercloud 备份存档复制到 undercloud
的根目录。以下步骤使用undercloud-backup-$TIMESTAMP.tar作为文件名,其中 $TIMESTAMP 是归档的时间戳的 Bash 变量。 安装数据库服务器和客户端工具:
yum install -y mariadb mariadb-server
[root@director ~]# yum install -y mariadb mariadb-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动数据库:
systemctl start mariadb systemctl enable mariadb
[root@director ~]# systemctl start mariadb [root@director ~]# systemctl enable mariadbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 增加允许的数据包以适应数据库备份的大小:
mysql -uroot -e"set global max_allowed_packet = 1073741824;"
[root@director ~]# mysql -uroot -e"set global max_allowed_packet = 1073741824;"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从存档中提取数据库和数据库配置:
tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/my.cnf.d/*server*.cnf tar -xvC / -f undercloud-backup-$TIMESTAMP.tar root/undercloud-all-databases.sql
[root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/my.cnf.d/*server*.cnf [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar root/undercloud-all-databases.sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 恢复数据库备份:
mysql -u root < /root/undercloud-all-databases.sql
[root@director ~]# mysql -u root < /root/undercloud-all-databases.sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 提取 root 配置文件的临时版本:
tar -xvf undercloud-backup-$TIMESTAMP.tar root/.my.cnf
[root@director ~]# tar -xvf undercloud-backup-$TIMESTAMP.tar root/.my.cnfCopy to Clipboard Copied! Toggle word wrap Toggle overflow 获取旧的 root 数据库密码:
OLDPASSWORD=$(sudo cat root/.my.cnf | grep -m1 password | cut -d'=' -f2 | tr -d "'")
[root@director ~]# OLDPASSWORD=$(sudo cat root/.my.cnf | grep -m1 password | cut -d'=' -f2 | tr -d "'")Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重置 root 数据库密码:
mysqladmin -u root password "$OLDPASSWORD"
[root@director ~]# mysqladmin -u root password "$OLDPASSWORD"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 root 配置文件从临时目录移动到
根目录:mv ~/root/.my.cnf ~/. rmdir ~/root
[root@director ~]# mv ~/root/.my.cnf ~/. [root@director ~]# rmdir ~/rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow 获取旧用户权限列表:
mysql -e 'select host, user, password from mysql.user;'
[root@director ~]# mysql -e 'select host, user, password from mysql.user;'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除列出的每个主机的旧用户权限。例如:
HOST="192.0.2.1" USERS=$(mysql -Nse "select user from mysql.user WHERE user != \"root\" and host = \"$HOST\";" | uniq | xargs) for USER in $USERS ; do mysql -e "drop user \"$USER\"@\"$HOST\"" || true ;done for USER in $USERS ; do mysql -e "drop user $USER" || true ;done mysql -e 'flush privileges'
[root@director ~]# HOST="192.0.2.1" [root@director ~]# USERS=$(mysql -Nse "select user from mysql.user WHERE user != \"root\" and host = \"$HOST\";" | uniq | xargs) [root@director ~]# for USER in $USERS ; do mysql -e "drop user \"$USER\"@\"$HOST\"" || true ;done [root@director ~]# for USER in $USERS ; do mysql -e "drop user $USER" || true ;done [root@director ~]# mysql -e 'flush privileges'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对通过主机 IP 和任何主机("%")访问的所有用户执行此操作。
注意HOST 参数中的 IP 地址是 control plane 中的 undercloud IP 地址。
重启数据库:
systemctl restart mariadb
[root@director ~]# systemctl restart mariadbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
stack用户:useradd stack
[root@director ~]# useradd stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为该用户设置密码:
passwd stack
[root@director ~]# passwd stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow 进行以下操作,以使用户在使用
sudo时无需输入密码:echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack chmod 0440 /etc/sudoers.d/stack
[root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack [root@director ~]# chmod 0440 /etc/sudoers.d/stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow 恢复
stack用户主目录:tar -xvC / -f undercloud-backup-$TIMESTAMP.tar home/stack
# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar home/stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
policycoreutils-python软件包:yum -y install policycoreutils-python
[root@director ~]# yum -y install policycoreutils-pythonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
openstack-glance软件包并恢复其数据和文件权限:yum install -y openstack-glance tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/glance/images chown -R glance: /var/lib/glance/images restorecon -R /var/lib/glance/images
[root@director ~]# yum install -y openstack-glance [root@director ~]# tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/glance/images [root@director ~]# chown -R glance: /var/lib/glance/images [root@director ~]# restorecon -R /var/lib/glance/imagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
openstack-swift软件包并恢复其数据和文件权限:yum install -y openstack-swift tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar srv/node chown -R swift: /srv/node restorecon -R /srv/node
[root@director ~]# yum install -y openstack-swift [root@director ~]# tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar srv/node [root@director ~]# chown -R swift: /srv/node [root@director ~]# restorecon -R /srv/nodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
openstack-keystone软件包并恢复其配置数据:yum -y install openstack-keystone tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/keystone restorecon -R /etc/keystone
[root@director ~]# yum -y install openstack-keystone [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/keystone [root@director ~]# restorecon -R /etc/keystoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
openstack-heat和 restore 配置:yum install -y openstack-heat* tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/heat restorecon -R /etc/heat
[root@director ~]# yum install -y openstack-heat* [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/heat [root@director ~]# restorecon -R /etc/heatCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装 puppet 并恢复其配置数据:
yum install -y puppet hiera tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/puppet/hieradata/
[root@director ~]# yum install -y puppet hiera [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/puppet/hieradata/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果在 undercloud 中使用 SSL,请刷新 CA 证书。根据 undercloud 配置,使用用户提供的证书的步骤或自动生成的证书的步骤:
如果 undercloud 配置了用户提供的证书,请完成以下步骤:
提取证书:
tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/instack-certs/undercloud.pem tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*
[root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/instack-certs/undercloud.pem [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 恢复 SELinux 上下文并管理文件系统标记:
restorecon -R /etc/pki semanage fcontext -a -t etc_t "/etc/pki/instack-certs(/.*)?" restorecon -R /etc/pki/instack-certs
[root@director ~]# restorecon -R /etc/pki [root@director ~]# semanage fcontext -a -t etc_t "/etc/pki/instack-certs(/.*)?" [root@director ~]# restorecon -R /etc/pki/instack-certsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新证书:
update-ca-trust extract
[root@director ~]# update-ca-trust extractCopy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您使用
certmonger自动 undercloud 的证书,请完成以下步骤:提取证书、CA 证书和 certmonger 文件:
tar -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/certmonger/* tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/tls/* tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*
[root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/certmonger/* [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/tls/* [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 恢复 SELinux 上下文:
restorecon -R /etc/pki restorecon -R /var/lib/certmonger
[root@director ~]# restorecon -R /etc/pki [root@director ~]# restorecon -R /var/lib/certmongerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
/var/lib/certmonger/lock文件:rm -f /var/lib/certmonger/lock
[root@director ~]# rm -f /var/lib/certmonger/lockCopy to Clipboard Copied! Toggle word wrap Toggle overflow
切换到
stack用户:su - stack
[root@director ~]# su - stack [stack@director ~]$Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
python-tripleoclient软件包:sudo yum install -y python-tripleoclient
$ sudo yum install -y python-tripleoclientCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 undercloud 安装命令。确保在
stack用户的主目录中运行它:openstack undercloud install
[stack@director ~]$ openstack undercloud installCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装完成后,undercloud 会自动恢复与 overcloud 的连接。节点继续轮询 OpenStack Orchestration (heat)是否有待处理的任务。
切换到 root 用户:
sudo su -
$ sudo su -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将容器数据与备份内容同步:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 3 章 为 overcloud 节点恢复镜像 复制链接链接已复制到粘贴板!
director 需要最新的磁盘镜像用于置备新的 overcloud 节点。按照以下步骤恢复这些镜像。
流程
查找
stackrc文件,以启用 director 的命令行工具:source ~/stackrc
[stack@director ~]$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
rhosp-director-images和rhosp-director-images-ipa软件包:sudo yum install rhosp-director-images rhosp-director-images-ipa
(undercloud) [stack@director ~]$ sudo yum install rhosp-director-images rhosp-director-images-ipaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将镜像存档提取到
stack用户主页 (/home/stack/images) 中的images目录中:cd ~/images for i in /usr/share/rhosp-director-images/overcloud-full-latest-13.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-13.0.tar; do tar -xvf $i; done
(undercloud) [stack@director ~]$ cd ~/images (undercloud) [stack@director images]$ for i in /usr/share/rhosp-director-images/overcloud-full-latest-13.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-13.0.tar; do tar -xvf $i; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 把这些镜像导入到 director:
cd ~/images openstack overcloud image upload --image-path /home/stack/images/
(undercloud) [stack@director images]$ cd ~/images (undercloud) [stack@director images]$ openstack overcloud image upload --image-path /home/stack/images/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置环境中的节点以使用新镜像:
for NODE in $(openstack baremetal node list -c UUID -f value) ; do openstack overcloud node configure $NODE ; done
(undercloud) [stack@director images]$ for NODE in $(openstack baremetal node list -c UUID -f value) ; do openstack overcloud node configure $NODE ; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 4 章 验证完成的恢复 复制链接链接已复制到粘贴板!
使用以下命令对新恢复的环境执行健康检查:
4.1. 检查 Identity Service (Keystone)操作 复制链接链接已复制到粘贴板!
此步骤通过查询用户列表来验证 Identity Service 操作。
source stackrc openstack user list
# source stackrc
# openstack user list
从控制器运行时,此命令的输出应该包括环境中创建的用户列表。此操作演示了 keystone 正在运行并成功验证用户请求。例如: