基于开源软件的私有云计算平台构建
来源:研究与开发杂志 更新时间:2014-03-04

 
本文介绍了私有云的应用范围,讨论了自行开发、商业和开源解决方案各自的特点,分析了开源方案的主要优势.比较了主流的开源云计算项目Eucalyptus、OpenStack、OpenNebula和Nimbus,重点研究了OpenStack架构。在此基础上.讨论了基于OpenStack的私有云计算平台构建方法,其主要过程包括基础环境配置Nova、 Glance、S。ift、Keystone和Horizon组件安装,虚拟机部署等,最后给出了该平台在云计算软件测试项目中的应用实例。
  1、引言
  云计算的应用越来越广泛,对相关问题的研究也逐渐深入,不少公司和研究机构需要构建自己的私有云计算平台。商业解决方案存在价格高、授权模式复杂等问题,并且无法获得系统源代码,很多情况下并不适合采用。开源云计算技术具有成本低、灵活性高等优势。能够方便地获得源代码进行深入研究,因此很多机构都采用开源软件构造私有云计算平台。目前主要的开源云计算项目有Eucalyptus、OpenStack、OpenNebula和Nimbus,本文在对比这些项目的基础上,分析了OpenStack的架构,阐述了利用OpenStack构建私有云平台的方法。
  2、私有云平台概述
  2.1私有云概念
  从用户使用的角度来看.云计算平台可以分为公共云和私有云。公共云部署在互联网中,用户通过网络获得计算资源和存储资源,并按照“即用即付”(pay-as-you-go)的方式付费。私有云是企业或组织内部数据中心的资源,只提供给机构内部人员使用,不对外面向公众。私有云计算平台一般构建在机构的防火墙内部.相对于公共云,其安全性更高.服务质量更有保证。私有云能够充分利用现有的硬件资源和软件资源,可以有效地降低信息化成本。
  2.2私有云计算平台构建模式
  私有云平台的构建可以采用3种模式:研究机构自行开发,这种方式需要企业或研究机构有很强的技术实力。比较典型的是清华大学的透明计算平台:采用商业解决方案,不少商业公司提供了较为成熟的私有云整体解决方案,比较典型的是IBM的“蓝云”计算平台;使用开源解决方案。这种方案是利用开源系统构造企业或组织的私有云平台,比较典型的是使用Eucalyptus和OpenStack等开源系统。3种构造方式的比较见表1。
 
