基于Openstack的高成熟度SaaS平台
2013-10-17温艳琪宁晨耕裴庆祺
王 游,温艳琪,宁晨耕,裴庆祺
(西安电子科技大学通信工程学院,陕西西安 710071)
云计算诞生于2007年,之后在学术界和商业界产生了较大反响,云计算主要包括IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务),其中SaaS[1]云计算中最影响用户体验的部分。用户使用电脑的本质是使用电脑上的软件,对于广大用户而言,软件所提供的服务才是他们对电脑的需求,SaaS的发展将直接影响云计算的普及。
SaaS体系[2]建立在IaaS层之上,建立标准化、高成熟度的SaaS的首要条件是可扩展、高自由度的IaaS的建立,在 IaaS建设方面,OpenStack[3]发展迅速,大批企业都开始使用和支持OpenStack,早在2010年10月,微软表示支持OpenStack与Windows Server 2008 R2的整合,近日,IBM宣布推出基于OpenStack的私有云方案。在此之前,包括惠普、VMware等企业也均发起推出OpenStack的解决方案或者提供支持。OpenStack项目是由OpenStack基金会管理的一套开源的云平台搭建工具包,包括 Keystone、Nova、Glance、Horizon、Swift、Cinder、和Quantum这7个组件,OpenStack正成为事实上的行业标准,因此,本文基于OpenStack搭建IaaS层。
结合SaaS的发展与成熟度模型进行研究,本项目建立了基于OpenSatck第四级成熟度模型的SaaS平台,基于软件实例的扩展服务,满足用户的各种需求。为高成熟度SaaS平台的建设提供重要参考价值。
1 方案设计
1.1 SaaS模式分析
当前国内SaaS模式的代表性产品是金蝶和Salesforce的CRM(客户关系管理系统)[4]。这类系统属于第三级成熟度SaaS模式,其特点是一次开发一次部署,这类产品仅是具备第三级成熟度SaaS的特征,能满足用户数量的伸缩性,并不能满足软件类型的可扩展性。
本文所建立的SaaS系统中的服务由软件实例提供,用户不仅可以定制使用软件中的特定模块,也可以更换、增加或减少软件实例的类别,属于第四成熟度的SaaS体系。通过这种模式,用户无需下载和安装软件,既节约了硬盘又避免了程序兼容性问题,实现了项目中所有软件“随时随地跨平台使用”,与当前市场上面向特定用户的仅具备SaaS特点的产品有着本质区别。
1.2 OpenStack简介
SaaS 平台的性能一定程度上取决于其所依赖的IaaS,OpenStack是专业 IaaS平台搭建工具包,Nova(OpenStack Compute)是运行在主机操作系统上潜在的虚拟化机制交互的驱动,并提供基于Web的API功能[5]。Swift(OpenStack Object Storage)提供可扩展的对象存储系统,可以用来创建基于云的弹性存储。Glance(Image Service)是虚拟机镜像的存储、查询和检索系统。Keystone(OpenStack Identity)是服务认证组件,为运行OpenStack Compute上的OpenStack云提供了管理员认证和OpenStack服务注册等服务。Horizon(OpenStack Dashboard UI)是OpenStack的Web管理控制台,可以通过Web界面访问的方式来操作管理网络和虚拟机实例等。Quantum提供了虚拟机集群网络组建和IP地址管理服务[6]。
1.3 架构设计
本文所提出SaaS平台通过B/S架构提供服务,用户打开网页注册账号后在存储层中生成用户资并分配存储空间。
高成熟度SaaS模式要求无限扩展、能够满足用户的变动,因此本项目采用层次化的设计理念设计架构,项目包括提供操作界面的服务层、提供软件运行环境的设施层以及存储虚拟机镜像信息的存储层,本文采用Web 2.0技术构造服务层,基于 OpenStack中的Nova建设设施层,存储层则使用OpenStack中的Switf进行搭建,项目架构设计如图1所示。
图1 基于OpenStack的高成熟度SaaS架构
用户通过浏览器登录账户后,向服务端发送服务请求,服务端打开设施层中虚拟机上的软件实例并建立用户与软件实例对应的Agent映射,从而提供服务。
在软件的使用中将产生大量的数据,这些数据镜像将存储到存储层中,采用Swift进行搭建的存储层具有高扩展性,Glance组件能够检索虚拟机镜像,从而设施层能够快速读取用户所需的软件服务所在的虚拟机。
2 关键技术及其实现
2.1 基于Nova的设施层
设施层的建设需要部署Keystone、Nova和Quantum用于虚拟机的管理以及网络组建。本文采用软件包方式安装Keystone与Nova。设施层搭建步骤如下:
(1)Keystone部署流程。在部署0penStack过程中,首先要安装Keystone并在Keystone中注册 Nova、Swift和Glance服务,使得各项服务可以被授权和使用。Keystone的部署流程如图2所示。
图2 Keystone部署流程
(2)Nova部署流程。Nova的安装包括nova-compute、nova-network、nova-scheduler、nova-api和 novavolume等子部件。Nova的部署还包括配置时间同步与创建并同步Nova数据库。图3为Nova的部署流程。
图3 Nova部署流程
2.2 基于Web 2.0的服务层
2.2.1 前台设计
项目采用网页界面与软件界面关系映射的方式进行交互,具备网页交互的速度。网页界面相比于软件实例的界面更具备表现灵活性,更方便添加信息。网页界面采用HTML5与CSS3进行设计,与软件实例的界面保持一致,在功能上定义映射关系。用户对网页界面的操作由Agent代理转化为用户对软件实例的操作。
采用Ajax技术,网页客户端能够与云端进行无刷新交互,有效增强用户的体验效果,同时,Ajax是一种独立于Web服务器软件的Web浏览器技术,不受硬件设备的影响。
2.2.2 Agent代理
项目采用Agent代理技术处理客户端网页界面对虚拟机中软件实例的操作,这种方式能够避免用户直接操作虚拟机及软件实例,有效保证了SaaS体系的安全性。利用多线程技术,一个Agent维持多个映射,Agent运行时序如图4所示。
图4 Agent代理时序图
网页界面的操作请求和数据发送到对应的Agent,再由Agent根据用户与软件实例的映射关系、操作类型以及数据生成操作指令发送到相应的软件实例上,操作指令触发对应的控件进而软件实例运行相应的服务,Agent感应软件实例的状态并将状态与结果反馈给网页界面,从而完成用户对软件实例的操作。
2.2.3 资源调度
在云计算中,资源调度模型直接影响云计算平台的资源利用率和可扩展性,本项目设计基于资源占用率的检测程序,用户请求新的软件实例或释放软件实例都将触发检测程序,检测程序在运行过程中进行进程保护,以避免异常[7-8]。
定义 正在运行的虚拟机实例全体由集合{VM}表示,虚拟机资源占用包括内存与CPU占用,内存由m表示,CPU由c表示,为保证用户体验效果,虚拟机资源占用由虚拟机中软件实例的最大需求决定。软件实例的最大资源需求用p表示,其中max表示虚拟机中软件实例的个数
资源调度算法流程如下:
(1)增加软件实例。1)用户打开响应网页界面时,服务端的检测程序被触发。2)检测程序按照资源剩余量递减的方式排序虚拟机集合,得到栈VM[n]。3)判断剩余量最小的虚拟机VM[max]能否容纳新增软件实例的资源需求。判断成功则转向4);失败则转向5)。4)在虚拟机VM[max]中开启新的软件实例,转向步骤7)。5)max>0则自减,转向步骤3);max等于0则转向步骤6)。6)开启新的虚拟机,压入栈VM[n]中,转向步骤4)。7)更新Agent代理中的映射列表,检测程序挂起。
(2)减少软件实例。1)当用户关闭网页界面时,界面所映射的虚拟机中软件实例被关闭,触发检测程序。2)检测程序按照资源剩余量递减的方式排序虚拟机集合,得到栈VM[n]。3)判断VM[max-1]中资源剩余量能否满足VM[max]中的软件实例需求,满足转向步骤4),不满足则转向5)。4)在VM[max-1]中开启软件实例,迁移VM[max]中的用户数据。数据迁移成功后关闭虚拟机并弹出VM[max],max自减并转至步骤3)。5)更新Agent代理中的映射列表,检测程序挂起。
2.3 基于Swift的存储层
存储层的建设需要部署Swift以及相应的镜像检索引擎组件Glance。Swift与Glance采用软件包方式安装。存储层的安装、配置的步骤如下:
(1)Swift部署流程。
Swift组件的配置流程如图5所示。
图5 Swift部署流程
首先需要配置代理服务器(pmxy server),对于每一个请求,代理服务器将在环(ring)中查找用户(account)、容器(container)或者对象名(object),将请求对应到相应的服务器上。对代理服务器的配置主要有代理服务器的绑定地址和端口以及Keystone对应的地址和端口。完成代理服务起的配置后,需要创建环(ring)文件并配置存储节点。
(2)Glance部署过程。
Glance组件用于检索存储层所存储的虚拟机镜像,其安装过程如图6所示。
图6 Glance部署流程
3 系统测试与优势分析
3.1 系统测试
基于Openstack的高成熟度SaaS平台能具备良好的性能与可扩展性。平台上已部署VC++6.0,Dopdf,Matlab等软件,操作流畅,可以满足用户对软件的需求。
以本项目中VC++6.0软件为例进行测试,用户只需打开浏览器即可使用VC++6.0软件进行编程。经谷歌插件测试,本系统客户端网页的内存使用和百度、QQ邮箱等网页内存占用率如表1所示,能够满足用户体验。
表1 网站测试数据表 单位:kB
图7中,百度和天猫等网站的内存占用在30 000 kB以上,VC++6.0网页(本系统的客户端)的内存占用是28 772 kB,本平台的使用并不占用较大内存。本平台软件完全可以取代PC机上安装的VC++6.0软件,图7是内存测试图。
图7 内存测试图
3.2 优势分析
本项目属于第四级成熟度模型SaaS体系,具备可伸缩的多租户架构,能够实现一次开发无限扩展。在用户数量大增的情况下,无需更改架构,只需要增加硬件设备便可以满足需求。
相比于金蝶的CRM,本项目能够实现应用程序级的扩展,并不局限于CRM,在灵活度与市场生命力上具有较大的优势[9]。
在当前网速条件下,图像传输速率远不及网页标签的更改速率,相对于一些在线Office产品所采用图像传输的交互方式,本项目所采用网页界面与软件实例界面映射的交互方式具备更好的用户体验。
4 结束语
本文分析SaaS模式并设计了第四级成熟度模型的SaaS平台,层次化的架构有效提升了性能与可扩展性,采用网页界面与软件界面功能映射的交互方式能够有效降低了平台对网速的需求,增加了用户体验。在用户大量增长的情况下,仅需要增加硬件设备,并不需要更改架构,维护简单。基于OpenStack搭建的IaaS具备更好的系统兼容性,能够运行各类虚拟机,OpenStack提供了完善的IaaS建设与管理工具,使得SaaS平台的搭建与管理简单可行。本项目不仅能够满足多租户的要求,而且更够扩展软件类型,突破了传统SaaS产品的局限性。
[1]许四平.SaaS软件即服务模型研究[J].硅谷,2009(4):9.
[2]金珊,吴国芳.基于SaaS模式的SOA服务分析与设计[J].信息系统工程,2009(7):115-118.
[3]李小宁,李磊,金连文,黎德生.基于OpenStack构建私有云计算平台[J].电信科技,2012(9):1-8.
[4]齐少磊,林惠苹.一种适应SaaS多租户模式的数据迁移方法[J].计算机工程与应用,2011(32):65-70.
[5]李知杰,赵健飞.OpenStack开源云计算平台[J].软件导刊,2012,11(12):10-12.
[6]李晓娟.OpenStack能否引领云革命[J].金融科技时代,2012(11):47-49.
[7]董鑫.开源云计算技术应用[J].计算机光盘软件与应用,2011(16):17.
[8]邓红,王东兴.基于开源云平台OpenStack的存储分析[J].黑龙江科技信息,2012(32):134.
[9]刘尧.高成熟度SaaS模型及其在CRM系统中的应用研究[D].济南:山东大学,2010.