数字图书馆私有云平台的构建研究和应用开发
马少兵, 马自卫
北京邮电大学计算机学院 北京 100876
摘要

介绍数字图书馆私有云平台的架构、详细阐述DLCloud云基础设施、Euca2ools中间件、基于GridSphere门户子系统的功能与机理。在数字图书馆私有云平台架构实现的基础上,详细介绍数字图书馆应用模板的建立和数字图书馆应用系统的运行方式等。最后对数字图书馆云平台进行总结,并对下一步工作提出展望。

关键词: 云计算; Eucalyptus; GridSphere
中图分类号:G250
Construction of Digital Library Private Cloud Platform and Application Development
Ma Shaobing, Ma Ziwei
College of Computer,Beijing University of Posts and Telecommunications,Beijing 100876,China
Abstract

This article describes the architecture of digital library private cloud, and detailly introduces the functions and mechanism about the DLCloud infrastructure,Euca2ools middleware,GridSphere subsystem. Then it describes the establishment of digital library templates, and the running methods based on the architecture of the digital library private cloud platform. Finally, the authors summarize cloud platform for digital libraries, and give some suggestions for later research.

Keyword: Cloud computing; Eucalyptus; GridSphere
1 引 言

随着网络的普及以及用户计算机应用水平的提高,作为信息资源中心之一的图书馆在利用网络为用户提供方便快捷的服务、提升图书馆社会地位的同时,也遇到了许多困境和挑战[ 1],主要表现为系统部署的重复性和单一服务器承载单一服务,造成资源利用率低的问题。

针对上述问题,笔者构建了数字图书馆私有云平台。该数字图书馆私有云平台以Eucalyptus开源基础设施、中间件、Portlets技术为基础,通过虚拟机资源和操作系统模板等方式,向不同用户提供图书馆硬件资源和软件资源服务。在基于数字图书馆私有云平台架构下,利用其提供的服务进行数字图书馆应用的开发研究,并取得了预期的效果。

2 数字图书馆私有云平台的构建

为提供虚拟机和操作系统资源等各类服务,满足用户的需求和数字图书馆应用开发的研究,并且使得云计算更加易于在数字图书馆方面得到推广应用,笔者构建了数字图书馆私有云平台,其框架结构如图1所示。

图1 数字图书馆私有云平台的架构

图1可知,一个完整的数字图书馆私有云平台由三部分组成:GridSphere门户子系统、Euca2ools中间件、DLCloud(Digital Library Cloud)云基础设施。

(1)用户使用各种终端,利用浏览器访问GridSphere门户子系统,管理和使用DLCloud云平台提供的虚拟机资源、操作系统资源或者开发工具等。

(2)GridSphere门户子系统是用户访问数字图书馆私有云平台的入口,由应用服务器Tomcat 所支撑,其功能是用户管理、虚拟机管理、制作操作系统模板、上传操作系统模板管理等。采用Portlets插件开发技术,减少了数字图书馆私有云平台管理与使用界面开发的工作量。

(3)Euca2ools工具是GridSphere门户子系统与DLCloud云平台通信的中间件,兼容Amazon EC2[ 2]接口,通过REST/Query-based API协议访问Amazon弹性云或DLCloud云平台。其功能为:虚拟机运行管理、操作系统模板管理、IP管理、安全管理、存储管理等[ 3]。通过输送Euca开头的相应命令,对DLCloud云平台进行操作。

(4)DLCloud云基础设施是整个架构的核心模块,为数字图书馆私有云平台提供操作系统、虚拟机等资源。由Eucalyptus(Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems)[ 4]开源云平台,以及硬件资源两部分构成。

2.1 DLCloud云基础设施

(1) Eucalyptus开源云平台

