图书馆私有云基础构架开源解决方案*
刘茜, 胡朝明
浙江理工大学图书馆 杭州 310018
摘要

针对数字图书馆建设中资源浪费的问题,提出基于Xen Cloud Platform的服务器虚拟化构架,采用Xen Web Manager有效管理Xen Cloud Platform 中的资源,通过基于开源框架设计的运维管理、资源管理、安全管理、Xen扩展等模块的多个增值服务来解决私有云建设过程中的关键问题,实现图书馆私有云的开源基础构架解决方案。

关键词: 虚拟化; Xen; Cloud; Platform; Xen; Web; Manager; Hypervisor
中图分类号:TP393
Open Source Solution for Library Private Cloud Infrastructure
Liu Qian, Hu Chaoming
Zhejiang Sci-Tech University Library, Hangzhou 310018, China
Abstract

To avoid waste of resources during construction of digital library, Xen Cloud Platform is suggested as infrastructure virtualization platform. Xen Web manager is selected to manage the resources effectively in Xen Cloud platform. Some value-added services developed with open source framework such as operation management, resource management, security management and Xen extension are designed to solve the key problems in the process of library private cloud construction. Thus an open source private cloud infrastructure solution for library is laid.

Keyword: Virtualization; Xen; Cloud; Platform; Xen; Web; Manager; Hypervisor
1 引言

随着数字图书馆的加速建设,各种软件系统应用日益增多,需要越来越多的存储空间和服务器,大大增加了硬件资源和重复软件功能的开发及维护成本。云计算技术的高可靠性、通用性、可扩展性和按需服务能够有效减少软硬件资源浪费,避免成本过度增长。然而,由于存储在公有云的数据安全性问题和过度依赖网络服务提供商[ 1, 2]等原因,公有云的推进受到了限制。私有云是为用户单独使用而构建的,能更有效地控制数据,安全性更强,业务连续性更好,服务质量更高。现有的私有云基础构架研究主要以基于企业级虚拟化方案的安装部署为主,对于如何保证云平台安全运营的开源解决方案关注较少。本文通过分析对比虚拟化Hypervisor的类型,选择服务器虚拟化方案,提出问题自主发现、问题报警、问题管理、虚拟机自助部署、敏感信息过滤等服务以确保云平台的安全稳定,并初步设计了图书馆私有云基础构架开源解决方案。

2 图书馆服务器虚拟化解决方案选型
2.1 服务器虚拟化的主要方式

服务器虚拟化已由早期尚未成熟的概念,发展到现在更广泛的部署。虚拟化核心Hypervisor也可称作Virtual

Machine Monitor,是一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件[ 3]。一般来说,通过虚拟化核心Hypervisor的常见安装方式将服务器硬件虚拟化分为宿主型和裸机型。

(1)宿主型

宿主型将Hypervisor安装在普通操作系统上,例如Oracle Virtual Box、VMware Fusion、Parallels Desktop。因为宿主型的Hypervisor以宿主操作系统的应用程序方式运行,只具有Ring3的权限[ 4],不能与底层硬件直接进行交互,所以必须通过宿主操作系统进行有限的资源控制,这会导致比较大的资源开销。尤其是当操作系统服务、工具以及应用同时运行在宿主操作系统上时,会导致严重的性能问题。并且,没有集中的资源管理,各虚拟机必须彼此竞争使用资源,无法实现硬件资源的动态分配,无法动态地将硬件资源如内存、CPU等分配给需要的虚拟机上。同时,由于宿主操作系统容易被忽视,导致Hypervisor易受木马攻击。因此,这种方式仅能满足一般小型虚拟化的需求。

(2)裸机型

