OpenStack 云环境数据备份解决方案
嘉宾介绍:刘丹,目前是上海大学计算机学院软件工程专业研究生,2014年9月开始入学,2017年4月毕业。课题组主要研究方向是桌面虚拟化,以及VDI的GPU使用策略。今年5月开始至今,开始加入开源项目freezer的研究及开发。
分享摘要:众所周知,OpenStack 数据备份过程中的存在很多不足:
(1)Nova Cinder备份方式的不统一、不方便管理;
(2)无法进行有效的周期性任务数据备份;
(3)没有好的备份链管理;
(4)对旧备份的删除不智能等。
所以对以上问题,freezer正是为了解决这些问题引入openstack,从事数据备份工作,归属于openstack社区一个官方项目,旨在为openstack提供数据备份环境的解决方案
分享实录:
大家好!我今天主讲的题目是:OpenStack 云环境数据备份解决方案。
先自我介绍下,本人是一名在校研三的学生。来自上海大学,计算机工程与科学学院。今年也是找工作的应届生大军一员,明年4月毕业,我的邮箱是:wooddandan@163.com,欢迎大家找我交流技术,也欢迎HR联系我^_^!
课题组主要是做vdi,即openstack+kvm+spice这一套,后面研究过GPU的相关使用策略问题。这个方面有兴趣可以相互交流,本人学生还没深入下去。进入今天的主题《云环境数据备份解决方案》。自今年5月开始接触项目freezer。这里之所以要提出这个项目,我在从事开源项目freezer开发,团队中于今年9月初,一起做openstack freezer项目的99cloud工程师杨亚鹏被正式任命为freezer项目的core,成为了该项目的第一个中国core。
OpenStack的架构我就不解释了,做这个的都应该很了解了。且你们理解肯定比我好。
这里我先讲下几个backup,一个是openstack虚拟机数据备份。
调用nova api 对虚拟机制作快照
快照文件即是虚拟机的全量备份
将生成的快照文件上传进Glance 中并更新数据库
使用该快照文件即可以直接创建与原vm相同数据的vm
OpenStack 云硬盘数据备份--cinder snapshot 方式
使用 cinder snapshot方式对volume备份
Usage:cinder snapshot-create <volume>
还原方式:
Usage:cinder create --snapshot-id <snapshot-id>
OpenStack 云硬盘数据备份--cinder backup 方式
使用cinder backup 方式对volume 备份:
Usage: cinder backup-create <volume>
还原方式:
Usage: cinder backup-restore <backup-id>
通过这些操作可以实现某些backup,但是很容易发现,这些操作存在不足,对于开发人员还好。但是,这些基本不能面向用户。那么怎么办。
我们先提出存在的问题:
Nova Cinder备份方式的不统一、不方便管理;
无法进 行有效的周期性任务数据备份;
没有好的备份链管理;
对旧备份的删除不智能等
对于这一系列问题,官方引入了一个项目:freezer
首先介绍下freezer项目:
freezer是一套开源的备份软件,它能帮助你自动的进行数据备份和还原动作。
目前freezer已正式引入openstack,从事数据备份,是openstack社区中一个官方项目,旨在为openstack提供数据备环境的解决方案。
freezer从openstack liberty版本开始引入支持,以前的版本支持需要做微量的修改。
freezer是一套开源自动备份以及还原的服务(backup and restore as a service),它不仅可以自动备份以及还原数据,而且可以对 备份的数据进行加密处理。
同时,freezer作为openstack社区承认的第一官方容灾项目。
用我们扬core的理解就是:数据无价,备份万岁。我给大家截个图:
freezer支持的备份类型有很多:
FS
Mysql
MongoDB
SQL Server
Openstack Nova instance
Openstack Cinder volume
Freezer编排cinder备份机制 (cinder)
Freezer调用cinder-backup 备份机制(cindernative)当然这里很多功能需要自己开发,像cindernative。简单的介绍就是通过在freezer中编写相关函数接口,通过调用cinderclient来实现其功能。
上图介绍了freezer相关的特性,接下来介绍下freezer的主要组件:
freezer-web-ui:集成在Horizon中,主要用于向freezer-api发送请求;
freezer-api: 主要用于向freezer-scheduler存储和提供metadata,也会存储一些freezer的session信息,直接连接数据库服务。
freezer-scheduler: freezer-scheduler主要运行在需要备份的节点上,选择freezer-job创建需要执行的动作,并发送给freezer-agent 执行,将job的状态以及metadata信息汇报freezer-api。
freezer-agent: 主要用于用户的备份,还原,执行命令等需求,接受freezer-scheduler的任务调度执行。
上图为freezer的总体架构
create job
这里我给下截图:
建立job前要设定action,即backup的相关信息
backup做好后可以再backups中看到。有时间间隔,图上应该可以看到时间。
后台可以看到success,然后list出来。
如果想采用社区的版本,这个我要指出来一下,ui上还是有很多的bug需要修复。还有很多坑要爬的。
后台的部分很多需要自己写,这也是freezer目前存在的一个弊端。也算是一个优势,可以根据自己需求来设计。
这些算是不足地方,有兴趣的可以加入这个大家庭。我算是跟着中国第一个core一起做这个项目的,当然还是希望这个项目能做的很好很完美。一些未来的期待吧
一些未来的期待吧!
目标:作为一个最终用户需要将云中的所有数据和metadate信息全部备份,在数据丢失后需要将备份在原来的云平台或新的云平台中进行全部还原。
备份项
Keystone : 该租户下所有用户存储于OpenStack keystone的所有数据
Nova: 该租户下所有用户在OpenStack平台上的所有虚拟机
Glance: 该租户下所有用户在OpenStack 平台上的所有镜像
Swift: 该租户下所有用户在OpenStack平台对象存储上的所有数据
Neutron: 该租户下所有用户在OpenStack 平台上所利用的所有网络资源网络拓扑等
参考链接:
OpenStack 租户级别备份
https://blueprints.launchpad.net/freezer/+spec/tenant-backupCeph 存储的支持
https://blueprints.launchpad.net/freezer/+spec/ceph-supportFreezer-DR OpenStack Compute Node HA
https://github.com/openstack/freezer-dr.gitPython-freezerclient client 从freezer中独立
KVM云社区微信群加入,联系北极熊:
KVM社区QQ群,99.99%纯技术交流气氛
QQ 1群:434720759(已满)
QQ 2群:131961942,加入密码大写KVM
1000人VMWare技术交流群:494084329,加入密码小写vm
OpenNebula QQ群:495571573 加入密码Nebula
2000人OpenStack开发纯技术群: 334605713 加入密码nova
Cloudstack纯技术交流群:515249455密码cs
2000人桌面云行业讨论: 484979056 加入密码大写VDI
2000人超融合行业讨论群:65779632 加入密码大写HC
2000人云技术招聘求职群: 279875515 加入密码hr