Eucalyptus是DLCloud云基础设施的核心软件,它是加利福尼亚大学的Daniel Nurmi 等人实现的,是一个用于实现云计算的开源软件基础设施[ 5],由云控制器CLC、集群控制器CC、Walrus、存储控制器SC、节点控制器NC等5大组件构成,如图2所示。相比于其他开源云平台,例如AbiCloud、10gen MongoDB 和Nimbus等。它易于安装、部署、维护,且能够很好地提供目前图书馆应用开发研究所需的硬件资源(包括虚拟服务器、网络、存储设备等)、软件资源-操作系统、开发工具等。

图2 Eucalyptus架构

图2可知,Eucalyptus框架是由一个云控制器CLC、一个Walrus、多个存储控制器SC、多个集群控制器CC、和由集群控制器CC控制的多个节点控制器NC,以及承载的不同类型、不同配置的虚拟机组成。

①用户:管理员用户、开发用户和一般体验用户,通过浏览器或Euca2ools工具(该工具支持SOAP协议、REST协议)使用与管理上述组件的功能。

②云控制器CLC:搜集当前整个平台的资源信息(虚拟机资源、网络资源、存储资源等)、实现平台的资源调度和将用户对资源的使用请求转发到下一层的CC和SC上等[ 6]

③Walrus:存储操作系统模板的对象文件和元数据信息,以及快照备份文件。

④集群控制器CC:收集位于本集群的计算资源信息、对本集群的计算资源进行调度和对该网段的网络进行管理以及维护有关运行在节点控制器NC的全部信息,并负责控制这些虚拟机实例的生命周期[ 6]

⑤存储控制器SC:存储卷文件,该卷文件是用户存储在虚拟机的数据,例如数据库文件等。

⑥节点控制器NC:负责在其节点上运行的虚拟机实例的管理,包括启动、重启和终止;虚拟机实例日志信息;在本地备份虚拟机实例的镜像文件、查询和控制本节点的系统软件资源,以回应上层CC组件的查询和控制等[ 6]

(2)硬件资源

DLCloud云基础设施硬件环境,由一台普通物理机和两台刀片机组成,利用Eucalyptus开源平台,将刀片机的CPU、内存、硬盘等虚拟化,通过集群Cluster1收集相关资源,返回给云控制器,最终通过Euca2ools中间件和GridSphere门户子系统服务器将资源提供给用户使用。图3为数字图书馆私有云平台物理实现的实例图。

图3 数字图书馆私有云平台物理实现的实例图

①59.64.145.241:普通PC机,部署GridSphere门户子系统和Euca2ools中间件。

②59.64.145.234:普通PC机,安装了Eucalyptus的4大组件:云控制器CLC、集群控制器(Cluster1)、Walrus、存储控制器SC。

③59.64.145.235,59.64.145.236:刀片服务器(每台刀片机配置为:内存为4GB,CPU为2*4核,硬盘为140GB)。安装了节点控制器NC,受集群Cluster1控制。每台刀片机承载着不同类型的虚拟机,目前分为5类,分别为m1.small、c1.medium、m1.large、m1.xlarge、c1.xlarge,还可以根据系统需要添加或删除相应类型。图4为集群Cluster1(59.64.145.234)能够提供的虚拟机数目。

图4 集群Cluster1下的虚拟机数目

可以看出,能够提供m1.small(CPU:1,内存:128MB,硬盘:2GB)类型的虚拟机数目为32台,配置最高的c1.xlarge(CPU:4,内存:2GB,硬盘:20GB)类型的虚拟机为4台等,但是各个类型之间的虚拟机数目不能相加。此外,由图3可知,每台虚拟机的IP包括公共IP和内部IP,例如VM1,它的公共IP:59.64.145.220,内部IP:172.19.1.2(这个IP不同于127.0.0.1),仅仅用于虚拟机内部通信。用户访问或使用这台虚拟机,只能通过公共IP。

由此可见,利用Eucalyptus开源云平台,可以灵活满足管理用户、开发用户、一般体验用户对硬件资源的需求。

2.2 Euca2ools中间件

Euca2ools工具是GridSphere门户子系统与DLCloud云基础设施通信的中间件,由虚拟机运行管理、镜像管理等功能组成。

(1)虚拟机运行管理

