互联网服务备份OpenStack

对Openstack平台上虚拟机及平台本身备份需要注意什么?推荐使用什么备份软件?

备份过程中需要注意的事项

参与8

3同行回答

Q先生Q先生  研发总监 , 某公司
 1. 虚拟机的备份OpenStack其实在设计之初并没有过多的考虑备份能力,以至于到现在为止都没有非常完美的备份方案。因此,要找一个能够提供丰富的备份恢复能力的解决方案(像各家灾备厂商针对VMware的那样)基本上不太可能。 1.1 OpenStack虚拟机备份的主要问题在哪呢?OpenSta...显示全部

 1. 虚拟机的备份

OpenStack其实在设计之初并没有过多的考虑备份能力,以至于到现在为止都没有非常完美的备份方案。因此,要找一个能够提供丰富的备份恢复能力的解决方案(像各家灾备厂商针对VMware的那样)基本上不太可能。

 1.1 OpenStack虚拟机备份的主要问题在哪呢?

OpenStack与其他虚拟化平台不一样,虚拟机的磁盘(云硬盘)来源不同,简单说明一下:

- 针对镜像启动的虚拟机,它的系统盘一般是由nova服务管理的;而数据盘都是由cinder服务管理的。
- 针对云硬盘启动的虚拟机,它的系统盘和数据盘都来源于cinder服务。而cinder本身就可以接入各种不同类型的存储,且不同存储能够提供的能力还不一样。

由于虚拟机的各个磁盘的不一致问题,很难做到虚拟机备份的“数据一致性”。为了解决一致性的问题,其实OpenStack官方是有在cinder服务中提供一致性快照组的能力,即将多个cinder卷组成一个组,针对这个卷组做快照,以此保证卷组中卷的一致性。但这个并不能解决镜像启动的云主机的问题,同时也依赖于对接cinder服务的存储本身的能力。就目前来看,一致性快照组的功能使用起来限制还是非常大的。

还有一个问题是快照的问题。我们知道,快照是保留某个虚拟机在某一时刻的状态。针对虚拟化平台而言,快照动作是很快的。但是针对OpenStack而言,就不完全是这样。当虚拟机是镜像启动的时候,OpenStack的快照是将系统盘生成一个快照镜像文件,并上传到Glance服务,制作成了一个快照镜像文件。这个过程其实是耗时的,对于灾备方案来讲,也加大了读取快照数据的困难。

 1.2 OpenStack虚拟机备份的解决方案和建议有哪些呢?

虽然OpenStack对备份的支持不是很友好,但也不是完全没有办法。OpenStack本身也提供了一些备份能力,也有一些开发者们在社区中提供针对OpenStack的备份项目,比如: cinder-backup、 Freezer、Karbo等。

关于cinder-backup:主要提供了针对cinder云硬盘的备份能力。在之前的版本中,仅支持备份未被使用的云硬盘,现有的版本中支持对云硬盘快照进行备份,但由于还依赖于存储本身的能力,针对云硬盘快照备份的能力还需要各个厂商持续的补齐。

关于Freezer:Freezer目前提供了一下一些备份能力。

  • FS:基于文件的数据备份
  • Mysql: 对Mysql数据库进行有效的备份
  • MongoDB: 对MongoDB数据库进行有效的备份
  • SQL Server: 对Microsoft sql server数据库进行有效的备份
  • OpenStack Nova instance(nova): 对OpenStack 云主机进行备份
  • OpenStack Cinder volume(Cinder or Cindernative): 对OpenStack 云硬盘进行备份

关于其中nova instance(虚拟机)的备份,其实需要经过 快照 -> 快照生成新的云硬盘 -> 云硬盘生成镜像上传到glance -> 将glance镜像下载到备份目的地。其备份流程涉及到多次数据拷贝的问题,所以其性能其实是不太好的,在庞大的数据量面前,几乎不能有效备份。关于其中cinder volume的备份,其实使用的就是cinder-backup的能力,这里就不展开讲了。

关于Karbo:Karbo其实是一个标准的备份服务编排框架,通过此框架可以真正做到备份服务化。但目前更多的只是框架,针对不同的应用、数据类型的备份目前还需要持续补齐。

