[ English | 日本語 | Deutsch | Indonesia ]
备份与恢复¶
在创建您的 OpenStack 备份策略时,应用标准的备份最佳实践。例如,备份数据的频率与您从数据丢失中恢复的速度密切相关。
注意
如果您完全不能容忍任何数据丢失,您还应该关注高可用性部署。 OpenStack 高可用性指南 提供了消除可能导致系统停机的单点故障的建议。虽然它不是一份完全规范性的文档,但它提供了避免停机和数据丢失的方法和技术。
其他备份注意事项包括
保留多少备份?
备份是否应该保存在异地?
备份应该多久测试一次?
与备份策略同样重要的是恢复策略(或至少是恢复测试)。
要备份的内容¶
虽然 OpenStack 由许多组件和活动部件组成,但备份关键数据非常简单。
本章仅描述如何备份各种 OpenStack 组件运行所需的配置文件和数据库。本章不描述如何备份对象存储中的对象或块存储中的数据。通常,这些区域留给用户自行备份。
数据库备份¶
示例 OpenStack 架构将云控制器指定为 MySQL 服务器。此 MySQL 服务器托管 nova、glance、cinder 和 keystone 的数据库。将所有这些数据库放在一个地方,可以很容易地创建数据库备份
# mysqldump --opt --all-databases > openstack.sql
如果您只想备份单个数据库,您可以运行
# mysqldump --opt nova > nova.sql
其中 nova 是您要备份的数据库。
您可以通过创建一个每天运行以下脚本的 cron 作业来轻松自动化此过程
#!/bin/bash
backup_dir="/var/lib/backups/mysql"
filename="${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql.gz"
# Dump the entire MySQL database
/usr/bin/mysqldump --opt --all-databases | gzip > $filename
# Delete backups older than 7 days
find $backup_dir -ctime +7 -type f -delete
此脚本转储整个 MySQL 数据库,并删除任何超过七天的备份。
文件系统备份¶
本节讨论应定期备份哪些文件和目录,按服务组织。
计算¶
云控制器和计算节点上的 /etc/nova 目录应定期备份。
/var/log/nova 如果所有日志都发送到中央区域,则不需要备份。强烈建议使用中央日志服务器或备份日志目录。
/var/lib/nova 是另一个需要备份的重要目录。例外情况是计算节点上的 /var/lib/nova/instances 子目录。此子目录包含正在运行的实例的 KVM 镜像。您只想在需要维护所有实例的备份副本时才备份此目录。在大多数情况下,您不需要这样做,但这可能因云到云以及您的服务级别而异。还要注意,从活动 KVM 实例进行备份可能会导致该实例在从备份恢复时无法正确启动。
镜像目录和交付¶
/etc/glance 和 /var/log/glance 遵循与 nova 对应的相同规则。
/var/lib/glance 也应备份。特别注意 /var/lib/glance/images。如果您使用的是 glance 的基于文件的后端,/var/lib/glance/images 是存储镜像的位置,应小心处理。
有两种方法可以确保此目录的稳定性。第一种是确保此目录在 RAID 阵列上运行。如果磁盘发生故障,则该目录可用。第二种方法是使用 rsync 等工具将镜像复制到另一台服务器
# rsync -az --progress /var/lib/glance/images backup-server:/var/lib/glance/images/
身份认证¶
/etc/keystone 和 /var/log/keystone 遵循与其他组件相同的规则。
/var/lib/keystone,虽然它不应包含任何正在使用的数据,也可以备份以防万一。
块存储¶
/etc/cinder 和 /var/log/cinder 遵循与其他组件相同的规则。
/var/lib/cinder 也应备份。
网络¶
/etc/neutron 和 /var/log/neutron 遵循与其他组件相同的规则。
/var/lib/neutron 也应备份。
对象存储¶
/etc/swift 非常重要,必须备份。此目录包含 swift 配置文件以及环文件和环 构建文件,如果丢失,将使您集群上的数据无法访问。最佳实践是将构建文件复制到所有存储节点以及环文件。多个备份副本分布在您的存储集群中。
遥测¶
备份包含遥测配置文件的 /etc/ceilometer 目录。
编排¶
备份 HOT 模板 yaml 文件,以及包含编排配置文件的 /etc/heat/ 目录。
恢复备份¶
恢复备份是一个相当简单的过程。首先,确保您要恢复的服务未运行。例如,要在云控制器上完全恢复 nova,首先停止所有 nova 服务
# stop nova-api
# stop nova-consoleauth
# stop nova-novncproxy
# stop nova-objectstore
# stop nova-scheduler
现在您可以导入先前备份的数据库
# mysql nova < nova.sql
您还可以恢复备份的 nova 目录
# mv /etc/nova{,.orig}
# cp -a /path/to/backup/nova /etc/
文件恢复后,重新启动所有内容
# start mysql
# for i in nova-api nova-consoleauth nova-novncproxy \
nova-objectstore nova-scheduler
> do
> start $i
> done
其他服务遵循相同的过程,以及各自的目录和数据库。
摘要¶
备份和随后的恢复是系统管理员首先学习的任务之一。但是,每个系统都有不同的需要关注的项目。通过照顾您的数据库、镜像服务和适当的文件系统位置,您可以确保能够处理任何需要恢复的事件。