裸机型将Hypervisor直接安装在底层硬件上,例如Hyper-V、VMware ESX、 Citrix XenServer、 Citrix Xen Cloud Platform。裸机型的Hypervisor拥有Ring0的权限[ 4],可以与底层硬件直接进行交互,从而能够集中管理资源,动态分配、调整硬件资源。同时,由于没有宿主操作系统,不会因为宿主操作系统而产生严重的性能问题,也没有宿主操作系统的木马所导致的安全问题。因此,这种方式能够满足中大型企业服务器硬件虚拟化的需求。

2.2 图书馆服务器虚拟化解决方案选型

Hypervisor是虚拟化的核心,它决定了虚拟化的基础构架。在服务器虚拟化实施的整个过程中如何选择合适的Hypervisor类型,并确立对应的经济、合理的服务器虚拟化方案至关重要。笔者综合适用性和经济性两方面来考虑如何选型。

(1)适用性

针对数字图书馆的硬件服务器虚拟化的实际需求如大量数据检索请求及快速返回检索结果、不断扩展新数据资源、稳定提供高质量服务等,需要选用拥有高性能、高可用性、高可靠性、高扩展性、高可管理性、高安全性的Hypervisor,从适用性角度考虑,选择裸机型Hypervisor。宿主型和裸机型的对比分析如表1所示:

表1 宿主型和裸机型硬件虚拟化对比分析

(2)经济性

Gartner在《2011年服务器虚拟化基础建设Magic Quadrant》中指出,VMware、Microsoft、Citrix 三家企业处于服务器虚拟化领域的领导者地位[ 5],它们都提供了完整、成熟、领先的支持裸机型的Hypervisor的企业级虚拟化产品VMware ESX、Microsoft Hyper-V、Citrix XenServer,但是价格都偏高,并且后期的功能扩展需要更高的投入。Citrix的开源解决方案Xen Cloud Platform是源于XenServer的、基于Xen Hypervisor(开源的Hypervisor解决方案)的开源的企业级服务器虚拟化和云计算平台[ 6]。Citrix的许多虚拟化新功能都会先在Xen Cloud Platform中运用成熟后才会移植到XenServer中,Xen Cloud Platform包括XenServer Advanced版的功能,并且具备一些XenServer Advanced所不具备的功能。从某种角度来说,Xen Cloud Platform达到甚至超过了XenServer Advanced的虚拟化能力[ 7]。从经济性角度考虑,选择开源的Xen Cloud Platform。

裸机型Hypervisor具有高性能和较好的适用性,开源的Xen Cloud Platform在性能上不亚于裸机型XenServer Advanced,而且可大幅节约部署费用。因此,综合考虑性能与费用,本方案采用Xen Cloud Platform来实现服务器虚拟化。

3 图书馆私有云基础构架开源方案
3.1 总体设计

为了便于在数字图书馆得到应用、推广,基于Xen Cloud Platform的图书馆私有云开源基础构架解决方案由4部分组成,如图1所示。

图1 图书馆私有云开源基础构架解决方案

存储虚拟化层为服务器提供存储设备资源,服务器虚拟化基础层采用Xen Cloud Platform实现服务器虚拟化,服务器虚拟化管理基础层通过Xen Web Manager及Xen扩展模块的两个基于开源框架自主开发的服务程序来管理Xen Cloud Platform中的资源,服务器虚拟化管理服务层从3个方面(运维管理、资源管理、安全管理)、11个基于开源框架自主开发的服务程序来保证图书馆私有云能够高质量、稳定、安全地提供服务。

3.2 存储虚拟化层

存储虚拟化层为虚拟化服务器提供存储设备,采用SAN存储构架,使用光纤交换机将存储服务器与主备存储设备相连接,使用存储设备自带软件实现存储的虚拟化和管理,可充分利用现有软硬件资源并节约费用。

3.3 服务器虚拟化基础层

