APP下载

基于开源软件的私有云计算平台构建*

2013-10-08王伟军陈桂强

电信科学 2013年1期
关键词:镜像开源虚拟化

姜 毅 ,王伟军 ,曹 丽 ,刘 凯 ,陈桂强

(1.华中师范大学信息管理学院 武汉 430079;2.浙江理工大学经济管理学院 杭州 310018;3.浙江理工大学信息学院 杭州 310018)

1 引言

云计算的应用越来越广泛,对相关问题的研究也逐渐深入,不少公司和研究机构需要构建自己的私有云计算平台。商业解决方案存在价格高、授权模式复杂等问题,并且无法获得系统源代码,很多情况下并不适合采用。开源云计算技术具有成本低、灵活性高等优势,能够方便地获得源代码进行深入研究,因此很多机构都采用开源软件构造私有云计算平台。目前主要的开源云计算项目有Eucalyptus、OpenStack、OpenNebula 和 Nimbus,本文在对比这些项目的基础上,分析了OpenStack的架构,阐述了利用OpenStack构建私有云平台的方法。

2 私有云平台概述

2.1 私有云概念

从用户使用的角度来看,云计算平台可以分为公共云和私有云[1]。公共云部署在互联网中,用户通过网络获得计算资源和存储资源,并按照“即用即付”(pay-as-you-go)的方式付费。私有云是企业或组织内部数据中心的资源,只提供给机构内部人员使用,不对外面向公众。私有云计算平台一般构建在机构的防火墙内部,相对于公共云,其安全性更高,服务质量更有保证。私有云能够充分利用现有的硬件资源和软件资源,可以有效地降低信息化成本。

2.2 私有云计算平台构建模式

私有云平台的构建可以采用3种模式:研究机构自行开发[2],这种方式需要企业或研究机构有很强的技术实力,比较典型的是清华大学的透明计算平台;采用商业解决方案[3],不少商业公司提供了较为成熟的私有云整体解决方案,比较典型的是IBM的“蓝云”计算平台;使用开源解决方案[4],这种方案是利用开源系统构造企业或组织的私有云平台,比较典型的是使用Eucalyptus和OpenStack等开源系统。3种构造方式的比较见表1。

表1 私有云计算平台构建模式对比

2.3 开源私有云计算平台优势

在自行开发、商业解决方案和开源解决方案3种私有云的构建模式中,开源方案具有如下多个优势。

(1)使用成本低

用户只需要购买硬件设备和网络设备,无需为开源软件的使用付费。即使用户需要开源软件开发商提供服务,其需要付出的费用也相对比较低廉。例如,Ubuntu帮助用户构建基于OpenStack的私有云平台的服务费用是9 000美元,相关工作在5天内完成[5]。

(2)开放源代码

开放源代码,有利于研究人员对系统内部的实现机制进行深入研究。开源软件使用Apache或其他授权协议,用户能够获得系统的源代码,并且可以通过社区、讨论组等多种形式,与开发人员和其他用户深入探讨各种技术问题。

(3)平台可扩展性强

由于现有的云计算技术尚在快速发展中,没有形成统一的技术标准和规范,一旦选择了一种商业解决方案,就很难转换到其他平台。而开源云平台在设计时一般会保持对主流云计算技术(如亚马逊EC2、S3等)的兼容性,同时提供转换工具,有效地避免了厂商锁定问题,增强了系统的可扩展性。

3 开源云计算项目现状

3.1 主流开源云计算项目介绍

目前已经有多个云计算平台的开源实现,主要的开源云计算项目有 Eucalyptus、OpenStack、CloudStack 和OpenNebula等,基本介绍如下。

(1)Eucalyptus

Eucalyptus[6]是加州大学圣芭芭拉分校计算机科学系Rich Wolski领导的项目组完成的开源软件项目,该项目开发和应用较早,目前占有最大的市场份额。其组件无需修改即可使用,可以运行在没做修改的GNU Linux内核上。Eucalyptus提供了与Amazon云计算平台EC2和S3接口的兼容性,可以使客户应用方便地从私有云平台迁移到公共云平台。

(2)OpenStack

OpenStack[7]是美国国家航空航天局(NASA)和Rackspace合作研发的开源云计算平台项目,整合了NASA的Nebula Platform和Rackspace的Cloud Files Platform技术。OpenStack得到了多个商业公司和开源组织的支持,被认为是未来开源云计算平台最具有潜力的技术,从Ubuntu 11.04版本开始,已经把OpenStack作为内置集成的云计算技术。

(3)CloudStack

CloudStack[8]起源于2008年成立的VMOps公司,2010年改名为Cloud.com,分为社区版本和商业版本。2011年7月思杰系统(Citrix System)公司收购了 Cloud.com,把以前维护的商业分支全部合并到了开源分支,并把该软件加入Apache软件基金会,成为了一个完全开源的项目。目前全球已经有多个大规模应用实例,如Zynga、GoDaddy等。

(4)OpenNebula

OpenNebula[9]起源于 2005年 Ignacio M Llorente和 Rubén S Montero创立的一个研究项目,于2008年7月发布了第一个公开版本。OpenNebula是一个虚拟化企业数据中心和云基础设施建设和管理的行业开源解决方案,具有开放性、模块化和可扩展的架构,目前已成为欧盟云计算项目RESERVOIR中虚拟执行环境管理器VEEM的核心组件。

3.2 开源云计算项目对比

Eucalyptus、OpenStack、CloudStack 和 OpenNebula这 4个主流的开源云计算项目各有特点,表2从多个方面对这4个项目进行了对比,其中社区活跃程度的数据来源于蒋清野博客[10]。

在主流的开源云计算项目中,OpenStack目前已经获得英特尔、惠普、戴尔、Ubuntu、思科等多个重要公司和开源组织的支持,是目前最热门的开源云计算项目,因此本文选择OpenStack构造私有云平台。

表2 主流开源云计算项目对比

4 OpenStack平台架构

4.1 OpenStack服务架构

OpenStack 中 有 Compute、Storage、Image、Identity 和Dashboard 5个子项目,其服务架构如图1所示。

其中,Compute、Storage、Image是核心的 3个子项目,提供计算、对象存储和镜像管理服务,其他的子项目包括提供身份认证的Identity、基于Web的管理控制台Dashboard等。OpenStack需要通过虚拟化技术使用基础硬件平台,客户应用系统可以通过OpenStack提供的接口(API)访问各个云服务实例。

图1 OpenStack服务架构

4.2 OpenStack主要实现

OpenStack云计算平台管理系统目前有 Nova、Swift、Glance、Keystone和Horizon 5个主要的具体实现。Nova是Compute的具体实现,主要功能是计算资源管理和云平台控制服务管理,运行和管理虚拟服务器实例等;Swift是Object Storage的具体实现,提供分布式云存储服务,是一个可扩展的对象存储系统;Glance是Image Service的具体实现,提供虚拟机镜像的发现、注册、获取服务;Keystone是Identity的具体实现,提供统一的身份认证服务;Horizon是Dashboard的具体实现,提供通过Web用户界面管理云计算平台的方式。Nova、Glance、Keystone的安装和使用都需要使用数据库,可以采用开源的MySQL、PostgreSQL或SQLite等数据库系统。

Nova和Swift是核心的两类服务实现。Nova组件是云平台的计算模块,提供多种服务,包括API服务(nova-api)、消息队列、计算服务(nova-compute)、网络控制(nova-network)、卷服务(nova-volume)和调度管理(nova-scheduler)等;Swift组件提供云存储服务,适合存储大量、长期、需要备份的数据。Swift通过 “账户—容器—对象”(account-containerobject)的形式提供对象存储服务,一个账户下可有多个容器,每个容器中可存储多个对象。环服务是Swift最重要的组件,用于记录存储对象与物理位置间的映射关系。

5 基于OpenStack的私有云平台构建

5.1 总体说明

本文选择OpenStack来构造私有云平台实例,并采用Ubuntu、KVM等开源软件作为平台的基础操作系统和虚拟化工具。私有云平台使用的主要开源软件说明见表 3。

本文讨论的私有云平台实例主要应用在科研实验室环境中,服务器采用x86架构,硬件设备初始的投入成本较低,并可以根据需要动态扩展各种资源。私有云平台的初始硬件配置见表4。

