轻量级私有云存储系统
2016-03-22王圳吴震东
王圳 吴震东
摘要:该系统主要应用于个人用户,提供轻量级私有云存储能力。私有云存储服务可工作于任何TCP/IP网络环境,公网、内网皆可,可随时移动、放置于任何工作、生活场所;支持用户随时随地在公网环境下向私有云存储转发文件数据,实时冗余保存。私有云存储作为公有云存储的辅助,能解决人们一直以来使用云存储的顾虑:在公有云存储环境下数据的隐私性和安全性。系统使用OpenStack Swift对象存储模块构建本地冗余存储系统,利用公网服务器构建统一文件转发平台,实现多用户文件加密传输、转发、移动用户认证、内外网协同通信功能。
关键词:Android;OpenStack Swift;文件传输;私有云存储
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)02-0043-03
1 云存储现状
云存储概念是随着云计算、软件定义存储等新兴产业的发展而流行起来的。通俗地说,云存储就是使用软件来解决硬件带来的数据存储难题的一种技术方案。传统的存储方案,因价格高昂,无法全面应用等问题,不可避免地会有宕机、设备损坏等事件发生。这给数据的高可用带来了极大的不安,但是数据高可用却又是我们迫切需要的。那么我们是不是可以使用软件的方案来解决呢?云存储就是背负着这样的历史使命走上舞台。
云存储在技术层面来说,也可以称为分布式存储系统。这种技术充分使用分布式带来的优势,通过软件,让数据保持一定量的冗余,并且指定同一份数据的冗余必定不在同一个物理硬件之上,许多分布式存储系统默认的冗余量都是3,也就是说每一份数据都会有两个备份,并且备份数据与主数据不建议在同一物理硬件设备之上。这样的话,只要数据的三个载体有一个不损坏,那么数据还是完整可用的。在分布式存储系统的基础之上,再加上人工调配,数据的可靠性得到了极大的提高。此外,分布式存储系统构建在传统的存储设备之上,既能直接管理硬件设备,也能管理传统的专用存储设备。这就屏蔽了底层硬件设备的异构性,管理员也不需要再去考虑硬件异构带来的很多问题。
从技术选型上来说,大型的公有云提供商基本都会自己开发专有的分布式存储系统,而资源有限的小公司基本都会基于开源的分布式存储方案,针对自己的业务场景进行改造,进而形成拥有自主产权的私有分布式存储系统。目前开源的主要方案有Swift和Ceph。从使用上来说,云存储大致可分为:公有云存储、私有云存储、混合云存储。公有云存储就是公有云存储供应商在公网环境下开放统一接口,用户只需付费购买容量服务,就可以使用大型存储的一种形式。这种使用方式的优势就是,用户无需花费太多的成本就能获得云存储带来的各种便利和可靠。但是,公有云存储的缺点也是非常明显的,数据统一放在公有云提供商的IDC中,那么用户基本就失去了对数据的控制权。在upyun最新的活动中,公有云的缺点就体现的一览无余。用户可以免费上传数据,但是访问上传的数据确实按流量收费。这就意味着,数据一旦进入公有云提供商,那么用户基本完全丧失了对数据的控制权。虽然现在很多公有云存储提供商都会与用户签订保密协议,但是,作为银行、金融等对数据的安全性特别重视的企业,这种不可控因素是不可忍受的。因此,私有云存储就有了存在的价值。私有云存储,顾名思义,就是软硬件完全由公司自己把控的数据存储解决方案。这种方案的优势在上述已经说过,其主要缺点就是成本较高,数据可靠性也很难达到公有云存储提供商专业团队所能保证的级别。混合云存储就是同时使用了这两种存储的一种方案,使用公有云存储来备份加密数据,使用私有云存储来满足业务工作。
2 系统原理
轻量级私有云存储总体架构图如图1所示。
移动终端需要实现的功能有:用户登录、文件及文件列表上传、日志信息查阅。公网与内网私有云存储平台之间使用一台文件转发服务器,把通过登录认证的终端客户端传输过来的文件转发到指定的内网服务器,所以公网服务器需要有登录认证模块、文件接收模块、文件转发模块,此外为了使移动终端能进行日志信息、上传文件列表查阅,在公网服务端实现对等功能。内网服务器是公网服务器与私有云存储平台的中间站,所有文件必须通过内网服务器才能上传到私有云存储平台。私有云存储平台采用的是开源产品OpenStack Swift,OpenStack Swift私有云存储平台负责存储文件,并保证文件的高可用性,用户可以通过OpenStack Swift提供的接口对上传的文件进行适当的文件更新操作。
2.1公网转发服务器模块
公网转发服务器部署一个用户认证模块,并预留文件接收套接字接口。用户通过认证后,经预留套接字接口读取来自客户端的字节流。同时,服务器监听来自内网上传服务器的请求,每收到一个请求,即把对应的通信套接字存入套接字栈中;当移动客户端请求上传文件时,服务器从套接字栈中依次出栈预存的通信套接字,衔接两端Socket,实现文件跨越公网、内网的存储、转发。
2.2内网接收及上传模块
内外网需要通信的话,发起者肯定是内网服务器,因为公网服务器不能主动访问到内网。在本模块中,由内网服务器向公网服务器特定的端口发起连接请求,在公网服务器接受到这个请求之后,便始终保持连接。并以两秒间隔保持心跳,维持连接一直存在。当公网转发服务器接收到文件并转发时,内网文件接收及上传服务器便开始接收文件。因对象存储提供的API接口是针对文件上传的,所以接收到的字节流不能直接上传到私有云存储环境,而是要先保存在本地,然后再调用OpenStack Swift API 接口进行文件上传,并列出当前用户所拥有的容器的对象文件列表。
2.3后端云存储模块
有很多主流开源分布式文件存储系统都可以作为私有云环境下的存储系统。OpenStack Swift在非结构化数据存储方面有其更高效的存储效率,因此在本系统基于OpenStack Swift搭建。相关附属组件有:用于用户认证及用户管理的认证服务(Keystone)、用于存储虚机镜像及镜像管理的镜像服务(Glance)、整个OpenStack云计算平台服务的核心计算服务(Nova)、用以提供虚拟网络中心的网络服务(Neutron)、让人可以更加直观地感知到各类服务的界面服务(Horizon)。
3 关键技术
3.1 用户认证服务
认证服务是云存储服务必须的一环,由OpenStack的Keystone组件实现。虽然理论上OpenStack的各个项目之间是相互独立提供相关服务的,例如Nova提供了计算服务,Swift提供了对象存储服务等,但是所有的这些服务均依赖于OpenStack认证服务组件所提供的3A(Account,Authentication,Authorization)服务。
3.2 数据一致性存储服务
数据云存储服务本质上是一个分布式文件存储管理系统,其可以通过自身的代理服务达到存储系统的全局负载均衡及数据一致性。所有数据经缓存服务用一致性散列的方法,将数据分散到各个物理存储区域。Swift的实现中对象环、容器环及账户环这三个数据环的作用显得相当的重要,所有的虚拟分区与物理存储的映射关系都通过在这三个环上执行一致性哈希运算得到。
3.3 对象存储接口调用
OpensStack的对象存储是一个高可用的、分布式的、一致的对象存储。通过使用对象存储的API可以创建、修改和获得对象和元数据,Swift的API是通过REST(Representational State Transfer)网络服务来实现的。使用HTTPS(SSL)协议来和对象存储进行交互,可以用HTTP API调用完成操作,也可以使用支持RESTful API的特定语言的API进行调用。存储对象使用JSON和XML这些支持标准的、非序列化的响应格式的协议进行表达。
4 系统运行
我们对轻量级私有云存储系统进行功能实验,实验环境如下:
手机客户端测试手机:努比亚z5s mini Android 4.4
公网服务器测试运行环境:
IP:42.62.101.111
系统环境: CentOS Linux release 7.1.1503 (Core)
JDK版本: jdk-8u65-linux-x64.tar.gz
MySQL驱动:mysql-connector-java-5.1.37-bin.jar
内网服务器测试运行环境:
系统环境: CentOS Linux release 7.1.1503 (Core)
JDK版本: jdk-8u65-linux-x64.tar.gz
IP:192.168.0.47
移动终端APP运行界面如图2所示,公网服务与内网服务工作情况如图3所示。
参考文献:
[1] 冯驰. 基于Swift分布式存储系统的数据同步与存储研究[D].浙江大学,2014.
[2] 陈成.云存储技术及应用[J].商情,2012(37).
[3] 周震,赵红梅.云计算技术发展历程探究[J].信息通信,2013(6).
[4] 李辉.基于OpenStack的私有云计算平台的研究和实现[D].江西:江西师范大学,2010.
[5]docs.openstack.org.OpenStackCommunity[CP/OL]http://docs.penstack.org/liberty/install-guide-rdo/,2015.12.10/2015.12.12.