130380303164816387_new.jpg (740×400)  2.3开源私有云计算平台优势
  在自行开发、商业解决方案和开源解决方案3种私有云的构建模式中,开源方案具有如下多个优势。
  (1)使用成本低
  用户只需要购买硬件设备和网络设备,无需为开源软件的使用付费。即使用户需要开源软件开发商提供服务,其需要付出的费用也相对比较低廉。例如,Ubuntu帮助用户构建基于OpenStack的私有云平台的服务费用是9 000美元。相关工作在5天内完成。
  (2)开放源代码
  开放源代码,有利于研究人员对系统内部的实现机制进行深入研究。开源软件使用Apache或其他授权协议,用户能够获得系统的源代码.并且可以通过社区、讨论组等多种形式,与开发人员和其他用户深入探讨各种技术问题。
  (3)平台可扩展性强
  由于现有的云计算技术尚在快速发展中.没有形成统一的技术标准和规范,一旦选择了一种商业解决方案,就很难转换到其他平台。而开源云平台在设计时一般会保持对主流云计算技术(如亚马逊EC2、S3等)的兼容性,同时提供转换工具,有效地避免了厂商锁定问题,增强了系统的可扩展性。
  3、开源云计算项目现状
  3.1 主流开源云计算项目介绍
  目前已经有多个云计算平台的开源实现,主要的开源云计算项目有Eucalyptus、OpenStack、CloudStack和OpenNebula等,基本介绍如下。
  (1)Eucalyptus
  Eucalyptusl6l是加州大学圣芭芭拉分校计算机科学系Rich Wolski领导的项目组完成的开源软件项目,该项目开发和应用较早,目前占有最大的市场份额。其组件无需修改即可使用。可以运行在没做修改的GNU Linux内核上。Eucalyptus提供了与Amazon云计算平台EC2和S3接口的兼容性,可以使客户应用方便地从私有云平台迁移到公共云平台。
  (2)OpenStack
  OpenStack是美国国家航空航天局(NASA)和Rackspace合作研发的开源云计算平台项目.整合了NASA的Nebula Platform和Rackspace的Cloud Files Platform技术。OpenStack得到了多个商业公司和开源组织的支持,被认为是未来开源云计算平台最具有潜力的技术。从Ubuntu11.04版本开始,已经把OpenStack作为内置集成的云计算技术。
  (3)CloudStack
  CloudStacktS源于2008年成立的VMOps公司,2010年改名为Cloud.com,分为社区版本和商业版本。2011年7月思杰系统(Citrix System)公司收购了Cloud.com,把以前维护的商业分支全部合并到了开源分支,并把该软件加入Apache软件基金会.成为了一个完全开源的项目。目前全球已经有多个大规模应用实例,如Zynga、GoDaddy等。
  (4)OpenNebula
  ODenNebul源于2005年Ignacio M Llorente和Rub6nS Montero创立的一个研究项目,于2008年7月发布了第一个公开版本。OpenNebula是一个虚拟化企业数据中心和云基础设施建设和管理的行业开源解决方案,具有开放性、模块化和可扩展的架构,目前已成为欧盟云计算项目RESERVOIR中虚拟执行环境管理器VEEM的核心组件。
  3.2开源云计算项目对比
  Eucalyptus、OpenStack、CloudStack和OpenNebula这4个主流的开源云计算项目各有特点。表2从多个方面对这4个项目进行了对比。
130380303164816387_new.jpg (740×400)
  在主流的开源云计算项目中,OpenStack目前已经获得英特尔、惠普、戴尔、Ubuntu、思科等多个重要公司和开源组织的支持,是目前最热门的开源云计算项目,因此本文选择OpenStaek构造私有云平台。
  4、OpenStack平台架构
  4.1 OpenStack服务架构
  OpenStack中有Compute、Storage、Image、Identity和Dashboard 5个子项目,其服务架构如图1所示。
130380303830964488_new.jpg (375×255)
  其中,Compute、Storage、Image是核心的3个子项目,提供计算、对象存储和镜像管理服务,其他的子项目包括提供身份认证的Identity、基于Web的管理控制台Dashboard等。OpenStack需要通过虚拟化技术使用基础硬件平台,客户应用系统可以通过OpenStack提供的接口(API)访问各个云服务实例。
  4.2 OpenStack主要实现
  OpenStack云计算平台管理系统目前有Nova、Swift、Glanee、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)等;Swirl组件提供云存储服务。适合存储大量、长期、需要备份的数据。Swift通过“账户一容器一对象”(account.container.object)的形式提供对象存储服务,一个账户下可有多个容器.每个容器中可存储多个对象。环服务是Swift最重要的组件,用于记录存储对象与物理位置间的映射关系。
  5、基于OpenStack的私有云平台构建
  5.1 总体说明
  本文选择OpenStack来构造私有云平台实例,并采用Ubuntu、KVM等开源软件作为平台的基础操作系统和虚拟化工具。私有云平台使用的主要开源软件说明见表3。
