备份和恢复 Director Undercloud


Red Hat OpenStack Platform 13

备份和恢复 director undercloud

OpenStack Documentation Team

摘要

在 Red Hat OpenStack Platform 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。

流程

  1. root 用户身份登录 undercloud。
  2. 备份数据库:

    [root@director ~]# mysqldump --opt --all-databases > /root/undercloud-all-databases.sql
  3. 创建 备份目录,并将目录的用户所有权改为 stack 用户:

    [root@director ~]# mkdir /backup
    [root@director ~]# chown stack: /backup

    您将使用此目录存储包含 undercloud 数据库和文件系统的存档。

  4. 进入 备份目录

    [root@director ~]# cd /backup
  5. 归档数据库备份和配置文件:

    [root@director ~]# tar --xattrs --xattrs-include='*.*' --ignore-failed-read -cf \
        undercloud-backup-$(date +%F).tar \
        /root/undercloud-all-databases.sql \
        /etc \
        /var/log \
        /var/lib/glance \
        /var/lib/certmonger \
        /var/lib/docker \
        /var/lib/registry \
        /srv/node \
        /root \
        /home/stack
    • --ignore-failed-read 选项跳过任何不适用于 undercloud 的目录。
    • --xattrs--xattrs-include='*' 选项包括扩展属性,这是存储 Object Storage (swift)和 SELinux 的元数据所必需的。

    这会创建一个名为 undercloud-backup-<date>.tar.gz 的文件,其中 & lt;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 设置相同。
  • 备份存档已复制到 根目录