平台构建和灾备的几点建议:  
1. 严格控制虚拟机的启动方式为云硬盘启动。由cinder服务来统一管理虚拟机的磁盘,简化云硬盘的管理以及后续的备份。
2. cinder服务尽量选用同类型同型号的存储,并充分评估存储对cinder服务的支持能力。比如:快照能力、快照生成新卷、卷一致性快照组等。
3. 根据业务的数据一致性要求进行备份规划。针对像数据库应用等需要应用一致性的业务,不考虑使用云主机或云硬盘的备份,使用安装代理的方式进行应用级的备份。针对一致性要求低的云主机,考虑使用云主机备份或直接使用云硬盘备份。
4. 一般自建OpenStack平台的话,nova后端计算虚拟化会选用KVM。可以考虑从虚拟化层备份,虚拟化层的备份会影响恢复的新虚拟机的管理问题,这个问题可以尝试通过覆盖恢复的方式来解决。
5. 如果有自己的研发团队支撑的话,可以尝试直接从cinder的后端存储层做备份,处理好云硬盘与存储层卷的映射关系,这样可能会获得更好的备份效果。

 1.3 OpenStack备份厂商如何选型?

目前了解到的支持OpenStack备份的厂商包括:
- CommVault
- 爱数 AnyBackup
- 鼎甲 DBackup

其具体备份效果和能力的话题主可以咨询各备份供应商。

 2 平台本身如何备份?

平台本身的备份主要是需要关注一些管理信息、配置信息、日志信息等,这些内容涉及到的对象一般是文件和数据库。镜像、云主机、云硬盘、对象存储等内容,由于数据量大,建议进行独立的备份管理,可以考虑使用专业的备份软件。

由于OpenStack各个服务之间的独立性,可以使我们针对不同的服务进行单独的备份和管理。主要服务关注的备份目录和文件如下:
nova服务: /etc/nova、 /var/lib/nova、/var/log/nova
glance服务:  /etc/glance、/var/log/glance、/var/lib/glance
keystone服务:   /etc/keystone、/var/log/keystone、/var/lib/keystone
cinder服务:  /etc/cinder、/var/log/cinder、/var/lib/cinder
以上内容仅供参考,如果题主需要备份的话需要进行更深入的调研和测试。

由于OpenStack平台庞大且复杂,没有一劳永逸的备份方案,各个服务、各个组件分开进行备份管理会导致恢复的一致性问题。因此,规划时应充分考虑各个服务的依赖关系,建立合适的备份计划,并定期进行演练。此外,可以考虑使用多节点部署的方式来规避单点故障,保障业务的连续性。当然,如果是要对云平台供应商进行选型的话,各厂商这些管理类信息自备份的能力一般都是会具备的。

收起
软件开发 · 2020-05-10
浏览2135
zhuqibszhuqibs  软件开发工程师 , Adidas
ESX Service Console中本身就有备份程序openstack可以用第三方的进行备份,由于openstack是半成品,有很多第三方公司对其开发了备份工具,比如# Freezer,其实手动备份也是可以的,但备份不太好管理。虚拟机不同于数据库,备份都可以手动进行,用脚本也可以,但用工具会方便很多,最重要的...显示全部

ESX Service Console中本身就有备份程序
openstack可以用第三方的进行备份,由于openstack是半成品,有很多第三方公司对其开发了备份工具,比如# Freezer,其实手动备份也是可以的,但备份不太好管理。

虚拟机不同于数据库,备份都可以手动进行,用脚本也可以,但用工具会方便很多,最重要的版本管理,大家想每天备一个,大量的应用,没有一个好的版本管理,很不方便。

收起
互联网服务 · 2020-05-10
浏览1777
asdf-asdfasdf-asdf  研究学者 , cloudstone
vm clone技术实现vm级别的备份, 然后可到处成模板完成数据保存级别的备份openstack自身平台 三节点集群, 几乎不会因为单机故障导致集群失败如果 规划完善  ,  单一数据中心除了  因自然灾害 导致故障  其他故障都可进行双备份电源,多地域数据中心 来规避...显示全部

vm clone技术实现vm级别的备份, 然后可到处成模板完成数据保存级别的备份
openstack自身平台 三节点集群, 几乎不会因为单机故障导致集群失败
如果 规划完善  ,  单一数据中心除了  因自然灾害 导致故障  其他故障都可进行双备份电源,
多地域数据中心 来规避

收起
软件开发 · 2020-05-09
浏览1776

提问者

任杰
任杰0011
资深云服务经理x云
擅长领域: 云计算系统运维备份

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2020-05-08
  • 关注会员:4 人
  • 问题浏览:3348
  • 最近回答:2020-05-10
  • X社区推广