130380304121261092_new.jpg (742×390)  本文讨论的私有云平台实例主要应用在科研实验室环境中.服务器采用x86架构,硬件设备初始的投入成本较低,并可以根据需要动态扩展各种资源。私有云平台的初始硬件配置见表4。
 5.2基础环境的配置
  一个典型的私有云计算平台至少采用两台服务器,本文将其称为服务器1和服务器2。服务器1上安装Nova、Glance、Swift、Keystone和Horizon全部组件,作为云平台的控制节点和存储节点;服务器2仅安装Nova组件,作为云平台的计算节点。在平台性能不能满足需要的情况下,可以动态扩展计算和存储等资源。每台服务器均配置2块吉比特以太网卡.第一块网卡eth0设置为外部可访问的IP地址,第二块网卡eth1设置为云平台各节点内部通信的IP地址。服务器1和服务器2的配置说明见表5。
  服务器1和服务器2首先需要安装基础操作系统
  (Base OS).本平台使用Ubuntu Server 12.04的64 bit版本。安装过程包括系统分区、设置初始用户、配置网卡的IP地址等过程,在选择系统组件时仅需要选择Openssh.server。在Ubuntu安装完成后,需要使用NTP(network time protoc01)同步服务器时间,即在服务器1安装NTP服务器,其他服务通过该服务器进行同步。
  由于OpenStack的Nova和Glance等组件需要使用关系数据库,本平台在基础操作系统中安装MySQL 5.5数据库,并使用下列SQL脚本构造OpenStaek数据库:
  CREATE DATABASE nova;
  CREATE USER novadbadmin;
  GRANTALLPRIVILEGESONnova*TO'novadbadmin'@%,'
  SET PASSWORD FOR"novadbadmin’@%7=PASSWORD("novasecret,);
  CREATE DATABASE glance;
  CREATE USER dancedbadmin;
  GRANTALLPRIVILEGESoNglance*TO'glancedbadmin'@%'
  SET PASSWORD FOR"glancedbadmin'@'%'=PASSWORD("glancesecret');
  CREATE DATABASE keystone;
  CREATE USER keystonedbadmin;
  GRANT ALL PRIVILEGES ON keystone.+TO"keystoned badmin'@7%'
  SET PASSWORD FOR 'keystonedbadmin'@%'=PASSWORD("keystonesecret');
  5.3 OpenStack各组件的安装配置
  OpenStack一般按照Keystone、Glance、Nova、Swift和Dashboard顺序进行安装和配置,服务器1依次安装以上全部组件,服务器2只需要安装Nova组件。
 
本文介绍了私有云的应用范围,讨论了自行开发、商业和开源解决方案各自的特点,分析了开源方案的主要优势.比较了主流的开源云计算项目Eucalyptus、OpenStack、OpenNebula和Nimbus,重点研究了OpenStack架构。在此基础上.讨论了基于OpenStack的私有云计算平台构建方法,其主要过程包括基础环境配置Nova、 Glance、S。ift、Keystone和Horizon组件安装,虚拟机部署等,最后给出了该平台在云计算软件测试项目中的应用实例。
  1、引言
  云计算的应用越来越广泛,对相关问题的研究也逐渐深入,不少公司和研究机构需要构建自己的私有云计算平台。商业解决方案存在价格高、授权模式复杂等问题,并且无法获得系统源代码,很多情况下并不适合采用。开源云计算技术具有成本低、灵活性高等优势。能够方便地获得源代码进行深入研究,因此很多机构都采用开源软件构造私有云计算平台。目前主要的开源云计算项目有Eucalyptus、OpenStack、OpenNebula和Nimbus,本文在对比这些项目的基础上,分析了OpenStack的架构,阐述了利用OpenStack构建私有云平台的方法。
  2、私有云平台概述
  2.1私有云概念
  从用户使用的角度来看.云计算平台可以分为公共云和私有云。公共云部署在互联网中,用户通过网络获得计算资源和存储资源,并按照“即用即付”(pay-as-you-go)的方式付费。私有云是企业或组织内部数据中心的资源,只提供给机构内部人员使用,不对外面向公众。私有云计算平台一般构建在机构的防火墙内部.相对于公共云,其安全性更高.服务质量更有保证。私有云能够充分利用现有的硬件资源和软件资源,可以有效地降低信息化成本。
  2.2私有云计算平台构建模式
  私有云平台的构建可以采用3种模式:研究机构自行开发,这种方式需要企业或研究机构有很强的技术实力。比较典型的是清华大学的透明计算平台:采用商业解决方案,不少商业公司提供了较为成熟的私有云整体解决方案,比较典型的是IBM的“蓝云”计算平台;使用开源解决方案。这种方案是利用开源系统构造企业或组织的私有云平台,比较典型的是使用Eucalyptus和OpenStack等开源系统。3种构造方式的比较见表1。
 