虚拟化基础层由两类Xen Cloud Platform服务器组成,Xen Cloud Platform1主要是提供IT基础服务,即文件服务、邮件服务、目录服务、域控制服务、打印服务、FTP服务、升级更新服务;Xen Cloud Platform2主要是提供图书馆业务及运维服务,即电子资源数据库、文献信息服务系统、图书馆门户网站、办公自动化系统、运维管理系统等。在虚拟机部署过程中,由于应用系统均为Web应用,所以虚拟机均为Web、DB服务器,访问量大的系统可配置单独的Web、DB服务器,访问量小的服务则可共享Web、DB服务器。

3.4 服务器虚拟化管理基础层

服务器虚拟化管理基础层由两部分组成:

(1)Xen Web Manager用来管理Xen Cloud Platform服务器。Xen Web Manager是XenServer所使用的企业级管理组件XenCenter的开源Web版,用户通过它在网页上就可以管理与Xen Cloud Platform相关联的虚拟机,如创建虚拟机、修改虚拟机配置(CPU、内存、存储容量等)、动态迁移虚拟机、虚拟机备份、快照和还原等。同时,也可查看机器当前的性能状况。

(2)Xen扩展模块中的虚拟机操作服务通过自主开发的J2SE程序调用Xen Cloud Platform提供的XAPI来完成虚拟机的启动、关闭、部署,数据获取服务通过自主开发的J2SE程序调用XAPI获取性能数据。

3.5 服务器虚拟化管理服务层

服务器虚拟化管理服务层能提供一些增值服务,保证私有云达到其SLA(Service Level Agreement,是关于服务供应商和客户间的一份合同,其中定义了服务类型、服务质量和客户付款等术语[ 8])的要求。这些服务主要应用于以下三方面:

(1)运维管理模块

随着虚拟化的实施,将遇到这几个问题:需要专门的虚拟化管理团队来管理基础构架,带来额外的成本;虚拟化更容易、更快速、更动态的部署特性,导致了服务器的数量越来越多,且有着更复杂的依赖关系,如果一个服务器出现了故障将导致依赖于它的所有服务都被中断,当依赖服务被报告故障后,管理人员需耗费大量无用的时间在这些依赖服务上面以寻找问题根源。为了解决上述问题,设计了运维管理模块,如图2所示:

图2 运维管理模块方案

运维管理模块由6个服务组成:问题自主发现服务、CI关系管理服务、问题管理服务、问题报警服务、云服务状态查询服务、SLA管理服务。问题自主发现服务由自主开发的J2SE程序实现,其他5个服务由自主开发的J2EE程序实现。运维管理模块主要设计功能如下:

①问题自主发现服务设计为Agent程序,安装在提供服务的虚拟机上,监控所有CI(Configuration Item,用来描述IT服务的任意组成部分[ 9])是否出现故障。监控主要有以下6种方式:监控服务端口是否被该服务占用;监控服务进程是否在运行;监控该服务本身发出的Event报警;监控服务日志中特定格式的错误日志;监控操作系统对服务发出的Event报警;通过简易程序访问服务获得期望返回值以确认服务正常。

②CI关系管理服务是维护CI之间的依赖关系。本方案中将CI分为云服务CI和一般CI,云服务CI用以描述图书馆私有云中的云服务,一般CI用以描述一些基础IT功能的配置项,如DB服务、DB实例、Web 服务、Web 实例、消息服务队列、Mail服务等。

③问题管理服务用来创建问题及维护问题信息。当问题自主发现服务检测到服务故障后,通过CI关系服务查询所有受影响的CI,再通过问题管理服务来创建问题。当问题被解决后,解决问题人员通过此服务修改问题状态为关闭。

④SLA管理服务定义了每个服务允许的最长允许中断时长。

⑤问题报警服务是当问题发生时向该类问题的负责人发送提醒邮件,并且创建后台进程,当检测到时间已经达到允许时长的1/2时间点,发送邮件给负责人告知故障处理剩余时间。

⑥云服务状态查询服务是为了便于管理员及时查询每个云服务CI及其所有子CI的状态。通过CI关系服务获得需要检测的CI及其IP信息后,就发送请求给该IP对应机器的问题自主发现服务,查询CI运行状态。