流程

  1. root 用户身份登录 undercloud。
  2. 使用 Content Delivery Network 注册您的系统,在提示时输入您的客户门户网站用户名和密码:

    [root@director ~]# subscription-manager register
  3. 附加 Red Hat OpenStack Platform 权利:

    [root@director ~]# subscription-manager attach --pool=Valid-Pool-Number-123456
  4. 禁用所有默认的软件仓库,然后启用所需的 Red Hat Enterprise Linux 软件仓库:

    [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-rpms
  5. 在系统上执行更新,确保您有最新的基本系统软件包:

    [root@director ~]# yum update -y
    [root@director ~]# reboot
  6. 确保同步 undercloud 上的时间。例如:

    [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 ntpd
  7. 将 undercloud 备份存档复制到 undercloud 的根目录。以下步骤使用 undercloud-backup-$TIMESTAMP.tar 作为文件名,其中 $TIMESTAMP 是归档的时间戳的 Bash 变量。
  8. 安装数据库服务器和客户端工具:

    [root@director ~]# yum install -y mariadb mariadb-server
  9. 启动数据库:

    [root@director ~]# systemctl start mariadb
    [root@director ~]# systemctl enable mariadb
  10. 增加允许的数据包以适应数据库备份的大小:

    [root@director ~]# mysql -uroot -e"set global max_allowed_packet = 1073741824;"
  11. 从存档中提取数据库和数据库配置:

    [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.sql
  12. 恢复数据库备份:

    [root@director ~]# mysql -u root < /root/undercloud-all-databases.sql
  13. 提取 root 配置文件的临时版本:

    [root@director ~]# tar -xvf undercloud-backup-$TIMESTAMP.tar root/.my.cnf
  14. 获取旧的 root 数据库密码:

    [root@director ~]# OLDPASSWORD=$(sudo cat root/.my.cnf | grep -m1 password | cut -d'=' -f2 | tr -d "'")
  15. 重置 root 数据库密码:

    [root@director ~]# mysqladmin -u root password "$OLDPASSWORD"
  16. 将 root 配置文件从临时目录移动到 根目录

    [root@director ~]# mv ~/root/.my.cnf ~/.
    [root@director ~]# rmdir ~/root
  17. 获取旧用户权限列表:

    [root@director ~]# mysql -e 'select host, user, password from mysql.user;'
  18. 删除列出的每个主机的旧用户权限。例如:

    [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'

    对通过主机 IP 和任何主机("%")访问的所有用户执行此操作。

    注意

    HOST 参数中的 IP 地址是 control plane 中的 undercloud IP 地址。

  19. 重启数据库:

    [root@director ~]# systemctl restart mariadb
  20. 创建 stack 用户:

    [root@director ~]# useradd stack
  21. 为该用户设置密码:

    [root@director ~]# passwd stack
  22. 进行以下操作,以使用户在使用 sudo 时无需输入密码:

    [root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack
    [root@director ~]# chmod 0440 /etc/sudoers.d/stack
  23. 恢复 stack 用户主目录:

    # tar -xvC / -f undercloud-backup-$TIMESTAMP.tar home/stack
  24. 安装 policycoreutils-python 软件包:

    [root@director ~]# yum -y install policycoreutils-python
  25. 安装 openstack-glance 软件包并恢复其数据和文件权限:

    [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/images
  26. 安装 openstack-swift 软件包并恢复其数据和文件权限:

    [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/node
  27. 安装 openstack-keystone 软件包并恢复其配置数据:

    [root@director ~]# yum -y install openstack-keystone
    [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/keystone
    [root@director ~]# restorecon -R /etc/keystone
  28. 安装 openstack-heat 和 restore 配置:

    [root@director ~]# yum install -y openstack-heat*
    [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/heat
    [root@director ~]# restorecon -R /etc/heat
  29. 安装 puppet 并恢复其配置数据:

    [root@director ~]# yum install -y puppet hiera
    [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/puppet/hieradata/
  30. 如果在 undercloud 中使用 SSL,请刷新 CA 证书。根据 undercloud 配置,使用用户提供的证书的步骤或自动生成的证书的步骤:

    • 如果 undercloud 配置了用户提供的证书,请完成以下步骤:

      1. 提取证书:

        [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/*
      2. 恢复 SELinux 上下文并管理文件系统标记:

        [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-certs
      3. 更新证书:

        [root@director ~]# update-ca-trust extract
    • 如果您使用 certmonger 自动 undercloud 的证书,请完成以下步骤:

      1. 提取证书、CA 证书和 certmonger 文件:

        [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/*
      2. 恢复 SELinux 上下文:

        [root@director ~]# restorecon -R /etc/pki
        [root@director ~]# restorecon -R /var/lib/certmonger
      3. 删除 /var/lib/certmonger/lock 文件:

        [root@director ~]# rm -f /var/lib/certmonger/lock
  31. 切换到 stack 用户:

    [root@director ~]# su - stack
    [stack@director ~]$
  32. 安装 python-tripleoclient 软件包:

    $ sudo yum install -y python-tripleoclient
  33. 运行 undercloud 安装命令。确保在 stack 用户的主目录中运行它:

    [stack@director ~]$ openstack undercloud install

    安装完成后,undercloud 会自动恢复与 overcloud 的连接。节点继续轮询 OpenStack Orchestration (heat)是否有待处理的任务。

  34. 切换到 root 用户:

    $ sudo su -
  35. 将容器数据与备份内容同步:

    [root@director ~]$ tar -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/docker/
    [root@director ~]$ tar -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/registry/
    [root@director ~]$ tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/docker/
    [root@director ~]$ tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/docker-distribution/
    [root@director ~]$ tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/sysconfig/docker*
    [root@director ~]$ systemctl restart docker docker-distribution

第 3 章 为 overcloud 节点恢复镜像

director 需要最新的磁盘镜像用于置备新的 overcloud 节点。按照以下步骤恢复这些镜像。

流程

  1. 查找 stackrc 文件,以启用 director 的命令行工具:

    [stack@director ~]$ source ~/stackrc
  2. 安装 rhosp-director-imagesrhosp-director-images-ipa 软件包:

    (undercloud) [stack@director ~]$ sudo yum install rhosp-director-images rhosp-director-images-ipa
  3. 将镜像存档提取到 stack 用户主页 (/home/stack/images) 中的 images 目录中:

    (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; done
  4. 把这些镜像导入到 director:

    (undercloud) [stack@director images]$ cd ~/images
    (undercloud) [stack@director images]$ openstack overcloud image upload --image-path /home/stack/images/
  5. 配置环境中的节点以使用新镜像:

    (undercloud) [stack@director images]$ for NODE in $(openstack baremetal node list -c UUID -f value) ; do openstack overcloud node configure $NODE ; done

第 4 章 验证完成的恢复

使用以下命令对新恢复的环境执行健康检查:

4.1. 检查 Identity Service (Keystone)操作

此步骤通过查询用户列表来验证 Identity Service 操作。

# source stackrc
# openstack user list

从控制器运行时,此命令的输出应该包括环境中创建的用户列表。此操作演示了 keystone 正在运行并成功验证用户请求。例如:

# openstack user list
+----------------------------------+------------+---------+----------------------+
|                id                |    name    | enabled |        email         |
+----------------------------------+------------+---------+----------------------+
| 9e47bb53bb40453094e32eccce996828 |   admin    |   True  |    root@localhost    |
| 9fe2466f88cc4fa0ba69e59b47898829 | ceilometer |   True  | ceilometer@localhost |
| 7a40d944e55d422fa4e85daf47e47c42 |   cinder   |   True  |   cinder@localhost   |
| 3d2ed97538064f258f67c98d1912132e |    demo    |   True  |                      |
| 756e73a5115d4e9a947d8aadc6f5ac22 |   glance   |   True  |   glance@localhost   |
| f0d1fcee8f9b4da39556b78b72fdafb1 |  neutron   |   True  |  neutron@localhost   |
| e9025f3faeee4d6bb7a057523576ea19 |    nova    |   True  |    nova@localhost    |
| 65c60b1278a0498980b2dc46c7dcf4b7 |   swift    |   True  |   swift@localhost    |
+----------------------------------+------------+---------+----------------------+

法律通告

版权所有 © 2017 Red Hat, Inc.
本文档内容及图解由红帽根据 Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA")授权。如需 CC-BY-SA 的解释,请访问 http://creativecommons.org/licenses/by-sa/3.0/根据 CC-BY-SA,如果发布本文档或提供此文档,则必须提供原始版本的 URL。
作为本文档的许可者,红帽可能会放弃强制制执行 CC-BY-SA 第4d 条款,且不声明该条款在适用条款允许的最大限度内有效。
部分来自 OpenStack 配置参考。请参阅 Red Hat OpenStack Platform 许可证中的"配置参考"文档
Red Hat、Red Hat Enterprise Linux、Shadowman 徽标、JBoss、MetaMatrix、Fedora、Infinity 徽标和 RHCE 是 Red Hat, Inc. 在美国和其他国家/地区注册的商标。
Linux® 是 Linus Torvalds 在美国和其他国家/地区的注册商标。
Java® 是 Oracle 和/或其附属公司的注册商标。
XFS® 是 Silicon Graphics International Corp. 或其子公司在美国和/或其他国家的商标。
MySQL® 是美国、欧盟和其他国家的 MySQL AB 的注册商标。
Node.js® 是 Joyent 的官方商标。Red Hat Software Collections 与官方 Joyent Node.js 开源或商业项目没有正式关联或被正式认可。
OpenStack® Word Mark 和 OpenStack 徽标是 OpenStack Foundation 在美国及其他国家的注册商标/服务标记或商标/服务标记,可根据 OpenStack Foundation 的许可使用。我们不附属于 OpenStack Foundation 或 OpenStack 社区。
所有其他商标均由其各自所有者所有。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.