130380303164816387_new.jpg (740×400)  2.3开源私有云计算平台优势
  在自行开发、商业解决方案和开源解决方案3种私有云的构建模式中,开源方案具有如下多个优势。
  (1)使用成本低
  用户只需要购买硬件设备和网络设备,无需为开源软件的使用付费。即使用户需要开源软件开发商提供服务,其需要付出的费用也相对比较低廉。例如,Ubuntu帮助用户构建基于OpenStack的私有云平台的服务费用是9 000美元。相关工作在5天内完成。
  (2)开放源代码
  开放源代码,有利于研究人员对系统内部的实现机制进行深入研究。开源软件使用Apache或其他授权协议,用户能够获得系统的源代码.并且可以通过社区、讨论组等多种形式,与开发人员和其他用户深入探讨各种技术问题。
  (3)平台可扩展性强
  由于现有的云计算技术尚在快速发展中.没有形成统一的技术标准和规范,一旦选择了一种商业解决方案,就很难转换到其他平台。而开源云平台在设计时一般会保持对主流云计算技术(如亚马逊EC2、S3等)的兼容性,同时提供转换工具,有效地避免了厂商锁定问题,增强了系统的可扩展性。
  3、开源云计算项目现状
  3.1 主流开源云计算项目介绍
  目前已经有多个云计算平台的开源实现,主要的开源云计算项目有Eucalyptus、OpenStack、CloudStack和OpenNebula等,基本介绍如下。
  (1)Eucalyptus
  Eucalyptusl6l是加州大学圣芭芭拉分校计算机科学系Rich Wolski领导的项目组完成的开源软件项目,该项目开发和应用较早,目前占有最大的市场份额。其组件无需修改即可使用。可以运行在没做修改的GNU Linux内核上。Eucalyptus提供了与Amazon云计算平台EC2和S3接口的兼容性,可以使客户应用方便地从私有云平台迁移到公共云平台。
  (2)OpenStack
  OpenStack是美国国家航空航天局(NASA)和Rackspace合作研发的开源云计算平台项目.整合了NASA的Nebula Platform和Rackspace的Cloud Files Platform技术。OpenStack得到了多个商业公司和开源组织的支持,被认为是未来开源云计算平台最具有潜力的技术。从Ubuntu11.04版本开始,已经把OpenStack作为内置集成的云计算技术。
  (3)CloudStack
  CloudStacktS源于2008年成立的VMOps公司,2010年改名为Cloud.com,分为社区版本和商业版本。2011年7月思杰系统(Citrix System)公司收购了Cloud.com,把以前维护的商业分支全部合并到了开源分支,并把该软件加入Apache软件基金会.成为了一个完全开源的项目。目前全球已经有多个大规模应用实例,如Zynga、GoDaddy等。
  (4)OpenNebula
  ODenNebul源于2005年Ignacio M Llorente和Rub6nS Montero创立的一个研究项目,于2008年7月发布了第一个公开版本。OpenNebula是一个虚拟化企业数据中心和云基础设施建设和管理的行业开源解决方案,具有开放性、模块化和可扩展的架构,目前已成为欧盟云计算项目RESERVOIR中虚拟执行环境管理器VEEM的核心组件。
  3.2开源云计算项目对比
  Eucalyptus、OpenStack、CloudStack和OpenNebula这4个主流的开源云计算项目各有特点。表2从多个方面对这4个项目进行了对比。