表3 构造私有云平台的主要开源软件

表4 私有云平台的初始硬件配置

5.2 基础环境的配置

一个典型的私有云计算平台至少采用两台服务器,本文将其称为服务器Ⅰ和服务器Ⅱ。服务器Ⅰ上安装Nova、Glance、Swift、Keystone和 Horizon 全部组件,作为云平台的控制节点和存储节点;服务器Ⅱ仅安装Nova组件,作为云平台的计算节点。在平台性能不能满足需要的情况下,可以动态扩展计算和存储等资源。每台服务器均配置2块吉比特以太网卡,第一块网卡eth0设置为外部可访问的IP地址,第二块网卡eth1设置为云平台各节点内部通信的IP地址。服务器Ⅰ和服务器Ⅱ的配置说明见表5。

表5 服务器Ⅰ和服务器Ⅱ的配置说明

服务器Ⅰ和服务器Ⅱ首先需要安装基础操作系统(Base OS),本平台使用 Ubuntu Server 12.04的 64 bit版本。安装过程包括系统分区、设置初始用户、配置网卡的IP地址等过程,在选择系统组件时仅需要选择Openssh-server。在Ubuntu安装完成后,需要使用NTP(network time protocol)同步服务器时间,即在服务器 I安装NTP服务器,其他服务通过该服务器进行同步。

由于OpenStack的Nova和Glance等组件需要使用关系数据库,本平台在基础操作系统中安装MySQL 5.5数据库,并使用下列SQL脚本构造OpenStack数据库:

CREATE DATABASE nova;

CREATE USER novadbadmin;

GRANTALLPRIVILEGESONnova.*TO'novadbadmin'@'%';

SET PASSWORD FOR'novadbadmin'@'%'=PASSWORD('novasecret');

CREATE DATABASE glance;

CREATE USER glancedbadmin;

GRANTALLPRIVILEGESONglance.*TO'glancedbadmin'@'%';

SET PASSWORD FOR 'glancedbadmin'@'% '=PASSWORD('glancesecret');

CREATE DATABASE keystone;

CREATE USER keystonedbadmin;

GRANT ALL PRIVILEGES ON keystone.*TO'keystoned badmin'@'%';

SETPASSWORDFOR'keystonedbadmin'@'%'=PASSWORD('keystonesecret');

5.3 OpenStack各组件的安装配置

OpenStack 一般按照 Keystone、Glance、Nova、Swift 和Dashboard顺序进行安装和配置,服务器I依次安装以上全部组件,服务器Ⅱ只需要安装Nova组件。

(1)安装和配置Keystone组件

该组件为OpenStack提供认证、授权、用户管理和角色管理等服务。在使用apt-get命令安装并连接数据库成功后,需要创建租户(tenant)、用户(user)和角色(role),关键代码如下:

keystone tenant-create-name tenant_name

keystone user-create-name user_name-pass user_password-email user_email

keystone role-create-name role_name

然后将租户、用户和角色关联起来,关键代码如下:keystone user-role-add-user$USER_ID-role$ROLE_ID-tenant_id$TENANT_ID

需要注意的是,$USER_ID、$ROLE_ID和$TENANT_ID必须使用OpenStack分配的ID号码,该号码可以使用keystone user-list、keystone tenant-list和 keystone role-list命令查询。

接下来是创建服务目录和端点(endpoint)信息,关键代码如下:

keystone service-create-name service_name-type service_type-description'Description of the service'

图2 Nova服务状态

keystone endpoint-create-region region_name-service_id service_id-publicurlpublic_url-adminurladmin_url-internalurl internal_url

全部配置成功后,Keystone组件安装完成。

(2)安装和配置Glance组件

Glance提供虚拟机镜像管理服务,其安装配置比较简单,首先使用apt-get命令下载安装,然后配置租/用户和密码信息、连接MySQL数据库并配置环境变量,主要是修改/etc/glance/目 录 下 的 g lance-api-paste.ini、glance-registrypaste.ini和glance-api.conf 3个文件。在配置成功Glance服务后,通过使用Keystone的授权机制,可以将虚拟机镜像上传到私有云计算平台中。

(3)安装和配置Nova组件

Nova组件是计算模块,提供多种相关服务。首先使用apt-get命令安装,然后修改/etc/nova/nova.conf配置信息,创建物理卷和卷组信息,改变/etc/nova目录和/etc/nova/nova.conf文件的权限,并通过/etc/nova/api-paste.ini配置租/用户和密码信息,连接MySQL数据库。在这些操作完成后,需要为虚拟机实例设置待分配的IP地址段,关键代码如下:

sudo nova-manage network create private-fixed_range_v4=192.168.4.32/27-num_networks=1-bridge=br100-bridge_interface=eth1-network_size=32

在导出环境变量并重启Nova服务后,可以使用sudo nova-manage service list查看Nova服务状态,如图2所示。

(4)安装和配置 S wift组件

该组件提供云存储服务,其配置过程比较复杂。首先使用apt-get命令安装,然后设置Swift存储后端(backend)。存储后端即可以使用已经存在的分区/卷,也可以创建回送文件(loopback file)系统。本平台在服务器Ⅰ分区时已经给Swift预留了约500 GB的磁盘空间,因此直接使用该分区。使用XFS对该分区进行格式化,然后挂载该分区,并根据需要创建一些节点。

然后配置文件分布工具Rsync,Rsync能够维护对象副本,需要被Swift的多个服务使用。再配置Swift组件信息,需要修改paste.deploy和/etc/swift/swift.conf等文件。下一步是配置Swift的代理服务,代理服务提供看守功能,用来响应客户请求,并负责其他组件间的相互通信过程,配置时需要修改/etc/swift/proxyserver.conf文件。

接下来需要配置账号服务、容器服务和对象服务,主要是修改/etc/swift目录下的account-server.conf、containerserver.conf、object-server.conf 3个配置文件信息。最后配置Swift的环服务,所有的配置完成后,即可使用私有云存储服务。

(5)安装 D ashboard 组件

该组件提供Web形式的管理界面,其安装配置比较简单,直接使用apt-get命令安装,然后在浏览器中输入服务器I的IP地址即可访问Dashboard服务。

5.4 配置虚拟化环境

Nova组件本身不提供虚拟化的能力,而是通过libvirt API与虚拟机进行交互,支持Xen、KVM、VMware、UML(user mode Linux)、LXC和QEMU等虚拟化技术。这些技术中,Xen和KVM是最主流的开源虚拟化项目。Xen使用半虚拟化技术,能够在不支持硬件虚拟化的服务器上运行,其架构比较复杂。KVM是轻量级的虚拟化管理程序模块,目前已经被集成到Linux内核中,只支持全虚拟化技术,需要服务器支持硬件虚拟化技术。本文讨论的私有云计算平台服务器的CPU为Intel Xeon E3-1230,支持Intel VT硬件虚拟化技术,因此选择KVM虚拟化技术。

首先安装KVM,这一过程比较简单[11]。然后制作操作系统镜像文件,这些镜像既可以从网络中下载,也可以自行制作。由于不同的应用环境需要默认安装的应用软件各不相同,所以一般需要自行制作镜像。以Ubuntu为例,自行制作镜像首先需要创建img文件,关键代码如下:

kvm-img create-f qcow2 server.img 10G

然后利用KVM虚拟光驱加载操作系统ISO文件,完成虚拟机中操作系统的安装。在镜像制作完成后,通过Glance命令上传到私有云平台中,关键代码如下:

glance add name=""is_public=true container_format=ovf disk_format=qcow2<.img

在镜像上传成功后,就可以在私有云计算平台中创建虚拟机实例。创建过程主要步骤包括创建授权、加载镜像、连接和使用镜像等。

5.5 管理OpenStack服务

在需要的服务配置完成后,可以通过Dashboard对OpenSatck的各项服务进行在线监控。OpenStack服务状态的Web监控如图3所示。

图3 OpenStack服务状态的Web监控(Dashboard)

Dashboard同时提供了对OpenStack各服务在线管理的功能,主要包括管理虚拟机实例、管理操作系统镜像、管理默认硬件配置文件、管理用户、管理卷等,其图形化操作界面比命令行模式更加友好。