(2)资源管理模块

在制作、使用虚拟机的过程中,将遇到所有虚拟机部署工作都依赖于虚拟机管理员,导致其时间被大量占用;使用者随意在虚拟环境中部署虚拟机,导致所有服务响应速度受影响;在私有云服务逐渐增加的过程中,无法获知现有硬件资源是否满足需求,是否需要采购新硬件资源。为了解决上述问题,设计了资源管理模块,如图3所示。

图3 资源管理模块方案

资源管理模块由两个自主开发的J2EE程序实现的服务组成:虚拟机自助部署服务、资源利用率报表服务。其主要设计功能如下:

①虚拟机自助部署服务结合权限管理,允许用户选择需要部署的物理机器名称、虚拟机模板、内存需求量、硬盘需求量,即可完成申请,同时限制申请数量;

②资源利用率报表服务将数据中心的性能数据以图表的方式展现给图书馆IT部门负责人及IT管理员。

(3)安全管理模块

虚拟机的操作系统和软件如果不能及时更新补丁程序,木马病毒扫描就会对整个数据中心的安全性和稳定性带来危险。同时,当虚拟机管理员制作虚拟机模板时,可能会不经意暴露一些敏感信息,或创建一些不应该被发布出去的文件,会导致安全隐患。为了解决上述问题,设计了安全管理模块,如图4所示:

图4 安全管理模块方案

安全管理模块由三个自主开发的J2SE程序实现的服务组成:木马病毒扫描服务、自动升级维护服务、敏感信息过滤服务。这三个服务均设计为Agent方式运行在虚拟机内。其主要设计功能如下:

①木马病毒扫描服务是让第三方木马病毒扫描程序立即执行扫描;

②自动升级维护服务设置不同类型VM需要更新的软件列表,主要包括操作系统、数据库、应用服务器、木马病毒扫描软件,根据更新列表通过J2SE程序从更新服务器获取软件最新补丁,并且在配置文件中记录更新日期和更新版本;

③敏感信息过滤服务是通过J2SE程序将系统的敏感信息文件删除,如清空浏览器的历史纪录、删除某路径下面预配置的扩展名的文件;

④Xen扩展模块中的虚拟机操作服务,通过J2SE程序定期启动长期关闭的VM来调用木马病毒扫描服务和自动升级维护服务,确保长期关闭的VM也能处于安全状态。

4 关键技术及效果展示
4.1 J2SE程序设计

运维管理模块、安全管理模块、Xen扩展模块中的J2SE程序主要用于调用第三方指令并获取该指令的操作结果,使用Runtime.getRuntime().exec(command)来完成。例如调用操作系统指令获取系统进程及端口使用情况、启动第三方病毒扫描软件扫描程序、调用XAPI操作虚拟机资源。下面以检查操作系统进程是否在运行为例,说明如何使用这个Java API:

public boolean findProcess (String processName) throws IOException {

//for windows

Process proc= Runtime.getRuntime().exec("tasklist/FI\"imagename eq"+processName +"\"");

//for Linux

//Process proc=Runtime.getRuntime().exec("ps aux|grep"+processName);

BufferedReader br=new BufferedReader(new InputStreamReader(proc.getInputStream()));

String line=null;

while(line=br.readLine())!=null){

if(line.contains(processName)){

return true;

}

}

return false;

}

4.2 J2EE程序设计

运维管理模块、资源管理模块中的J2EE程序基于Spring3、Hibernate3、Struts2的J2EE开源框架实现,数据库采用开源数据库MySQL。J2EE程序与J2SE程序采用SOAP协议进行通讯,通过Axis2开源框架实现。

(1)运维管理模块

根据运维管理模块的功能需求,设计了UML用例图,并依此进行模块程序开发,如图5所示。

图5 运维管理模块用例图