130380303164816387_new.jpg (740×400)
  在主流的开源云计算项目中,OpenStack目前已经获得英特尔、惠普、戴尔、Ubuntu、思科等多个重要公司和开源组织的支持,是目前最热门的开源云计算项目,因此本文选择OpenStaek构造私有云平台。
  4、OpenStack平台架构
  4.1 OpenStack服务架构
  OpenStack中有Compute、Storage、Image、Identity和Dashboard 5个子项目,其服务架构如图1所示。
130380303830964488_new.jpg (375×255)
  其中,Compute、Storage、Image是核心的3个子项目,提供计算、对象存储和镜像管理服务,其他的子项目包括提供身份认证的Identity、基于Web的管理控制台Dashboard等。OpenStack需要通过虚拟化技术使用基础硬件平台,客户应用系统可以通过OpenStack提供的接口(API)访问各个云服务实例。
  4.2 OpenStack主要实现
  OpenStack云计算平台管理系统目前有Nova、Swift、Glanee、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)等;Swirl组件提供云存储服务。适合存储大量、长期、需要备份的数据。Swift通过“账户一容器一对象”(account.container.object)的形式提供对象存储服务,一个账户下可有多个容器.每个容器中可存储多个对象。环服务是Swift最重要的组件,用于记录存储对象与物理位置间的映射关系。
  5、基于OpenStack的私有云平台构建
  5.1 总体说明
  本文选择OpenStack来构造私有云平台实例,并采用Ubuntu、KVM等开源软件作为平台的基础操作系统和虚拟化工具。私有云平台使用的主要开源软件说明见表3。
130380304121261092_new.jpg (742×390)  本文讨论的私有云平台实例主要应用在科研实验室环境中.服务器采用x86架构,硬件设备初始的投入成本较低,并可以根据需要动态扩展各种资源。私有云平台的初始硬件配置见表4。
 5.2基础环境的配置
  一个典型的私有云计算平台至少采用两台服务器,本文将其称为服务器1和服务器2。服务器1上安装Nova、Glance、Swift、Keystone和Horizon全部组件,作为云平台的控制节点和存储节点;服务器2仅安装Nova组件,作为云平台的计算节点。在平台性能不能满足需要的情况下,可以动态扩展计算和存储等资源。每台服务器均配置2块吉比特以太网卡.第一块网卡eth0设置为外部可访问的IP地址,第二块网卡eth1设置为云平台各节点内部通信的IP地址。服务器1和服务器2的配置说明见表5。
  服务器1和服务器2首先需要安装基础操作系统
  (Base OS).本平台使用Ubuntu Server 12.04的64 bit版本。安装过程包括系统分区、设置初始用户、配置网卡的IP地址等过程,在选择系统组件时仅需要选择Openssh.server。在Ubuntu安装完成后,需要使用NTP(network time protoc01)同步服务器时间,即在服务器1安装NTP服务器,其他服务通过该服务器进行同步。
  由于OpenStack的Nova和Glance等组件需要使用关系数据库,本平台在基础操作系统中安装MySQL 5.5数据库,并使用下列SQL脚本构造OpenStaek数据库:
  CREATE DATABASE nova;
  CREATE USER novadbadmin;
  GRANTALLPRIVILEGESONnova*TO'novadbadmin'@%,'
  SET PASSWORD FOR"novadbadmin’@%7=PASSWORD("novasecret,);
  CREATE DATABASE glance;
  CREATE USER dancedbadmin;
  GRANTALLPRIVILEGESoNglance*TO'glancedbadmin'@%'
  SET PASSWORD FOR"glancedbadmin'@'%'=PASSWORD("glancesecret');
  CREATE DATABASE keystone;
  CREATE USER keystonedbadmin;
  GRANT ALL PRIVILEGES ON keystone.+TO"keystoned badmin'@7%'
  SET PASSWORD FOR 'keystonedbadmin'@%'=PASSWORD("keystonesecret');
  5.3 OpenStack各组件的安装配置
  OpenStack一般按照Keystone、Glance、Nova、Swift和Dashboard顺序进行安装和配置,服务器1依次安装以上全部组件,服务器2只需要安装Nova组件。
 
