附录 A. 恢复 undercloud
以下恢复过程会假定 undercloud 节点失败,且处于不可恢复的状态。这个过程包括在全新安装中恢复数据库和关键文件系统。它假设如下:
- 您已重新安装了最新版本的 Red Hat Enterprise Linux 7。
- 硬件布局相同。
- 机器的主机名和 undercloud 设置相同。
-
备份存档已复制到
根目录
。
流程
-
以
root
用户身份登录 undercloud。 使用 Content Delivery Network 注册您的系统,在提示时输入您的客户门户网站用户名和密码:
subscription-manager register
[root@director ~]# subscription-manager register
Copy 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-123456
Copy 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-10-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-10-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在系统上执行更新,确保您有最新的基本系统软件包:
yum update -y reboot
[root@director ~]# yum update -y [root@director ~]# reboot
Copy 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 ntpd
Copy 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-server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动数据库:
systemctl start mariadb systemctl enable mariadb
[root@director ~]# systemctl start mariadb [root@director ~]# systemctl enable mariadb
Copy 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.sql
Copy 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.sql
Copy 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.cnf
Copy 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 ~/root
Copy 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 mariadb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
stack
用户:useradd stack
[root@director ~]# useradd stack
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为该用户设置密码:
passwd stack
[root@director ~]# passwd stack
Copy 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/stack
Copy 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/stack
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
policycoreutils-python
软件包:yum -y install policycoreutils-python
[root@director ~]# yum -y install policycoreutils-python
Copy 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/images
Copy 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/node
Copy 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/keystone
Copy 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/heat
Copy 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-certs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新证书:
update-ca-trust extract
[root@director ~]# update-ca-trust extract
Copy 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/certmonger
Copy 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/lock
Copy 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-tripleoclient
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 undercloud 安装命令。确保在
stack
用户的主目录中运行它:openstack undercloud install
[stack@director ~]$ openstack undercloud install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装完成后,undercloud 会自动恢复与 overcloud 的连接。节点继续轮询 OpenStack Orchestration (heat)是否有待处理的任务。