以问题查询和云服务状态查询为例分别展现运维管理模块的实现效果。问题IM10002的查询页面如图6所示:

图6 问题查询实例从图6可以看出,此问题由问题自主发现服务创建,并由问题报警服务发送提醒邮件。

图书馆门户服务CI的查询页面如图7所示:

图7 云服务状态查询实例

可以查询到该CI的详细信息及依赖的子CI信息,刷新子CI的状态。

(2)资源管理模块

以虚拟机自助部署和CPU利用率报表为例分别展现资源管理模块的实现效果。用户根据需求即可提交虚拟机部署申请,虚拟机自助部署申请页面如图8所示:

图8 虚拟机自助部署实例

资源报表服务定期通过Xen扩展模块的数据获取服务获取性能数据,然后通过第三方Flash图表工具FusionCharts进行数据展示。程序将性能数据创建为XML,然后传递给预先创建的FusionCharts模板完成显示。2012年1月1日至2012年1月10日,CI60001至CI60005的虚拟机CPU利用率如图9所示:

图9 虚拟机CPU利用率实例

5 结语

本文以Xen Cloud Platform与Xen Web Manager为基础构建了图书馆私有云基础构架开源平台,并且通过自主开发的运维管理模块、资源管理模块、安全管理模块、Xen扩展模块的多个服务完善了整套解决方案,

使得图书馆私有云能够提供持续稳定的、高质量的信息管理与服务。

参考文献
[1] 胡小菁, 范并思. 云计算给图书馆管理带来挑战[J]. 大学图书馆学报, 2009, 27(4): 7-12.
(Hu Xiaojing, Fan Bingsi. Cloud Computing: The Challenges to Library Management[J]. Journal of Academic Libraries, 2009, 27(4): 7-12. ) [本文引用:1] [CJCR: 3.739]
[2] 钱文静, 邓仲华. 云计算与信息资源共享管理[J]. 图书与情报, 2009(4): 47-52, 60. (Qian Wenjing, Deng Zhonghua. Cloud Computing and Management of Information Resource Sharing[J]. Library and Information, 2009(4): 47-52, 60. ) [本文引用:1]
[3] Hypervisor[EB/OL]. [ 2011-11-19]. Hypervisor[EB/OL]. [2011-11-19]. http://baike.baidu.com/view/4404351.htm. [本文引用:1]
[4] Ring[EB/OL]. [ 2011-12-10]. Ring[EB/OL]. [2011-12-10]. http://en.wikipedia.org/wiki/Ring_(computer_security. [本文引用:2]
[5] Magic Quadrant for x86 Server Virtualization Infrastructure[EB/OL]. [ 2012-01-09]. Magic Quadrant for x86 Server Virtualization Infrastructure[EB/OL]. [2012-01-09]. http://www.citrix.com/site/resources/dynamic/additional/citirix_magic_quadrant_2011.pdf?ntref=news_gartnerMQ. [本文引用:1]
[6] Xen Cloud Platform Project[EB/OL]. [ 2012-01-20]. Xen Cloud Platform Project[EB/OL]. [2012-01-20]. http://xen.org/products/cloudxen.html. [本文引用:1]
[7] XCP/XenServer Feature Matrix[EB/OL]. [ 2012-01-28]. XCP/XenServer Feature Matrix[EB/OL]. [2012-01-28]. http://wiki.xen.org/wiki/XCP/XenServer_Feature_Matrix. [本文引用:1]
[8] SLA[EB/OL]. [ 2012-03-25]. SLA[EB/OL]. [2012-03-25]. http://baike.baidu.com/view/163802.htm. [本文引用:1]
[9] Configuration Item[EB/OL]. [ 2012-04-12]. Configuration Item[EB/OL]. [2012-04-12]. http: //www. knowledgetransfer. net/dictionary/ITIL/en/Configuration_Item. htm.
(作者E-mail: caoximi@gmail. com) [本文引用:1]