130380304579677312_new.jpg (735×248)
130380304873274105_new.jpg (597×133)
     (1)安装和配置Keystone组件
  该组件为OpenStaek提供认证、授权、用户管理和角色管理等服务。在使用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
  需要注意的是.SUSER_ID、$ROLEID和$TENANT_ID必须使用OpenStack分配的ID号码,该号码可以使用keystone user-list、keystone tenant-list和keystone role-list命令查询。
  接下来是创建服务目录和端点(endpoinI)信息,关键代码如下:
  keystone service-create-name service_name-type service_type-description 'Description of the service'
  keystone endpoint-create -region region_name-service_id service_id-publieurl public url-adminurl admin_url-intemal_url intemal_url
  全部配置成功后,Keystone组件安装完成。
  (2)安装和配置Glance组件
  Glance提供虚拟机镜像管理服务,其安装配置比较简单,首先使用apt-get命令下载安装,然后配置租,用户和密码信息、连接MySQL数据库并配置环境变量.主要是修改,ete/glanee/目录下的glanee-api-paste.ini、glance-registry-paste.ini和glance.api.conf 3个文件。在配置成功Glance服务后,通过使用Keystone的授权机制,可以将虚拟机镜像上传到私有云计算平台中。
  (3)安装和配置Nova组件
  Nova组件是计算模块。提供多种相关服务。首先使用apt-get命令安装,然后修改/ete/nova/nova.cod配置信息,创建物理卷和卷组信息,改变/etc/nova目录和/ete/nova/nova.conf文件的权限,并通过/etc/nova/api-paste.ini配置租/用户和密码信息,连接MySQL数据库。在这些操作完成后,需要为虚拟机实例设置待分配的口地址段,关键代码如下:
  Sudo nova-manange network create private –fixed_range_v4=192.168.4.32/27 – num_networks=1 –bridge=br100-bridge_interface=eth1-netework_size=32
  在导出环境变量并重启Nova服务后,可以使用sudonova-manage service list查看Nova服务状态,如图2所示。
  (4)安装和配置Swift组件
  该组件提供云存储服务,其配置过程比较复杂。首先使用apt-get命令安装,然后设置Swift存储后端(backend)。存储后端即可以使用已经存在的分区/卷,也可以创建回送文件(loopback file)系统。本平台在服务器1分区时已经给Swift预留了约500 GB的磁盘空间,因此直接使用该分区。使用XFS对该分区进行格式化,然后挂载该分区,并根据需要创建一些节点。
  然后配置文件分布工具Rsyne,Rsync能够维护对象副本。需要被Swift的多个服务使用。再配置Swift组件信息,需要修改paste.deploy和/etc/swift/swift.conf等文件。下一步是配置Swift的代理服务,代理服务提供看守功能。用来响应客户请求,并负责其他组件间的相互通信过程,配置时需要修改/etc/swift/proxyrserver.conf文件。
  接下来需要配置账号服务、容器服务和对象服务。主要是修改/etc/swift目录下的account-server.conf、container-server.conf、object-server.conf 3个配置文件信息。最后配置Swift的环服务,所有的配置完成后,即可使用私有云存储服务。
  (5)安装Dashboard组件
  该组件提供Web形式的管理界面。其安装配置比较简单,直接使用apt-get命令安装,然后在浏览器中输入服务器1的口地址即可访问Dashboard服务。
  5.4配置虚拟化环境
  Nova组件本身不提供虚拟化的能力.而是通过libvirtAPI与虚拟机进行交互.支持Xen、KVM、VMware、UML(user mode Linux)、LXC和QEMU等虚拟化技术。这些技术中,Xen和KVM是最主流的开源虚拟化项目。Xen使用半虚拟化技术。能够在不支持硬件虚拟化的服务器上运行,其架构比较复杂。KVM是轻量级的虚拟化管理程序模块,目前已经被集成到Linux内核中.只支持全虚拟化技术,需要服务器支持硬件虚拟化技术。本文讨论的私有云计算平台服务器的CPU为Intel Xeon E3.1230。支持Intel VT硬件虚拟化技术,因此选择KVM虚拟化技术。
  首先安装KVM,这一过程比较简单。然后制作操作系统镜像文件。这些镜像既可以从网络中下载。也可以自行制作。由于不同的应用环境需要默认安装的应用软件各不相同,所以一般需要自行制作镜像。以Ubtmtu为例,自行制作镜像首先需要创建img文件,关键代码如下:
  kvm-img create -f qcow2 server.img 10G
  然后利用KVM虚拟光驱加载操作系统ISO文件,完成虚拟机中操作系统的安装。在镜像制作完成后,通过Glance命令上传到私有云平台中,关键代码如下:
  glance add Halne=””is_public=truecontainer_format=ovf disk_format=qeow2<.img
  在镜像上传成功后。就可以在私有云计算平台中创建虚拟机实例。创建过程主要步骤包括创建授权、加载镜像、连接和使用镜像等。
  5.5管理OpenStack服务
  在需要的服务配置完成后,可以通过Dashboard对OpenSatek的各项服务进行在线监控。OpenStack服务状态的Web监控如图3所示。