虚拟机运行管理是指对虚拟机启动、终止、重启等的操作。其命令格式为:

euca-run-instances [-n 同时启动虚拟机数目] [-t 虚拟机类型] 文件系统ID //利用当前操作系统模板文件,启动n台相应类型的虚拟机

euca-terminate-instances 文件系统ID //终止当前虚拟机

euca-reboot-instances文件系统ID //重启当前虚拟机

利用GridSphere门户子系统虚拟机运行管理界面,如图5所示,启动一台虚拟机,说明Euca2ools的作用。

图5 虚拟机运行管理界面

可以看出,虚拟机运行管理界面包含:文件系统ID,操作系统名称,文件系统大小,下拉框中虚拟机类型为m1.small、c1.medium、m1.large、m1.xlarge、c1.xlarge等,同时启动的虚拟机数目为1至5。

现选择emi-CC131016、m1.small、1等参数后启动虚拟机,参数传递给Euca2ools工具进行整合,代码如下:

Process process = Runtime.getRuntime().exec("euca-run-instances"+" -n"+" "+1+" -t"+" "+m1.small+" "+ emi-CC131016)

发送给DLCloud云基础设施处理,返回所需虚拟机,如图6所示:

图6 当前正在运行的虚拟机界面

可以看出emi-CC131016对应的虚拟机号:i-440C06ED、类型为m1.small、操作系统名称为Ubuntu、IP为59.64.145.220,以及该虚拟机的用户名和密码等相应信息,为GridSphere门户子系统下的虚拟机应用管理提供服务,一般用户或者开发用户利用这些信息,就可以登录该虚拟机。按照相同的方法,启动两台c1.xlarge类型、操作系统为Win-2k3的虚拟机,以及一台WinXP的虚拟机。

当因为某些原因需要关闭虚拟机时,可以使用终止按钮,终止当前虚拟机。

(2)镜像管理

镜像管理是指对Walrus组件的操作系统模板进行查询、删除、上传等操作。例如查询、删除命令行格式为:

euca-describe-images //查询操作系统模板

euca-deregister 文件系统ID //删除文件系统ID的操作系统模板

其处理流程与虚拟机运行管理类似,用户通过GridSphere门户子系统执行查询、删除等操作,完成后,数据流通过Euca2ools整合,然后送至DLCloud云基础设施相应组件进行处理,最后返回用户结果。

在整个数字图书馆私有云系统中,门户子系统的数据流都是由Euca2ools工具处理完成后,送至DLCloud云平台,然后返回处理结果。它作为门户子系统与DLCloud云平台交互的接口,起到了中间件的作用。并且为实现GridSphere门户子系统对DLCloud云基础设施的人机接口,利用Portlets技术对当前Euca开头的命令进行操作,以达到对DLCloud云基础设施管理、使用的要求。

2.3 基于GridSphere门户子系统的构成与实现

为了便于用户对Euca2ools中间件的控制与使用,设计了基于GridSphere的门户子系统,解决用户对DLCloud云基础设施的管理与使用请求。其主要功能为:用户管理、创建操作系统模板、上传操作系统模板、虚拟机管理等。

(1)用户管理

为了满足不同用户对数字图书馆私有云平台使用的需求,利用GridSphere门户自带的用户管理界面,添加了三类角色:Admin、Users、Developer,分别对应管理员用户、一般体验用户、开发用户。还可以添加其他用户角色,方便了系统的扩展。

(2)创建操作系统模板

为了满足数字图书馆应用系统对操作系统的需求,需要制作不同的操作系统模板,如WinXP、Win-2k3-Server、Ubuntu9.04等。Eucalyptus操作系统模板包含内核(Kernel)、引导程序(Ramdisk)、文件系统(Image)[ 7]。现以制作WinXP操作系统模板为例,说明制作的过程。

①下载Windows XP SP3操作系统镜像,放置于安装了KVM的Linux物理机的临时目录下(/tmp/winxp.iso)。