6 开源私有云平台运行实例

6.1 云计算软件测试平台说明

在笔者参与的研究项目中,目前已经利用OpenStack、KVM等开源软件构造了私有云计算平台,该平台用于进行云计算软件测试项目。用户通过浏览器登录和使用云测试项目管理系统,完成申请与执行测试项目、配置虚拟测试环境(用术语“硬件矩阵”和“软件矩阵”表示)、分配和使用虚拟测试服务器等操作,系统的业务流程如图4所示。

测试用户可选择合适的测试环境,申请需要的CPU、内存和磁盘等硬件资源和应用服务器、数据库等软件资源,通过云平台实现快速部署。用户对云测试平台计算、存储和镜像等资源的调用需要使用Keystone组件的认证服务,需要长期保存和使用的测试数据需要使用Swift组件的云存储服务。云测试平台提供了Java、.net和PHP 3种开发技术的云测试环境,3种云测试环境的详细说明见表6。

图4 云计算软件测试项目管理系统业务流程

表6 3种云测试环境说明

6.2 云测试执行实例

笔者使用了私有云平台的虚拟测试服务器进行了某信息采集软件客户端的功能测试,硬件配置选择1CPU、512 MB内存和2 GB硬盘空间,软件环境选择了Java的Web软件测试环境。创建测试项目的系统界面如图5所示。

图5 创建测试项目的系统界面

虚拟测试服务器的创建分为自动创建和手工创建两种方式。如果测试矩阵变量的默认取值可以满足用户需要,用户配置完参数后系统通过调用OpenStack的API自动开启虚拟测试服务器。如果默认取值不符合用户要求,用户可以填写新建矩阵需求表,由系统管理员根据实际情况进行手工添加。

用户一般通过远程连接对虚拟服务器进行管理。Linux平台使用OpenSSH的命令行界面和VNC的图形界面,Windows Server平台使用Windows系统中的 “远程桌面”工具。用户远程连接进入虚拟测试服务器后,就可以配置和使用该虚拟服务器,其使用方式和使用普通物理服务器一致。

7 结束语

利用开源软件构造私有云计算平台具有成本低、部署快、无特殊硬件限制等多个优势,将在教学、科研和商业中得到更加广泛的应用。OpenStack是最值得关注的开源云计算项目,但是目前其配置过程比较复杂。接下来的研究中,笔者将编写自动化安装脚本,以简化OpenStack的部署和应用难度。同时深入研究OpenStack各组件的API,根据研究需要对OpenStack进行二次开发。

1 Berkeley.Above the clouds:a berkeley view of cloud computing.http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-28.pdf,2011

2 陈康,郑纬民.云计算:系统实例与研究现状.软件学报,2009,20(5):1337~1348

3 张帆,李磊,杨成胡等.基于Eucalyptus构建私有云计算平台.电信科学,2011(11):57~61

4 秦润锋,樊勇兵,唐宏等.开源云计算管理平台技术在电信运营商私有云建设中的应用研究.电信科学,2011(10):24~29

5 Ubuntu.A working private cloud for just$9,000.http://www.ubuntu.com/cloud,2012

6 Eucalyptus Systems.Eucalyptus cloud computing software.http://www.eucalyptus.com/,2012

7 OpenStack.Open source software for building private and public clouds.http://openstack.org/,2012

8 CloudStack.Open source cloud computing with cloud stack.http://www.cloudstack.org/,2012

9 OpenNebula.The cloud data center management solution.http://opennebula.org/,2012

10 蒋清野.CY12-Q2 OpenStack,OpenNebula,Eucalyptus,CloudStack社区活跃度比较.http://www.qyjoho.net/?s=活跃度&x=0&y=0,2012

11 秦学东.开源虚拟化—KVM的构建.现代图书情报技术,2011(11):89~92

猜你喜欢

镜像开源虚拟化
镜像
五毛钱能买多少头牛
2019开源杰出贡献奖
基于OpenStack虚拟化网络管理平台的设计与实现
镜像
对基于Docker的虚拟化技术的几点探讨
H3C CAS 云计算管理平台上虚拟化安全防护的实现
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
存储虚拟化还有优势吗?