130380305157000333_new.jpg (367×228)
  Dashboard同时提供了对OpenStack各服务在线管理的功能,主要包括管理虚拟机实例、管理操作系统镜像、管理默认硬件配置文件、管理用户、管理卷等.其图形化操作界面比命令行模式更加友好。
  6、开源私有云平台运行实例
  6.1 云计算软件测试平台说明
  在笔者参与的研究项目中,目前已经利用OpenStack、KVM等开源软件构造了私有云计算平台.该平台用于进行云计算软件测试项目。用户通过浏览器登录和使用云测试项目管理系统,完成申请与执行测试项目、配置虚拟测试环境(用术语“硬件矩阵”和“软件矩阵”表示)、分配和使用虚拟测试服务器等操作,系统的业务流程如图4所示。
 130380305437896399_new.jpg (268×446)

  测试用户可选择合适的测试环境,申请需要的CPU、内存和磁盘等硬件资源和应用服务器、数据库等软件资源,通过云平台实现快速部署。用户对云测试平台计算、存储和镜像等资源的调用需要使用Keystone组件的认证服务,需要长期保存和使用的测试数据需要使用Swift组件的云存储服务。云测试平台提供了Java、.net和PHP 3种开发技术的云测试环境,3种云测试环境的详细说明见表6。
130380305747454105_new.jpg (376×480)
  6.2云测试执行实例
  笔者使用了私有云平台的虚拟测试服务器进行了某信息采集软件客户端的功能测试,硬件配置选择1CPU、512 MB内存和2 GB硬盘空间,软件环境选择了Java的Web软件测试环境。创建测试项目的系统界面如图5所示。
  虚拟测试服务器的创建分为自动创建和手工创建两种方式。如果测试矩阵变量的默认取值可以满足用户需要,用户配置完参数后系统通过调用OpenStaek的API自动开启虚拟测试服务器。如果默认取值不符合用户要求,用户可以填写新建矩阵需求表,由系统管理员根据实际情况进行手工添加。
  用户一般通过远程连接对虚拟服务器进行管理。Linux平台使用0penSSH的命令行界面和VNC的图形界面,Windows Server平台使用Win&wS系统中的“远程桌面”工具。用户远程连接进入虚拟测试服务器后,就可以配置和使用该虚拟服务器。其使用方式和使用普通物理服务器一致。
  7、结束语
  利用开源软件构造私有云计算平台具有成本低、部署快、无特殊硬件限制等多个优势,将在教学、科研和商业中得到更加广泛的应用。OpenStack是最值得关注的开源云计算项目,但是目前其配置过程比较复杂。接下来的研究中,笔者将编写自动化安装脚本,以简化OpenStack的部署和应用难度。同时深入研究OpenStack各组件的API,根据研究需要对OpenStack进行二次开发。