②创建空的硬盘空间Winxp.img,并利用KVM虚拟机安装光盘镜像文件内容至Winxp.img。

③创建空的硬盘空间Win-boot.img,并把它作为软盘附加给KVM虚拟机,复制:Ntldr、Ntdetect.com、Boot.ini、Ntbootdd.sys至Win-boot.img。

④通过在线获取安装Syslinux,提取Memdisk内核文件。

图7为Eucalyptus操作系统模板的三部分。Memdisk为内核文件,Win-boot.img为引导文件,Winxp.img为文件系统。

图7 实例模板内核文件、引导文件、文件系统

(3)上传操作系统模板

上传实例模板的过程,主要是将Kernel,Ramdisk,Image对应的三项软件包分别上传至DLCloud中的Walrus组件,为用户提供不同的操作系统类型。

图8为操作系统模板上传的流程,其可以分为三个步骤:

①绑定文件,将创建的Kernel(Memdisk)、Ramdisk(Win-boot.img)、Image(Winxp.img),分别通过检查、压缩、加密、分解(按照10MB分解),将元数据写入Manifest.xml文档,对象文件放入GridSphere门户子系统服务器下的临时目录;

②上传文件,在Walrus组件中创建该对象文件和元数据存放目录,然后将对象数据和元数据文件上传至该目录下;

③注册文件,产生ID号(eki,eri,emi),将元数据内容写入Eucalyptus云平台数据库,返回注册ID给用户。

图8 上传操作系统模板文件流程

现以上传操作系统模板为例,说明Portlets插件的实现过程,它分为:视图层QueryFile.jsp, Band_Images.jsp, Upload_Images.jsp, Register_Images.jsp,主要功能是:QueryFile.jsp为查看是否有等待上传的镜像实例;Band_Images.jsp绑定实例文件界面;Upload_Images.jsp上传实例文件界面;Register_Images.jsp注册实例文件界面。

模型层通过配置文件来进行对象关系映射,主要编写的文件包括:DB.xml, Portlet.xml。DB.xml是数据库连接的配置文件,Portlet.xml功能是处理业务逻辑、封装对象关系映射。 Portlet.xml配置的部分如下:

Uploaded Image

org.gridsphere.euca.portlets.upload_images

zh

……

控制器层主要包括Upload_Images.java,功能为处理视图和模型之间的交互,将用户提交的信息转交给后台进行处理,并将结果返回给用户。其实现的类图如图9所示:

图9 Upload_images类图

核心处理代码为:

绑定模板文件bandImages()

Process process = Runtime.getRuntime().exec("euca-bundle-image -i /srv/ftp/pub/"+fileName+" --kernel "+kernel+" --ramdisk "+ramdisk);

上传模板文件uploadImages()

Process process = Runtime.getRuntime().exec("euca-upload-bundle -b "+bucket+" -m "+uploads);

注册模板文件registerImages()

Process process = Runtime.getRuntime().exec("euca-register "+registers);

当内核文件、引导文件、文件系统全部上传成功后,其信息如图10所示:

图10 Walrus组件操作系统信息

可以看出,Windows XP的内核ID为:eki-25930D0D;引导文件ID为:eri-6F2C0EAD;文件系统ID为:emi-43F30DBD。同时还可以看出,该操作系统模板的上传者:Admin,所处的状态:可使用,权限:所有用户都可以使用该操作系统,操作系统结构:64位等信息。

(4)虚拟机管理

虚拟机管理由虚拟机运行管理和虚拟机应用管理两部分组成。虚拟机运行管理在前面Euca2ools中间件中已介绍,本节不再赘述,重点介绍虚拟机应用管理。

虚拟机应用管理是指用户虚拟机申请的管理。当管理员利用虚拟机运行管理界面(见图5),启动了相应的虚拟机后,一般用户或开发用户可以利用虚拟机申请管理界面,使用目前数字图书馆私有云平台提供的操作系统和虚拟机服务,如图11所示:

图11 虚拟机申请管理界面

