附录 A. 恢复 undercloud


以下恢复过程会假定 undercloud 节点失败,且处于不可恢复的状态。这个过程包括在全新安装中恢复数据库和关键文件系统。它假设如下:

  • 您已重新安装了最新版本的 Red Hat Enterprise Linux 7。
  • 硬件布局相同。
  • 机器的主机名和 undercloud 设置相同。
  • 备份存档已复制到 根目录

流程

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

    [root@director ~]# subscription-manager register
    Copy to Clipboard Toggle word wrap
  3. 附加 Red Hat OpenStack Platform 权利:

    [root@director ~]# subscription-manager attach --pool=Valid-Pool-Number-123456
    Copy to Clipboard Toggle word wrap
  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-10-rpms
    Copy to Clipboard Toggle word wrap
  5. 在系统上执行更新,确保您有最新的基本系统软件包:

    [root@director ~]# yum update -y
    [root@director ~]# reboot
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap
  7. 将 undercloud 备份存档复制到 undercloud 的根目录。以下步骤使用 undercloud-backup-$TIMESTAMP.tar 作为文件名,其中 $TIMESTAMP 是归档的时间戳的 Bash 变量。
  8. 安装数据库服务器和客户端工具:

    [root@director ~]# yum install -y mariadb mariadb-server
    Copy to Clipboard Toggle word wrap
  9. 启动数据库:

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

    [root@director ~]# mysql -uroot -e"set global max_allowed_packet = 1073741824;"
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap
  12. 恢复数据库备份:

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

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

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

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

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

    [root@director ~]# mysql -e 'select host, user, password from mysql.user;'
    Copy to Clipboard Toggle word wrap
  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'
    Copy to Clipboard Toggle word wrap

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

    注意

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

  19. 重启数据库:

    [root@director ~]# systemctl restart mariadb
    Copy to Clipboard Toggle word wrap
  20. 创建 stack 用户:

    [root@director ~]# useradd stack
    Copy to Clipboard Toggle word wrap
  21. 为该用户设置密码:

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

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

    # tar -xvC / -f undercloud-backup-$TIMESTAMP.tar home/stack
    Copy to Clipboard Toggle word wrap
  24. 安装 policycoreutils-python 软件包:

    [root@director ~]# yum -y install policycoreutils-python
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap
  29. 安装 puppet 并恢复其配置数据:

    [root@director ~]# yum install -y puppet hiera
    [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/puppet/hieradata/
    Copy to Clipboard Toggle word wrap
  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/*
        Copy to Clipboard Toggle word wrap
      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
        Copy to Clipboard Toggle word wrap
      3. 更新证书:

        [root@director ~]# update-ca-trust extract
        Copy to Clipboard Toggle word wrap
    • 如果您使用 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/*
        Copy to Clipboard Toggle word wrap
      2. 恢复 SELinux 上下文:

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

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

    [root@director ~]# su - stack
    [stack@director ~]$
    Copy to Clipboard Toggle word wrap
  32. 安装 python-tripleoclient 软件包:

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

    [stack@director ~]$ openstack undercloud install
    Copy to Clipboard Toggle word wrap

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat