摘 要: 随着网络和云计算的快速发展,出现了越来越多的网络资源,对网络资源的共享、管理以及按需分配是云计算的一个重要的研究方向。PaaS平台即服务是云计算的一个重要服务类型,无论是对学校研究还是企业应用都有着很大的吸引力。利用PaaS平台,可以降低项目开发的成本和周期,还可以提高项目对外提供服务的质量。针对现有的公共PaaS平台不适合大连理工大学做研究以及使用的状况,设计并实现了一套基于Cloud Foundry的PaaS平台。实践表明,本平台不仅有效地利用了资源,还使得部署其上的云应用更有弹性。
关键词: PaaS;Cloud Foundry;应用程序部署;私有云平台
云计算[1]是一种新的服务模式,由一系列可以动态升级和可被虚拟化的资源组成,这些资源可被所有云计算用户共享并方便地通过网络访问。云计算的服务模式分为3种:由底层硬件或虚拟机资源构建的基础设施服务(IaaS);构建在云基础设施上,提供云计算应用服务开发平台和环境的平台服务(PaaS);基于云平台开发的各类应用服务的软件服务(SaaS)。在这3层架构中,PaaS[2]扮演了一个非常重要的角色,它的本质是一个特殊的网络资源中心,是一个开放的平台,通过Web API的形式向外提供服务,这样应用程序开发人员就无需再考虑硬件资源以及其他所需的服务框架。目前比较流行的PaaS云平台有Google App Engine、Microsoft Azure Service和Amazon Web Services,但是这些平台都有一些局限性,比如Google App Engine只允许部署用Java和Python开发的应用程序,Microsoft Azure Service只允许部署使用.NET框架开发的应用程序,这对一些以前遗留的系统来说是不可用的。而且使用公共云存在一些安全隐患,所以,提供一个旨在为校内师生服务的私有云[3]平台是非常有必要的。高等教育云计算是云计算应用的重要领域,将高等教育建设所必需的基础设施以及软件服务由Cloud Foundry[4]集成一个PaaS级的平台,向学生、实验室提供以租用为形式的服务。这样不仅充分利用了学校的资源,还节省了开发一个项目的资金和时间。
1 Cloud Foundry云平台
Cloud Foundry是VMware于2011年4月12日推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行环境、云平台及应用服务,这些框架包括Spring for Java、.NET、Ruby on Rails、Node.js、Grails和Scala on Lift,现在又新加了Python、PHP等,大大提高了平台的灵活性。Cloud Foundry是基于IaaS之上的、支持Cloud Foundry的IaaS平台可以是Open Stack,也可以是vSphere。与其他的PaaS平台(Google的Google App Engine、Amazon的Amazon Web Service等)相比,它有更好的灵活性。使用Cloud Foundry可以架构自己的公有云平台或私有云平台,是高校架构云平台的首选。Cloud Foundry是由相对独立的多个模块构成的分布式系统,每个模块单独存在和运行,各模块之间通过消息机制进行通信。下面介绍Cloud Foundry中的主要的模块。
(1)通信模块
如图1所示,Cloud Foundry是由许多模块组成的,这些模块间的通信主要是由NATS实现的。NATS是一款基于EventMachine,使用“发布-订阅”机制的轻量级消息中间件。EventMachine通过实现Reactor设计模式解决了Ruby语言与生俱来的并发能力不足的问题,也为NATS带来了良好的并发请求处理能力。NATS不对消息做持久化,所以对消息的匹配和订阅过程相对高效。例如Router这个组件,其作用是对外部发送进来的请求进行路由,以使整个平台负载均衡,发送给Router的消息使用的正是NATS。由此可以看出NATS的重要性,它是整个平台良好运作的基础。
(2)应用程序执行模块
应用程序的执行是在Dea这个组件上进行的,启动一个APP时,Dea会下载一个Droplet副本,然后使用这个副本来运行。Droplet是指把一个应用程序的源代码及Cloud Foundry配置好的运行环境,再加一些控制脚本如start/stop等,全部打包在一起的tar文件。如果一个应用程序要扩展,就会将这个Droplet多复制几份,然后下载到更多的Dea服务器上运行。
(3)控制模块
控制模块是由Cloud Controller构成,负责与客户端交互的服务器端,它收到客户端发来的指令后发消息给各个模块,管理整个云的运行,相当于Cloud Foundry的大脑。
2 基于Cloud Foundry的云平台的设计
2.1 Cloud Foundry服务平台(CFP)的架构
Cloud Foundry服务平台的架构如图2所示。
2.2 功能分析
CFP是旨在为以教育和研究为目的的师生提供服务的开发平台,在这个平台上集成了众多的框架与第三方服务,这些框架包括Java Spring、.NET和Ruby on Rails,服务有Mysql、MongoDB、Redis。本平台有成本低、可扩展性好、服务质量优的特点。CFP架构从下到上主要分为以下几层:
(1)硬件设施层
该层是为整个Cloud Foundry平台提供硬件设施的保障,包括存储设备、网络设备、计算设备等,通过虚拟化整合异构平台。
(2)IaaS级平台
Cloud Foundry是PaaS级的平台,自然可以部署在IaaS级的平台上,在该层上实现了资源的调度、分配,IaaS平台可以有效地统一管理虚拟资源。CPI接口是封装了IaaS级的API,通过CPI,PaaS可以调度由IaaS管理的虚拟资源。
(3)Cloud Foundry应用开发平台
PaaS平台又可分为应用开发平台、应用运行平台、数据库即服务、服务集成平台、应用中间件平台、流程服务平台等,这里所搭建的Cloud Foundry平台是应用开发平台[5],是为校内师生开发、部署系统所服务的。这一层平台是整个架构的核心,师生在申请服务时即可在这一层得到所需的资源。CFP根据用户上传的应用程序动态地分配资源,自动匹配应用程序的框架。如果应用程序有连接数据库的要求,本平台会根据现有的数据库服务让用户选择其中的一个。在本平台上的每一种服务都是可移植的,因而部署在CFP平台上的系统非常容易迁移。
(4)用户访问层
本平台的用户分为维护CFP平台的维护人员、开发应用程序的人员和应用程序的最终用户3种。本文所指的用户主要是指应用程序开发人员。用户在向管理员申请到资源后,可用VMC这个客户端工具把应用程序部署到平台上,如果用户想要扩展应用程序的规模,或者要对应用程序进行其他方面的改进,使用这个客户端工具都是非常方便的。终端用户通过Browser访问应用程序,URL地址在部署项目时生成。
3 CFP平台的管理
CFP的使用流程如图3所示。首先,用户需要登录Web管理系统实名注册,提交给管理员审批,通过之后才能申请资源。通过审批之后,就可以用VMC/STS工具把应用程序部署在CFP平台上了。本平台会根据用户上传的应用程序为其自动分配资源。终端用户指的是最终使用应用程序的用户,可以通过Web访问应用程序,也可以通过移动设备访问[6]。
表1显示了实际部署在CFP上的两个应用程序。
本文从现有的云计算技术出发,根据目前PaaS所面临的状况以及高校项目中实际的需求,利用开源的项目Cloud Foundry设计并开发了一套PaaS级服务云平台,利用本平台,校内师生可以直接把项目部署在其上,基于本平台的应用程序易于构建和维护,还可以根据用户的访问量和数据存储需要进行扩展。最后,经过验证,本平台确实可以承载多种语言开发的应用程序,并能很好地利用资源,从而达到弹性计算和灵活部署应用程序的目的。
参考文献
[1] 吴吉义,平玲娣,潘雪.云计算:从概念到平台[J].电信科学,2009(12):23-30.
[2] Lv Chengtong,Li Qing,Peng Junjie,et al.PaaS:a revolution for information technology platforms[A].2010 International Conference on Educational and Network Technology,2010.
[3] 周详.私有云构建中资源和数据管理的研究[D].北京:北京工业大学,2012.
[4] Cloud Foundry[EB/OL].[2013-09-17].http://www.cloudfoundry.com/.
[5] LAWTON G.Developing software online with Platform-as-a service technology[J].Computer,2008,41(6):13-15.
[6] KIBEL S,WATANABE S,KUNISHIMA K,et al.PaaS on IaaS[C].2013 IEEE 27th International Conference on Advanced Information Networking and Applications,2013.