可以看到,用户可以利用虚拟机类型下拉框选择m1.small、c1.xlarge等类型虚拟机;操作系统下拉框选择WinXP、Ubuntu10.10桌面版、Windows Server 2003等;以及使用时长,对于一般用户和开发用户可选择为半小时至24小时等。如果选择现在立即使用,则会立即申请到虚拟机;如果选择稍后,时间为星期一、12:00,则根据用户请求,系统会在星期一、12:00帮用户获得虚拟机,然后发送邮件告知用户等。

例如开发用户现选择:类型m1.large、操作系统WinXP、时间为4小时,然后提交申请。图12为所申请到的虚拟机信息。

图12 用户所申请的虚拟机界面

用户申请虚拟机成功后,根据界面提供的不同运行协议,例如RDP协议、VNC协议、SSH协议等,利用IP:59.64.145.223、用户名:user,密码:user,访问这台WinXP虚拟机,占用这台虚拟机的时间为4个小时,时间到期后,系统会自动中断用户与虚拟机的连接。

可见,通过对数字图书馆私有云平台的构建,图书馆的硬件资源和软件资源将以服务的方式提供,满足不同用户对虚拟机和操作系统模板的要求,改变用户与资源的交互、使用模式。用户可以根据需要,灵活选择所需的服务,来开发或部署相应的应用。下面利用数字图书馆云平台,对数字图书馆系统在该平台下的应用开发进行研究。

3 基于数字图书馆私有云平台的应用开发研究
3.1 数字图书馆应用系统模板建立

传统的数字图书馆应用系统是与操作系统分开的,首先安装操作系统,然后部署应用系统。而数字图书馆私有云平台下,数字图书馆应用系统是被添加至操作系统,以应用系统模板的方式供虚拟机使用。其应用模板建立的过程为:首先利用KVM虚拟机,将Window Server 2003或者相应的服务版操作系统安装至空的文件系统,然后将数据库、支持环境安装至该文件系统,最后上传至Walrus组件,以此文件作为虚拟机操作系统,就会短时间内得到相应的数字图书馆应用服务。下面以数字图书馆统一检索应用系统为例说明其过程。

管理员根据制作操作系统模板文件的过程,利用KVM虚拟机,将MySQL数据库、JDK、Tomcat应用服务器等添加至Windows Server 2003操作系统上,并配置JDK、Tomcat等环境,且设置Tomcat服务能够自动启动。将统一检索应用系统、CAS认证系统以War包的方式部署在Tomcat应用服务器下,完成后获取文件系统,通过上传操作系统文件的方式,将该文件上传至Walrus组件,并将其命名为WSPT,这种方式给图书馆应用系统的部署带来了很多方便性。例如部署统一检索服务器,只需要选择包含操作系统与统一检索应用系统的WSPT文件相应类型的虚拟机即可,当虚拟机启动后,不需再重复安装与配置JDK、Tomcat等环境,就可以立即使用统一检索应用系统服务,解决了传统图书馆系统部署的重复性问题。

3.2 根据系统需求,启动相应类型与数量的虚拟机

当数字图书馆应用系统模板建立后,为了使用该数字图书馆统一检索服务,需要启动相应的虚拟机资源来支撑该应用系统的运行。根据统一检索系统在本地部署的要求(CPU:2,内存:2GB),以及图4 中Cluster1下的虚拟机配置类型,需要选择c1.xlarge的虚拟机才能支持当前系统的运行。管理员利用虚拟机运行界面(见图5),选择操作系统WSPT、c1.xlarge、数目为2,启动两台相同配置的虚拟机,如图13所示。

图13 统一检索系统在数字图书馆私有云平台的部署

当虚拟机运行后,将59.64.145.220虚拟机运行的统一检索应用系统作为主服务器,59.64.145.222虚拟机运行的应用系统作为备份服务器。这样做的目的是如果其中某台刀片机出现问题,另一应用系统还能继续使用,同时还要定时做快照,将其放置于59.64.145.234的Walrus组件之中,保证当所有虚拟机出现故障时,可以快速恢复系统。利用简单检索,检索词为java,发起一次检索请求,返回数据页面如图14所示。

图14 虚拟机上的统一检索查询实例

3.3 多应用系统部署在不同虚拟机上

数字图书馆应用系统是由很多子系统构成的,例如CAS认证系统、网页采集系统、OAI系统等。通常图书馆为了满足用户的访问要求,将上述应用系统部署在单一服务器上,导致图书馆需要购买大量的服务器来满足部署要求,最终使得很多资源处在空闲状态,无法得到有效利用。由于数字图书馆私有云平台的每个集群承载了相当数目的虚拟机,例如m1.xlarge(CPU:2,内存:1GB,硬盘:20GB)类型,两台刀片机能够承载10台,就可以同时运行不同类型的应用系统,例如在一台m1.xlarge类型的虚拟机上运行CAS认证系统,一台m1.xlarge类型的虚拟机上运行OAI应用系统,还有一台虚拟机运行网页采集系统等,如图15所示。

图15 数字图书馆应用子系统在虚拟机的部署

用户通过http://IP:8080,就可以访问CAS认证系统、OAI系统、网页采集系统等,改变了过去服务器承载单一应用系统的状况,最终使图书馆减少了服务器的数目,提高了资源的利用率。当虚拟机资源不足时,数字图书馆私有云平台可以灵活添加硬件资源,满足数字图书馆应用系统、开发用户和一般用户对虚拟机的需要。

4 结 语

本文给出了数字图书馆私有云平台的架构和实现方法,并根据该架构,实现了数字图书馆私有云平台的用户管理、创建操作系统模板、上传实例模板、虚拟机管理等功能,将图书馆的硬件资源与软件资源以虚拟机和操作系统服务方式提供。将数字图书馆不同的应用系统,制作成为相应的应用模板,部署在虚拟机下运行。例如统一检索系统等,与操作系统整合,加工成为数字图书馆统一检索应用模板。从而改变了过去静态系统部署所带来的重复性以及资源利用率低等问题,并且使得数字图书馆应用系统的部署更加灵活、快捷。还可以方便地添加服务器硬件资源至该私有云平台下,满足应用系统对各种类型虚拟机资源的请求,体现了数字图书馆私有云平台的可扩展性。

下一步将创建含有开发工具包的应用模板,提供给开发用户使用,例如Office 2003、Java开发工具(JDK+Tomcat+Eclipse+数据库)等,以及有关数字图书馆应用系统的备份、存储、灾难恢复等问题,使得云计算在数字图书馆方面更加实用化。

The authors have declared that no competing interests exist.

作者已声明无竞争性利益关系。

参考文献
[1] 李永先, 栾旭伦, 李森森. 云计算技术在图书馆中的应用探讨[J]. 江西图书馆学刊, 2009, 39(1): 105-106. [本文引用:1]
[2] Amazon Elastic Compute Cloud Developer Guide, 2009[EB/OL]. [2011-01-26]. http://docs.amazonweb-services.com/AWSEC2/latest/DeveloperGuide/. [本文引用:1]
[3] Euca2ools User Guide[EB/OL]. [2011-01-26]. http://open.eucalyptus.com/book/export/html/1191. [本文引用:1]
[4] Nurmi D, Wolski R, Grzegorczyk C, et al. Eucalyptus: A Technical Report on an Elastic Utility Computing Architecture Linking Your Programs To Useful Systems[R]. Santa Barbara: Univisity of California, 2008. [本文引用:1]
[5] 刘鹏. 云计算[M]. 北京: 电子工业出版社, 2010. [本文引用:1]
[6] 陈吉荣. 构建私有云计算平台的EUCALYPTUS架构分析[J]. 电脑知识与技术, 2010(6): 15-18. [本文引用:3]
[7] 赵华茗, 李春旺, 李宇, . 云计算及其应用的开源实现研究[J]. 现代图书情报技术, 2009 (9): 1-6. [本文引用:1]