基于OpenStack的云计算数据中心管理系统的设计与开发 - 图文

更新时间:2024-06-21 18:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

南京邮电大学 毕 业 设 计(论 文)

题 目

专 业 学生姓名 班级学号 指导教师 指导单位

日期:

基于OpenStack的云计算数据中心管理系统

网络工程

物联网学院

年 1月 19日至 2015年 6月 12日

2015

毕业设计(论文)原创性声明

本人郑重声明:所提交的毕业设计(论文),是本人在导师指导下,独立进行研究工作所取得的成果。除文中已注明引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写过的作品成果。对本研究做出过重要贡献的个人和集体,均已在文中以明确方式标明并表示了谢意。

论文作者签名:

日期: 年 月 日

摘 要

云计算(Cloud Computing)是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、联机存储技术(Network Storage Technology)、虚拟化(Virtualization)、负载均衡(Load Balance)等一系列传统计算机技术和网络技术发展融合的产物。它旨在通过网络将多个成本低廉的计算实体整合成一个大型计算资源池,并借助SaaS、PaaS、IaaS等服务模式,将强大的计算能力分发到终端用户手中。云计算的核心理念就是通过不断提高“云”端处理能力,减轻用户负担,将一系列的IT能力以服务形式提供给用户,简化用户终端的处理负担,最终使用户成为一个单纯的输入/输出设备,享受“云”提供的强大计算处理及服务能力。

OpenStack是一个开源的云计算项目和工具集,并且提供了关于基础设施即服务(IaaS)的解决方案。OpenStack具有建设这样资源池的能力,通过OpenStack的各种组件多种模式的排列组合,可以搭建成各种规模的“云”,这些云可以是私有云、公有云、混合云。本文首先介绍了云计算的背景及其相关技术,并深入了解OpenStack的架构和其各种服务,掌握各种服务实现原理,以及探讨OpenStack如何实现对云计算数据中心的管理,最后动手搭建OpenStack云平台和尝试对功能的扩展。由于OpenStack云计算平台在国内的研究起步较晚,在安装部署过程中会出现若干问题。本文就出现的问题加以汇总并给出解决方法,可以在安装部署OpenStack时提供参考。

关键词:云计算;IaaS;OpenStack;管理平台

ABSTRACT

Cloud Computing is the product of a series of traditional computer technology and network technology integration of Grid Computing, Distributed Computing, Parallel Computing, Utility Computing, Network Storage Technology, Virtualization, Load Balance and so on. It is designed by the network to integrate multiple low-cost computing entity into a large pool of computing resources, and with SaaS, PaaS, IaaS services model, the computing power is distributed to the end users. Cloud computing is the core concept by continuously improving the \reduce the burden on the user, a series of IT capabilities as a service to users, simplify the processing burden on the user terminal, and ultimately make the user a simple input / output equipment. What's more, people could enjoy powerful computing capabilities \

OpenStack is an open source cloud computing projects and tools, and provides information on the infrastructure as a service (IaaS) solutions. OpenStack has the ability to build such a resource pool, through permutations and combinations of the various components of OpenStack multiple modes, can be built into a variety of sizes, \describes the background of cloud computing and related technologies, and in-depth understanding of OpenStack architecture and its various services. In order to acknowlodge a variety of services to achieve the principles, and to explore how to achieve the OpenStack cloud computing data center management, we finally have come up with OpenStack Cloud platform and try to extend the capabilities. Since the OpenStack cloud computing platform in China started late, there will be a number of issues in the installation and deployment process. This article appeared to be summary of the issues and gives solutions that can provide a reference during the installation deploy OpenStack.

Keywords: Cloud Computing; IaasS; OpenStack; Management Platform

目 录

第一章 绪论 ........................................... 1

1.1 研究背景及意义 .............................................. 1

1.1.1 背景及意义............................................. 1 1.1.2 国内外发展现状......................................... 1 1.2 研究工作意义 ................................................ 3 1.3 论文组织结构 ................................................ 4

第二章 IaaS及关键技术相关介绍 ......................... 5

2.1 Iaas概述.................................................... 5 2.2 IaaS服务特征及优势.......................................... 5 2.3 IaaS整体架构................................................ 5 2.4 IaaS关键技术介绍............................................ 7

2.4.1 虚拟化技术............................................. 7 2.4.2 KVM与QEMU............................................. 7 2.4.3 数据存储技术........................................... 8 2.4.4 资源管理技术........................................... 9 2.4.5 能耗管理技术........................................... 9 2.5 本章小结 ................................................... 10

第三章 OpenStack相关介绍 ............................. 11

3.1 OpenStack简介.............................................. 11

3.1.1 OpenStack基础架构 .................................... 11 3.1.2 OpenStack访问流程 .................................... 12 3.2 OpenStack认证服务——Keystone.............................. 13

3.2.1 Keystone介绍 ......................................... 13 3.2.2 Keystone概念 ......................................... 13 3.3 OpenStack计算服务——Nova.................................. 14

3.3.1 Nova简介 ............................................. 14 3.3.2 Nova架构 ............................................. 15 3.3.3 Nova工作流程 ......................................... 16 3.4 OpenStack网络服务——Neutron............................... 17

3.4.1 Neutron介绍 .......................................... 17 3.4.2 Neutron 网络创建过程.................................. 18 3.5 本章小结 ................................................... 19

第四章 OpenStack云管理平台的搭建 ..................... 20

4.1 单节点安装部署OpenStack.................................... 20

4.1.1 实验环境及实验拓扑.................................... 20

4.1.2 构建过程.............................................. 20 4.2 云平台搭建主要过程和问题解决 ............................... 21

4.2.1 Keystone的安装与问题分析 ............................. 21 4.2.2 Glance的安装与问题分析 ............................... 22 4.2.3 Cinder的安装与问题分析 ............................... 23 4.2.4 Nova和Quantum的安装与问题分析 ....................... 24 4.2.5 Horizon的安装与问题分析 .............................. 28 4.3 OpenStack计费系统的研究.................................... 28

4.3.1 OpenStack计费系统的设计与实现 ........................ 29 4.3.2 计费系统的计费机制.................................... 30 4.3.3 计费系统的扣费方法.................................... 30 4.3.4 计费系统的安全检查.................................... 30 4.3.5 计费系统与资源监控系统的交互.......................... 30 4.3.6 计费系统的数据处理.................................... 31 4.3.7 计费系统功能的设计.................................... 32 4.4 本章小结 ................................................... 34

第五章 OpenStack云平台的测试 ......................... 35

5.1 对各项服务的测试 ........................................... 35

5.1.1 创建实例.............................................. 35 5.1.2 查看实例概况.......................................... 35 5.1.3 动态调整实例大小...................................... 35 5.2 对实例可用性的测试 ......................................... 36 5.3 本章小结 ................................................... 37

结束语 .................................................. 38 致 谢 ................................................ 39 参考文献 ................................................ 40

南京邮电大学2015届本科生毕业设计(论文)

第一章 绪论

1.1 研究背景及意义 1.1.1 背景及意义

人类社会从蒸汽机进入了工业时代,又从电的时期进入了现代文明,从计算机互联网进入了地球村的时代。那么,云时代的到来会是怎样一番情景?云计算被认为是继个人电脑、互联网之后电子信息技术领域的又一次重大的变革,其实质是一种基于互联网的计算模式,在这样的模式下,计算资源(计算能力、存储能力、交互能力)是动态、可伸缩且虚拟化的,以服务的方式提供。这种新型的计算资源组织、分配和使用模式,有利于合理配置计算资源并提高其利用率,降低成本,促进节能减排,实现了绿色计算,这更切合了我国经济转型的发展战略。OpenStack作为一个开源的云计算平台,吸引了众多一流厂商的加入,这些机构与个人都将OpenStack作为基础设施即服务(IaaS)资源的通用前端。

1.1.2 国内外发展现状

最近,新浪云计算宣布正式加入全球开源云计算项目OpenStack,将选择OpenStack作为IaaS平台解决方案。作为OpenStack中国的积极推动者,这在很大程度上将推动OpenStack云开源代码项目的发展。更值得高兴的是,中国企业UnitedStack现已推出了基于OpenStack的云计算服务,这充分说明了OpenStack的存在价值。

通过trends.google.com,可以了解到目前人们对一些开源云计算项目的关注趋势。Rackspace以OpenStack为基础的私有云业务每年7亿美元,增长率超过20%。因此,在开源云计算项目领域,OpenStack早已崭露头角,如图 1.1所示,它成为了当今最热门的开源项目之一。

Eucalyptus 是最早试图克隆AWS的开源IaaS云平台,整体架构如图1的左半部分所示。Eucalyptus由云控制器(CLC)、Walrus、集群控制器 (CC)、存储控制器(SC)和节点控制器(NC)组成,它们相互协作共同提供所需的云服务。组件间使用支持WS-Security的SOAP消息实现安 全的通信。Eucalyptus对外提供兼容AWS的SOAP和Query接口,不提供其他API。

OpenNebula没有采用SOA的设计,没有将计算、存储和网络设计为独立组件,解耦做得还不够。值得注意的是,OpenNebula用 Libvirt所提供的接口远程

1

南京邮电大学2015届本科生毕业设计(论文)

调用计算节点上的虚拟化控制命令。这种Agentless的设计在系统安装部署阶段会减少很多软件安装配置工作,是一个设计亮点。

所有的开源IaaS云平台在分层上做得都比较好;在SOA/组件化/解耦这点上来看,OpenStack和Eucalyptus有优势;在框架和插件设计上,除Eucalyptus较差外,其他平台均有很好的设计——OpenStack的开发平台做得最好,CloudStack次 之。综合来看,目前OpenStack的设计是最好的,Eucalyptus和CloudStack次之。

相比开源项目的“前辈”,OpenStack是一个更高级且现代化的开源项目,因为它是高度协作的产物。

OpenStack的支持者都是世界顶级的供应商,可以看出OpenStack倍受青睐,可以说它是开源界的明星产品。目前,例如VMware、RedHat、Cisco、EMC等各供应商,都表示对其支持。

图1.1 OpenStack与其它开源云计算项目的趋势对比

相比之下,OpenStack项目从最开始就发展开放社区,其直接结果是,OpenStack里聚集了比CloudStack更多的主流供应商。在大多数情况下,这些厂商开发的组件第一时间提供给OpenStack,之后才为CloudStack提供接口[1]。

OpenStack也有不够完善的地方,如OpenStack相对于CloudStack来说更加复杂,对终端用户的支持不够;在安装部署上不如CloudStack便捷;在界面显

2

南京邮电大学2015届本科生毕业设计(论文)

示方面也不如CloudStack丰富。

Amazon 公司于2006年推出的云计算服务(AWS,Amazon Web Services)核心产品包括弹性计算云EC2(Elastic Computing Cloud)、简单存储服务S3(Simple Storage Service)、简单队列服务 SQS(Simple Queue Service)、内容推送服务(CloudFront)和简单数据库服务(SimpleDB)等,为企业提供计算和存储服务。Amazon 公司收费的服务项目包括存储空间、带宽、CPU资源以及月租费。其中存储空间、带宽按容量收费,CPU 根据运算时长收费,月租费则与电话月租费类似[9]。

Google 是最大的云计算技术使用者,提供全球知名的互联网搜索引擎服务。Google 搭建了一个称为Google App Engine的云平台,为第三方应用提供大型并行计算服务。更值得一提的是,Google 于2007秋季在全球宣布了云计划,通过与 IBM 开展合作,开始在美国多所大学,包括卡内基美隆大学、麻省理工学院等,推广云计算技术。这项计划希望通过为这些大学提供相关的软硬件设备及技术支援,能降低分布式计算技术在学术研究方面的成本,并且使得学生可以透过网络开展各项以大规模计算为基础的研究计划[13]。

IBM于2007年第四季度推出了“Blue Cloud(蓝云)”云计算平台,提供即买即用的云计算服务[3]。“蓝云”使用具有自我管理和自我修复的虚拟化云计算软件,使得用户的应用可以访问分布式的大型计算服务器池。2008年8月1日,IBM宣布斥资3.6亿美元在美国北卡罗来纳州建立云计算数据中心。IBM 同时还将在东京建立一所新的机构,帮助用户使用云计算基础设施。另外,IBM亦与17个欧洲组织合作开展 RESERVOIR 云计算项目,实现 “无障碍的资源和服务虚拟化”。

微软于2008年10月推出了Windows Azure操作系统,Azure底层是微软全球基础服务系统,由分布于全球的第四代数据中心组成,通过互联网让 Windows 真正由PC延伸到云计算服务上。目前,微软的云计算系统已经包括超过 220个集装箱式数据中心和多达44万台的服务器。

1.2 研究工作意义

自从2006年Google首席执行官埃里克·施密特在搜索引擎大会上首次提出 “云计算”(Cloud Computing)的概念, 云计算就成为近几年来IT领域一个非常热门的研究方向。它使用户能够通过网络便利、按需地从一个共享的、可配置的资源池中获取计算、存储、网络等资源。 而在云计算的3种部署模式(公有云、私有云、混合云)中,公有云虽然以其低廉的价格、灵活的弹性策略吸引大量的用户。

3

南京邮电大学2015届本科生毕业设计(论文)

然而,构建一个云计算数据中心,使之主要为企业内部乃至公共市场提供云服务,并且让IT人员能对其数据、安全性和服务质量进行有效的控制,成为倍受大企业青睐的选择。此外,云计算数据中心能够提供更高效、个性化的弹性计算资源分配能力,能够更有效地利用企业内部现有的IT设备资源,打造更符合企业需求的云平台。鉴于上述提到的公有云的数据安全问题,本文的出发点在于如何构建一个适合本地环境的云计算数据中心管理系统;针对实验室或开发环境构建一个云计算平台,使实验室可以针对数据安全、计算资源的按需获取等进行评估和探索。在实际试验中,本文基于 OpenStack 开源云计算平台,实现了在科研实验室环境中搭建云计算管理平台,使得资源能够得到弹性分配,且确保数据安全。

希望通过本文,能帮助大家了解云计算和OpenStack,以及如何用OpenStack配置搭建自己的云环境,并通过前端来设置及管理云平台。本文的目的在于搭建OpenStack云管理平台,探索OpenStack的神奇之处,旨在更深层次地了解OpenStack生态圈。

1.3 论文组织结构

本篇论文共分五章,主要内容概括如下:

第一章绪论。简单介绍云计算的研究背景、意义以及论文的组织结构。 第二章IaaS及关键技术相关介绍。这一章介绍了IaaS的概述、IaaS服务特征及优势。同时,介绍了IaaS服务器虚拟化,IaaS存储虚拟化、IaaS网络虚拟化这三大虚拟化的实现原理。

第三章OpenStack相关介绍。这一章首先介绍了OpenStack的概念架构和访问流程对OpenStack的整体运行原理有一个大致的了解,之后详细介绍了OpenStack的三大服务:认证服务(Keystone)、计算服务(Nova)、网络服务(Neutron)。

第四章OpenStack云管理平台的搭建。这部分是具有挑战性的,从基础环境的配置开始,完成之后开始安装各种软件包,每安装一个软件包后都要进行详细的配置文件的修改。另外,还对计费模块进行了初步研究。

第五章OpenStack云平台的测试。这章节主要是完成对第五章的所有部署的验证,每一个所需服务是否都已启动,之后是启动一个instance的过程,并对实例的成功启动之后进行网络测试。

最后是结束语。

4

南京邮电大学2015届本科生毕业设计(论文)

第二章 IaaS及关键技术相关介绍

2.1 Iaas概述

IaaS(Infrastructure as a Service,基础架构即服务)通过互联网提供了数据中心、基础架构硬件和软件资源。IaaS可以提供服务器、操作系统、磁盘存储、数据库和/或信息资源。最高端IaaS的代表产品是亚马逊的AWS(Elastic Compute Cloud),不过IBM、Vmware和惠普以及其他一些传统IT厂商也提供这类的服务

[2]

。IaaS通常会按照\弹性云\的模式引入其他的使用和计价模式,也就是在任何

一个特定的时间,都只使用你需要的服务,并且只为之付费。

2.2 IaaS服务特征及优势

IaaS主要具有以下服务特征及优势: (1)更低的门槛

用户可以以最低的成本租用所需的计算机资源,而不需要进行大量的硬件和软件资源的采购。

(2)更好的扩展性

用户可以根据需要,动态增加或减少服务资源,不用考虑资源来源或者资源是否够用。

(3)管理方便

资源可以直接通过互联网管理,不需要到资源所在机房现场操作,降低管理成本。

(4)使用灵活

用户可获得完全独立的服务器,并拥有管理员权限,因此用户可以不受限制的进行任何操作。

(5)资费灵活

所需资源可以随时开始和停止,用户只需要为自己所使用的资源付费。

2.3 IaaS整体架构

虚拟化技术主要实现了对底层物理资源的抽象,使其成为一个个可以被灵活生成、调度、管理的基础资源单位[8]。而要将这些资源进行有效的整合,从而生成一个可以统一管理、灵活分配跳读、动态迁移、计费度量的基础服务设施资源

5

南京邮电大学2015届本科生毕业设计(论文)

池,并向用户提供自动化基础设施即服务,就需要IaaS管理平台。

如图图2.1,这是对资源管理平台的实现。

图2.1 IaaS交互模型

资源管理平台负责对物理资源和虚拟化资源进行统一的管理和调度,形成统一的资源池,实现IaaS服务的可管、可控,其核心是对每个基础资源单位的生命周期管理能力和对资源的管理调度能力。

在上面的模型中,假定了与云交互的四种人员(开发商、开发人员、操作员、用户),还定义了三层架构(表现、逻辑、资源)和两个正交领域(集成和管理)。

表现层,组件与用户交互,接受并显示用户的信息。这一层为非开发人员提供了一个Web 图形界面,为开发人员提供了 API,还存在负载均衡、控制台代理、安全、命名服务。

逻辑层,为云和控制功能提供情报。这层内包括部业务流程(工作流程复杂的任务),调度(确定作业对资源的映射),政策(配额等),镜像注册表(例如镜像的元数据),日志(事件和计量)。

资源层,提供实际的计算,网络和存储资源给客户。提供服务的资源可能是服务器,网络交换机,网络附加存储或其他。

集成功能,大多数服务提供商已经有一个客户的身份和计费系统。任何云架构将需要与这些系统集成。

管理功能,提供一个 API 来管理云并提供监控功能。

6

南京邮电大学2015届本科生毕业设计(论文)

2.4 IaaS关键技术介绍 2.4.1 虚拟化技术

虚拟化技术(Virtualization)已经对计算机发展产生了重要的影响,尤其是最近发展非常热门的云计算技术。其实,在计算机领域,虚拟化的思想早已经存在,最早 IBM 在二十世纪六十年代就提出并实现了在一台物理机上运行多个不同的操作系统实例,它颠覆了传统的一台计算机运行一个操作系统实例的计算模式。多个操作系统运行在一个物理机上,共享物理机资源(CPU 资源、内存资源、网络资源、存储资源等)[3]。随着计算机硬件资源的不断快速发展,现有的很多软件已不能充分的利用计算机硬件的资源存在很多的资源浪费现象。虚拟化技术的出现,提高了物理机或者服务器的硬件资源的利用率,充分地利用了硬件所提供的并行性和高性能,也使系统管理员免去了管理大量物理机的所花费的精力和时间。虚拟化技术的这些特点,使得虚拟化技术成为整个计算机软件技术中最受到重视的技术之一,它在云计算技术中起着至关重要的作用,是云计算技术的基础。

虚拟化就是通过脱耦合把应用软件和在其上的虚拟的操作系统与底层的物理设备分离开来。物理机系统的虚拟化究其根本就是通过某种手段把底层的物理设备和其上的软件运行环境分割的技术。然而虚拟化技术的出现,远远不止于虚拟出虚拟的操作系统,现在已经看到了,内存,网络,CPU,文件,存储等的虚拟化。从一种更高的抽象、一个更广泛的环境中来了解虚拟化技术,它实际上已经成为了一个非常大的概念,可以为用户企业带来很大的便利。

虚拟化技术主要实现了对底层物理资源的抽象,使其成为一个个可以被灵活生成、调度、管理的基础资源单位,如图2.2。而要将这些资源进行有效的整合,从而生成一个可以统一管理、灵活分配跳读、动态迁移、计费度量的基础服务设施资源池,并向用户提供自动化基础设施即服务,就需要IaaS管理平台。

资源管理平台负责对物理资源和虚拟化资源进行统一的管理和调度,形成统一的资源池,实现IaaS服务的可管、可控,其核心是对每个基础资源单位的生命周期管理能力和对资源的管理调度能力。

2.4.2 KVM与QEMU

KVM虚拟机是基于Linux内核虚拟化,自Linux2.6.2之后就集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM的虚拟化需要硬件的支持(如Intel VT技术或者AMD V

7

南京邮电大学2015届本科生毕业设计(论文)

图2.2虚拟化架构

技术),是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的para-virtualization,新版本是基于硬件支持的完全虚拟化[3]。

QEMU是一种模拟处理器,现在运用最多的就是将KVM和QEMU结合起来。准确来说,KVM是Linux kernel的一个模块,可以用命令modprobe去加载KVM模块[13]。加载了该模块后,才能进一步通过工具创建虚拟机。但是仅有KVM模块是不够的。因为用户无法直接控制内核去做事情,还必须有一个运行在用户空间的工具才行。这个用户空间的工具,KVM开发者选择了已经成型的开源虚拟化软件QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个power的CPU,并可利用它编译出可运行在power上的CPU,并可利用它编译出可运行在power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。所以你会看到,官方提供的KVM下载有两大部分(QEMU和KVM)三个文件(KVM模块、QEMU工具以及二者的合集)。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是KVM和QEMU 的关系,如图2.3。

2.4.3 数据存储技术

为保证高可用、高可靠和经济性,云计算采用分布式存储的方式来存储数据,采用冗余存储的方式来保证存储数据的可靠性,即为同一份数据存储多个副本。另外,云计算系统需要同时满足大量用户的需求,并行地为大量用户提供服务。

8

南京邮电大学2015届本科生毕业设计(论文)

图2.3 KVM与QEMU关系

因此,云计算的数据存储技术必须具有高吞吐率和高传输率的特点。 云计算的数据存储技术主要有谷歌的非开源的 GFS(Google File System)和Hadoop 开发团队开发的 GFS 的开源实现 HDFS(Hadoop Distributed File System)。大部分 IT 厂商,包括 Yahoo、Intel 的“云”计划采用的都是 HDFS 的数据存储技术。未来的发展将集中在超大规模的数据存储、数据加密和安全性保证、以及继续提高 I/O速率等方面[4]。

2.4.4 资源管理技术

在多节点并发执行环境,分布式资源管理系统是保证系统状态正确性的关键技术。系统状态需要在多节点之间同步,关键节点出现故障时需要迁移服务,分布式资源管理技术通过锁机制协调多任务对于资源的使用,从而保证数据操作的一致性。典型的资源管理技术如Google公司的 Chubby文件系统。

2.4.5 能耗管理技术

随着云计算的快速发展,如今云服务的推出使许多中小企业用户转而向云计算服务提供商订购云计算服务。而这类云服务大多是安装在主机托管服务提供商所拥有的大型数据中心。那么,关于数据中心的能耗问题便成了数据中心管理者

9

南京邮电大学2015届本科生毕业设计(论文)

最关心的问题。处理的能耗是服务能耗的主要组成部分之一,大型的云计算数据中心有可能拥有数百、上万甚至更多的服务器,这些云平台中数量众多的基础资源构件对于电力的消耗也是非常巨大的,这将直接影响数据中心的运营成本。因此如何在云计算数据中心部署良好的、持续的电源供应系统倍受用户关注。Google的数据中心一般选择在人烟稀少、气候寒冷、水电资源丰富的地区,这些地点的电价、散热成本、场地成本、人力成本等都远低于人口稠密的大都市。我国三大电信运营商也效仿 Google 的做法,选择在哈尔滨等地建设数据中心

[4]

另外,为满足更多的网络服务需求,降低能耗,减少数字媒体下载量,可采

用减少数字垃圾、进行策略性的界面设计、提高使用意识以及避开使用高峰期等措施。

2.5 本章小结

本章主要是对IaaS和云计算平台实现的关键技术的介绍,其中包括了IaaS的定义、优势及架构,充分说明了IaaS在云平台中的地位与作用。虚拟化技术对于云计算平台来说是最重要的,本章还就对最终要的虚拟化技术展开了介绍,包含了关键的KVM和QEMU。

10

南京邮电大学2015届本科生毕业设计(论文)

第三章 OpenStack相关介绍

3.1 OpenStack简介

OpenStack是一套开源的云计算平台,也是一款工具集。它刚问世不久就得到了学术领域的普遍关注,并很快渗透到各个研究领域。OpenStack可以构建自己的IaaS云计算环境,并提供给用户使用。OpenStack部署云环境的优点就是灵活,可以根据自己的需要来搭建基础设施,同时可以自由地扩充集群规模。OpenStack允许客户通过部署虚拟机来创建资源,在节点上通过使用KVM等来对虚拟机进行一系列配置。客户端用户只需要申请自己需要的虚拟资源。

3.1.1 OpenStack基础架构

OpenStack 通过一系列的组件服务提供了一个基础架构即服务(IaaS)的解决方案[5]。在较新版本IceHouse中包含了10 个组件:

(1)Nova:计算服务是 OpenStack 云中的计算组织控制器,对计算资源、网络、认证和扩展性等进行管理,并通过一个与Amazon Web Services (AWS)EC2 API 兼容的 web servicesAPI来对外提供服务。

(2)Swift:对象存储服务提供弹性可伸缩、高可用的分布式对象存储服务,适合存储大规模非结构化数据。

(3)Glance:镜像服务提供虚机镜像的注册和分派服务。

(4)Cinder:块存储服务为虚机提供可用于持久存储的块存储服务。 (5)Neutron:网络服务为其它 OpenStack 组件提供网络连接,通过 API 为终端用户提供自定义网络功能;通过一个插件式架构支持大量网络广商设备及网络技术。

(6)Keystone:认证服务为 OpenStack 提供认证和授权服务。

(7)Horizon:仪表盘提供基于 Web 的管理控制台,用户可以通过Web 方式管理和操作OpenStack 云。

(8)Ceilometer:计量监控服务为OpenStack 云提供计费、基准测试及数据统计等功能。

(9)Heat:编排组织服务提供基于模板的编排机制,用户可以通过一个参数化的模板轻松的部署网络、服务器、存储等资源。

(10)Trove:数据库服务为关系型和非关系型数据引擎提供可扩展、可靠的云数据库即服务功能。

11

南京邮电大学2015届本科生毕业设计(论文)

OpenStack的概念架构,如图3.1所示。

图3.1 OpenStack概念架构

3.1.2 OpenStack访问流程

(1)User 通过自己的身份凭证(Credentials)想Keystone服务发起认证,Keystone如果通过认证则给User颁发密钥(Token),之后执行(2)步。

(2)User 把密钥(Token)和虚拟机的创建请求发送给Nova服务,Nova通过Keystone服务验证密钥(Token)如果通过认证则执行(3)步。

(3)Nova 把密钥(Token)和创建虚拟机所需要的镜像请求发送给Glance服务,Glance通过Keystone服务验证密钥(Token),如果通过Glance向Nova返回镜像执行(4)步。

(4)Nova 把密钥(Token)创建虚拟机所需要的网络资源请求发送给Quantum服务,通过Keystone服务验证密钥(Token),如果通过Quantum向Nova返回网络资源执行(5)步。

(5)Nova 得到创建虚拟机所需要的资源了,之后向用户(User)返回请求

12

南京邮电大学2015届本科生毕业设计(论文)

图3.2 OpenStack访问流程

成功。

3.2 OpenStack认证服务——Keystone 3.2.1 Keystone介绍

Keystone(OpenStack Identity Service)是OpenStack框架中,负责身份验证、服务规则和服务令牌的功能,它实现了OpenStack的Identity API。Keystone类似一个服务总线,或者说是整个Openstack框架的注册表,其他服务通过keystone来注册其服务的Endpoint(服务访问的URL),任何服务之间相互的调用,需要经过Keystone的身份验证,来获得目标服务的Endpoint来找到目标服务。

3.2.2 Keystone概念

User即用户,他们代表可以通过keystone进行访问的人或程序[6]。Users通过认证信息(credentials,如密码、API Keys等)进行验证,如:住宾馆的人。

Tenant即租户,它是各个服务中的一些可以访问的资源集合。例如,在Nova

13

南京邮电大学2015届本科生毕业设计(论文)

中一个tenant可以是一些机器,在Swift和Glance中一个tenant可以是一些镜像存储,在Neutron中一个tenant可以是一些网络资源。Users默认的总是绑定到某些tenant上,如:宾馆。

Role即角色,Roles代表一组用户可以访问的资源权限,例如Nova中的虚拟机、Glance中的镜像。Users可以被添加到任意一个全局的或租户内的角色中。在全局的role中,用户的role权限作用于所有的租户,即可以对所有的租户执行role规定的权限;在租户内的role中,用户仅能在当前租户内执行role规定的权限,如:VIP 等级,VIP越高,享有越高的权限。

Service即服务,如Nova、Glance、Cinder。根据前三个概念(User,Tenant和Role)一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个user尝试着访问其租户内的service时,他必须知道这个service是否存在以及如何访问这个service,这里通常使用一些不同的名称表示不同的服务。在上文中谈到的Role,实际上也是可以绑定到某个service的。例如,当swift需要一个管理员权限的访问进行对象创建时,对于相同的role我们并不一定也需要对nova进行管理员权限的访问。为了实现这个目标,我们应该创建两个独立的管理员role,一个绑定到swift,另一个绑定到nova,从而实现对swift进行管理员权限访问不会影响到Nova或其他服务,如:宾馆可以提供的服务类别,比如,饮食类,娱乐类。

Endpoint,翻译为“端点”,我们可以理解它是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道他的endpoint。因此,在keystone中包含一个endpoint模板(endpoint template,在安装keystone的时候我们可以在conf文件夹下看到这个文件),这个模板提供了所有存在的服务endpoints信息。一个endpoint template包含一个URLs列表,列表中的每个URL都对应一个服务实例的访问地址,并且具有public、private和admin这三种权限。public url可以被全局访问,admin url被从常规的访问中分离,如:具体的一种服务,比如吃烧烤,打羽毛球。

3.3 OpenStack计算服务——Nova 3.3.1 Nova简介

Nova是OpenStack云中的计算组织控制器[6]。支持OpenStack云中实例(instances)生命周期的所有活动都由Nova处理。这样使得Nova成为一个负责管理计算资源、网络、认证、所需可扩展性的平台。但是,Nova自身并没有提供任何虚拟化能力,相反它使用libvirt API来与被支持的Hypervisors交互。Nova

14

南京邮电大学2015届本科生毕业设计(论文)

通过一个nova API来对外提供服务。

Nova的功能和特点有:实例生命周期管理,管理计算资源,网络和认证管理,REST风格的API,异步的一致性通信,Hypervisor透明:支持Xen,XenServer/XCP, KVM, UML, VMware,vSphere and Hyper-V。

3.3.2 Nova架构

图3.3 Nova 架构

Nova 云架构(如图3.3)的各个组件是以数据库和队列为中心进行通信的,下面对其中的几个组件做一个简单的介绍:

(1)Queue,也就是消息队列,它就像是网络上的一个hub,nova各个组件之间的通信几乎都是靠它进行的,当前的Queue是用RabbitMQ实现的,它和database一起为各个守护进程之间传递消息。

(2)database存储云基础架构中的绝大多数状态。这包括了可用的实例类型,在用的实例,可用的网络和项目。当前广泛使用的数据库是sqlite(仅适合测试和开发工作)、MySQL和PostgreSQL。

(3)nova-compute负责决定创造虚拟机和撤销虚拟机,通过运行一系列系统命令(例如发起一个KVM实例),并把这些状态更新到nova-database中去,其过程相当复杂,但是基本原理很简单。

15

南京邮电大学2015届本科生毕业设计(论文)

(4)nova-schedule负责从queue里取得虚拟机请求并决定把虚拟机分配到哪个服务器上去。schedule的算法可以自己定义,目前有Simple (最少加载主机),chancd(随机主机分配) ,zone(可用区域内的随机节点)等算法。

(5)nova-volume负责记录每一个计算实例,相当于一个计算请求吧,并负责创建,分配或撤销持久层容器(Amazon的iSCSI,AoE等等)给这些compute instances。

(6)nova -netwok负责处理队列里的网络任务。

(7)nova-api守护进程是OpenStack Compute的中心。它为所有API查询提供一个入口。

3.3.3 Nova工作流程

为了看看nova是如何工作的,可以以启动一个实例为例来进行说明,因为启动一个新的instance涉及到很多openstack nova里面的组件共同协作[14]。

Scheduler Queue&Database Api Nova-network Nova-compute 图3.4 Nova工作流程

(1)API:处理客户端的请求,并且转发到 Queue和Database中。如:输入一个启动instance的命令api就会查看这种类型的instance是否达到最大值并给scheduler发送一个消息(实际上是发送到Queue中)去运行这个实例。

(2)Scheduler:选择一个host去执行命令。如:Schedule:调度器接收到了消息队列Queue中API发来的消息,然后根据事先设定好的调度规则,选择好一个host,之后,这个instance会在这个host上创建。

(3)nova-compute :启动和停止实例,附加和删除卷等操作。如:创建一个instance的操作是由Compute完成的,而这个过程中computer组件与Glance-api

16

南京邮电大学2015届本科生毕业设计(论文)

交互得到所需的instance镜像。

(4)nova-network:管理网络资源,分配固定IP。

3.4 OpenStack网络服务——Neutron 3.4.1 Neutron介绍

OpenStack网络的核心理念就是通过多个其他元素(如虚拟机、系统管理模块以及其他连接的网络)为用户提供一组一致性的网络服务[16]。从本质上讲,OpenStack网络创建了一个一致的逻辑通讯层,而其他元素可以有效地、大规模地使用这个逻辑层。

这一模式是在OpenStack Neutron服务器中实现的,它与OpenStack Nova软件管理的虚拟机(即计算服务)以及上述提及的其他元素进行交互[17]。用户通过OpenStack的Horizon GUI与网络功能进行交互,而其他的管理系统和网络则通过使用Neutron API与网络服务进行交互。

Neutron使用RESTful网络服务和HTTP与其客户端进行通讯。它使用JavaScript对象表示(JSON)和XML对其运行进行建模。它是专为随时间推移而实现灵活增加功能的目标而设计的,它可扩展至一系列的部署并使用易于理解的开放式软件以便于能够更高效地把多方功能整合至OpenStack网络环境。请求、响应以及其他的逻辑步骤都有明确的定义,并且这些逻辑步骤都可用于一些必要功能的创建与管理,进而支持网络服务实施[15]。

在其目前的分布中,OpenStack Neutron混合实施了第二层的VLAN和第三层的路由服务,它可为所支持的网络提供防火墙、负载平衡等扩展功能。网络中的虚拟机来自于虚拟机管理程序[7]。

此外,通过使用支持IPv4和IPv6的强大地址管理功能,Neutron可在一个站点内实现虚拟机的灵活部署。它采用了一个逻辑的子网架构,IP块表示可以寻址虚拟位置和到达其部署结构中任何的位置。这种结构类似于在众多Neutron IP组网中所使用的子网技术,它通常是从与子网相关的物理端口抽取出来的。在覆盖网络中,它可被用作逻辑关联机制,以便于为不同用户和应用程序分离网络流量。通过使用这种方法,云计算供应商可以分别实现多个租户的通讯并为不同应用程序部署拓扑,例如多层服务器组合以处理一个整体应用程序的不同部分。

17

南京邮电大学2015届本科生毕业设计(论文)

Software-define Networking service L3-agent Neutron-server Plugin-agent Message queue Dhcp-agent 图3.5 Neutron架构

如图3.5所示:

(1)neutron-server 是 OpenStack Networking 服务器的主要流程。它是一个 Python 后台进程,将用户请求从 OpenStack Networking API 中继到配置的插件。

(2)neutron-dhcp-agent 向所有租户网络提供动态主机配置协议 (Dynamic Host Configuration Protocol, DHCP) 服务。

(3)neutron-l3-agent 执行 L3/网络地址转换 (Network Address Translation) 转发,以支持网络网络访问租户网络上的 VM。

一个特定于插件的可选代理 (neutron-*-agent) 在每个虚拟机管理程序上执行本地虚拟交换机配置。

3.4.2 Neutron 网络创建过程

Neutron 网络目的是为 OpenStack 云更灵活地划分物理网络,在多租户环境下提供给每个租户独立的网络环境。另外,Neutron 提供 API 来实现这种目标。Neutron 中用户可以创建自己的网络对象,如果要和物理环境下的概念映射的话,这个网络对象相当于一个巨大的交换机,可以拥有无限多个动态可创建和销毁的虚拟端口[7]。

在 Horizon 上创建 Neutron 网络过程如下:

首先管理员拿到一组可以在互联网上寻址的 IP 地址,并且创建一个外部网络和子网。

租户创建一个网络和子网。

18

南京邮电大学2015届本科生毕业设计(论文)

租户创建一个路由器并且连接租户子网和外部网络。 租户创建虚拟机。

3.5 本章小结

本章首先介绍了OpenStack的概念架构和访问流程对OpenStack的整体运行原理有一个大致的了解,之后详细介绍了OpenStack的三大服务:OpenStack认证服务Keystone、OpenStack计算服务Nova 、OpenStack网络服务Neutron,对每一种服务的架构、访问流程以及实现原理都做出了详细的介绍。

19

南京邮电大学2015届本科生毕业设计(论文)

第四章 OpenStack云管理平台的搭建

4.1 单节点安装部署OpenStack 4.1.1 实验环境及实验拓扑

本次实验采用一台8个vCPU、16GB内存的云主机,搭载CentOS 6.6 64bit操作系统,用来单节点部署OpenStack。搭建OpenStack云管理平台需要较高的硬件配置,并要求支持CPU虚拟化。实验拓扑图如图4.1所示。

图4.1 实验拓扑图

本文设计的云计算平台的实验拓扑图如图4.1所示,主机分别连接到内网和外网,通过路由器,Public-Subnet和公网相连,这样就可以通过公网来SSH到云主机,并且可以通过公网进入到OpenStack的DASHBOARD,以图形交互模式来管理云。由于考虑到实验环境的限制,本次实验采用单节点部署,达到节省硬件消耗的目的。另外,单节点部署更适合实验环境,而多节点部署更适合生产环境[1]。

4.1.2 构建过程

目前OpenStack可以采用多种方法进行构建,如源码安装、使用DevStack脚本安装、使用 Puppet 安装等,为了进一步熟悉 OpenStack 的框架,本文采用通过OpenStack官方网站提供的指导手册进行一步步的安装[10]。部署流程图如图4.2所示。

20

南京邮电大学2015届本科生毕业设计(论文)

图4.2 实验部署流程图

4.2 云平台搭建主要过程和问题解决 4.2.1 Keystone的安装与问题分析

以下是其安装和配置的主要过程。 (1)安装KeyStone

# yum install -y openstack-keystone (2)初始化数据库

# openstack-db --init --service keystone \\ --password PASSWORD (3)生成Token,并设置环境变量

# export SERVICE_TOKEN=$(openssl rand -hex 10) # export SERVICE_ENDPOINT=http://10.9.0.206:35357/v2.0 # echo $SERVICE_TOKEN > /tmp/ks_admin_token 21

南京邮电大学2015届本科生毕业设计(论文)

71068df694f4c4620156 (4)修改配置文件

# openstack-config --set /etc/keystone/keystone.conf \\ DEFAULT admin_token $SERVICE_TOKEN # openstack-config --set /etc/keystone/keystone.conf \\ signing token_format UUID (5)启动keystone服务

# service openstack-keystone start # chkconfig openstack-keystone on 以下是问题分析。

(1)使用admin用户查看用户列表时报错 # keystone user-list Authorization Failed: Unable to communicate with identity service: {\{\(HTTP 500) 解决方法:

# openstack-config --set /etc/keystone/keystone.conf \\ signing token_format UUID (2)Keystone 使用期间,有时会出错,可能是因为环境变量问题。需要用到keystone.conf 里的 admin_token 来访问 Keystone 的服务,后面也可以通过keystone-client 来注册新的 token。默认的 admin_token 是 ADMIN,要把它添加到系统环境里去。

4.2.2 Glance的安装与问题分析

以下是其安装和配置的主要过程。 (1)安装glance

# yum install -y openstack-glance (2)设置环境变量 # source ~/keystonerc_admin (3)初始数据库

# openstack-db --init --service glance \\ --password PASSWORD (4)修改配置文件

22

南京邮电大学2015届本科生毕业设计(论文)

# openstack-config --set /etc/glance/glance-api.conf \\ paste_deploy flavor keystone # openstack-config --set /etc/glance/glance-api.conf \\ keystone_authtoken admin_tenant_name admin # openstack-config --set /etc/glance/glance-api.conf \\ keystone_authtoken admin_user admin # openstack-config --set /etc/glance/glance-api.conf \\ keystone_authtoken admin_password PASSWORD # openstack-config --set /etc/glance/glance-registry.conf \\ paste_deploy flavor keystone # openstack-config --set /etc/glance/glance-registry.conf \\ keystone_authtoken admin_tenant_name admin # openstack-config --set /etc/glance/glance-registry.conf \\ keystone_authtoken admin_user admin # openstack-config --set /etc/glance/glance-registry.conf \\ keystone_authtoken admin_password PASSWORD (5)启动服务

# service openstack-glance-registry start # service openstack-glance-api start # chkconfig openstack-glance-registry on # chkconfig openstack-glance-api on 4.2.3 Cinder的安装与问题分析

以下是其安装和配置的主要过程。 (1)安装Cinder

# yum install -y openstack-cinder (2)设置环境变量 # source ~/keystonerc_admin (3)初始化数据库

# openstack-db --init --service cinder \\ --password PASSWORD (4)修改配置文件

# openstack-config --set /etc/cinder/cinder.conf DEFAULT auth_strategy keystone 23

南京邮电大学2015届本科生毕业设计(论文)

# openstack-config --set /etc/cinder/cinder.conf \\ keystone_authtoken admin_tenant_name admin # openstack-config --set /etc/cinder/cinder.conf \\ keystone_authtoken admin_user admin # openstack-config --set /etc/cinder/cinder.conf \\ keystone_authtoken admin_password PASSWORD (5)修改tgt配置文件

grep -q /etc/cinder/volumes /etc/tgt/targets.conf || sed -i '1iinclude /etc/cinder/volumes/*' /etc/tgt/targets.conf (6)启动tgt #service tgtd start #chkconfig tgtd on (7)创建cinder-volumes

使用一个空闲独立的分区,这里这个分区为/dev/sdb1 # vgcreate cinder-volumes /dev/sdb1 Volume group \(8) 启动服务

# for srv in api scheduler volume ; do \\ sudo service openstack-cinder-$srv start ; \\ done # for srv in api scheduler volume ; do \\ sudo chkconfig openstack-cinder-$srv on ; \\ done 4.2.4 Nova和Quantum的安装与问题分析

以下其安装和配置的主要过程。 (1)安装nova和cinderclient # yum install -y openstack-nova # yum install -y python-cinderclient (2)初始化数据库

# openstack-db --init --service nova \\ --password PASSWORD 24

南京邮电大学2015届本科生毕业设计(论文)

(3)修改配置文件

# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone # openstack-config --set /etc/nova/api-paste.ini \\ filter:authtoken admin_token $(cat /tmp/ks_admin_token) (4)卸载nova-network

# rpm -e openstack-nova-network-2013.1-2.el6.noarch --nodeps 这里面使用Quantum替代 # service messagebus start # chkconfig messagebus on # service libvirtd start # chkconfig libvirtd on # openstack-config --set /etc/nova/nova.conf DEFAULT \\ volume_api_class nova.volume.cinder.API # openstack-config --set /etc/nova/nova.conf DEFAULT \\ enabled_apis ec2,osapi_compute,metadata (5)创建服务和Endpoint

# keystone service-create --name=nova --type=compute --description=\Compute Service\ # keystone endpoint-create --service_id dff2746d4d7049fab6e1a96968f6a6ff \\ --publicurl \ --adminurl \ --internalurl \(6)为OpenStack Networking配置Keystone # source ~/keystonerc_admin # keystone service-create --name openstack_network --type network \\ --description 'OpenStack Networking Service' # keystone endpoint-create --service-id 90d4cf4d89a143dabf5faf2de1f0de48 \\ --publicurl 'http://10.9.0.206:9696/' \\ --adminurl 'http://10.9.0.206:9696/' \\ --internalurl 'http://10.9.0.206:9696/' (7)安装 quantum 和插件 # yum install openstack-quantum # yum install openstack-quantum-openvswitch 25

南京邮电大学2015届本科生毕业设计(论文)

(8)配置Openstack-Networking

# openstack-config --set /etc/quantum/quantum.conf \\ DEFAULT rpc_backend quantum.openstack.common.rpc.impl_qpid # openstack-config --set /etc/quantum/quantum.conf \\ DEFAULT qpid_hostname 10.9.0.206 # openstack-config --set /etc/quantum/quantum.conf \\ keystone_authtoken admin_tenant_name admin # openstack-config --set /etc/quantum/quantum.conf \\ keystone_authtoken admin_user admin # openstack-config --set /etc/quantum/quantum.conf \\ keystone_authtoken admin_password PASSWORD # sudo sh -c 'echo 127.0.0.1 `hostname` >> /etc/hosts' # quantum-server-setup --plugin openvswitch # service quantum-server start # chkconfig quantum-server on (9)修改nova.conf

network_api_class = nova.network.quantumv2.api.API quantum_admin_username = admin quantum_admin_password = PASSWORD quantum_admin_auth_url = http://10.9.0.206:35357/v2.0/ quantum_auth_strategy = keystone quantum_admin_tenant_name = admin quantum_url = http://10.9.0.206:9696/ libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver libvirt_use_virtio_for_bridges=True (10)安装OpenStack Networking Agents # yum install -y openstack-quantum-openvswitch # quantum-node-setup --plugin openvswitch 26

南京邮电大学2015届本科生毕业设计(论文)

# service openvswitch start # chkconfig openvswitch on # service quantum-openvswitch-agent start # chkconfig quantum-openvswitch-agent on # chkconfig quantum-ovs-cleanup on (11)安装 OpenStack Networking DHCP Agent # quantum-dhcp-setup --plugin openvswitch # service quantum-dhcp-agent start # chkconfig quantum-dhcp-agent on (12)安装OpenStack Networking L3 Agent # ovs-vsctl add-br br-int # ovs-vsctl add-br br-ex # ovs-vsctl add-port br-ex eth1 # yum install -y openstack-quantum # quantum-l3-setup --plugin openvswitch # quantum router-create router1 # vi /etc/quantum/l3_agent.ini router_id = 3129097f-4d02-4610-b77a-47dc7a2904ea # service quantum-l3-agent start # chkconfig quantum-l3-agent on (13)启动nova

# service openstack-nova-api start # service openstack-nova-cert start # service openstack-nova-conductor start # service openstack-nova-objectstore start # service openstack-nova-scheduler start # service openstack-nova-compute start 以下是问题分析。

(1)nova-volume 无法正常访问:此时需要检查是否正常创建了 lvm 卷,然后检查nova.conf 是否指定了volume-name。本次实验创建的卷名为 nova-volumes,这也是系统默认的命名,如果修改了这个名称,则需要在 nova.conf 里指定。

(2)虚拟机无法正常启动:需要检查 libvirt-type 是什么,镜像是否有问题,以及libvirt 是否有权限访问你的 instance 目录。

(3)网络无法访问:可以尝试创建一个 floating ip range 来解决这个问题。

27

南京邮电大学2015届本科生毕业设计(论文)

(4)无法获得镜像文件:这个问题是由于 glance 访问 swift 的一个 bug。先使用 glance index 来确认是否能列出镜像,如果 nova-compute 里报 Image Not Found 这样的错误,那么就要去跟踪当验证 swift 的时候,给出的 auth_url 是否是http://[ yourip]:5000/v2.0,如果是,那么需要对这个 url 后面加上一个/,否则会拿不到 swift proxy-server 的 endpoint。

(5)Nova 安装完后,nova-network 服务已经运行,但是用 nova-manage service list指令却查看不到 nova-network 服务。后来通过修改 nova.conf 文件解决。

4.2.5 Horizon的安装与问题分析

以下是其安装和配置的主要过程。 #yum install -y openstack-dashboard #yum install -y mod_ssl #keystone role-create --name Member #service httpd start #chkconfig httpd on 以下是问题分析。

Horizon是OpenStack的一个Dashboard,也即是以网页形式面向用户的一个界面。通过Horizon,用户可以很方便使用OpenStack,而不必使用繁琐的命令行。

关键一点就是要在Keystone中创建Member角色,因为Horizon中会用到这个角色。

4.3 OpenStack计费系统的研究

目前,在国内外扁平计费的模式依然是在实施操作中比较普遍的计费模式。扁平计费的特点是按照单位时间来计费,使用者只需要根据单位时间的服务来支付事先规定的费用,与其单位时间内的使用量毫无关系。包月计费就是最为普遍的扁平计费的模式。然而,云计算所提出的按需计费与扁平计费的计费方式大相径庭,扁平计费的模式根本无法满足云计算平台对计费系统的要求。

本课题中所设计的计费系统是根据云计算平台的需求,根据用户对平台资源的使用量来进行计费处理,在这种计费模式中,用户只需要关注其资源的使用量情况,并根据用量来对用户计费。计费系统经过采集、分析与统计用户对资源的使用情况,并根据用户所选取的计费策略进行计算处理,给出用户的计费信息,

28

南京邮电大学2015届本科生毕业设计(论文)

并通过 Web 的形式向用户展示。以用户对虚拟机的使用来说明,当计费系统接收到本次服务的其实时间及结束时间之后,便可以得到本次服务的使用时间,就可以对收集的计费数据进行处理,得到计费结果。在计费系统中,运用 MapReduce来处理计费数据。就是计费系统将用户所申请创建的虚拟机的使用时长做为计量标准,系统通过采集。分析与统计每台虚拟机的使用时长,并根据用户所采用的计费策略就可以计算出目前该用户的计费信息。

4.3.1 OpenStack计费系统的设计与实现

云计算平台中的用户对于平台中的应用服务都有着一定的需求,既然有需求就要承担应有的费用。在云计算平台的 IaaS(基础设施即服务)、PaaS(平台即服务)以及SaaS(软件即服务),三项服务均包含在计费的范围内。但是根据不同用户的不同需求,计费系统也将采用多种形式的计费方式[11]。

计费系统通过通过采集使用虚拟机总时长、网络带宽等方面的数据来实现对云计算平台用户的计费。和资源监控系统一样,为了减少对用户的干扰,计费系统对数据的采集、存储也不能一直的进行,要将数据的处理放在系统运行负载较低的时候进行,这样可以提高平台的使用效率。计费系统的体系结构如图4.3所示。

图4.3 计费系统体系结构图

计费系统的体系结构图向我们展示了计费系统各模块间的关系。将在下文中

29

南京邮电大学2015届本科生毕业设计(论文)

具体介绍各模块的作用及他们之间的联系:

数据接收模块:该模块通过资源监控系统提供的 API,向资源监控系统采集所需要的计费数据,并对数据进行分析处理,所有的数据都以统一的 Json 格式传送。将处理过的数据发送到数据存储模块,然后通过资源监控系统提供的 API 向资源监控系统发送一条指令,以确认数据的传送。

数据存储模块:将接收到的数据存入分布式文件系统中。

计费策略管理模块:该模块是针对计费方式进行监管的模块,其主要功能有对计费系统中现有的计费方式进行查询,添加新的计费方式,还可以修改或删除已有的计费方式等。

计费信息生成模块:从计费策略管理模块中获取当前用户所使用的计费方式,使用获取到的计费方式对分布式文件系统中所存放的数据信息进行处理,得到该用户的费用情况,之后把费用信息储存到计费数据库中。

计费展示模块:访问计费数据库,读取其存储的平台用户的费用信息,将获取的信息通过Dashboard 展示出来。

4.3.2 计费系统的计费机制

计费系统将接收数据交给计费服务器,数据服务器将接收的数据进行分析处理,得到计费系统所需要统计的数据,之后将计费数据存储到数据库中。当系统创建收费服务时,首先确认平台的用户的账户余额是否充足,如果余额足够则创建服务并通知计费服务器,用户取消服务时同样通知计费服务器[12]。

4.3.3 计费系统的扣费方法

计费服务器会周期性的登陆用户的帐号,根据用户帐号中的账单信息进行扣费处理。

4.3.4 计费系统的安全检查

计费服务通过 nova api 或者nova数据库对收费条目进行检查,以防止创建不成功但是仍然扣费的情况出现。如果创建收费服务失败,那么计费服务器会通知系统管理员并停止扣费。

4.3.5 计费系统与资源监控系统的交互

计费系统与前文所提到的资源监控系统中所采集的数据相辅相成,所以,通

30

南京邮电大学2015届本科生毕业设计(论文)

过资源监控系统所提供的接口,将资源监控系统与计费系统进行交互,免去计费系统中数据采集的环节,从而降低计费系统对于云计算平台资源的占用。

4.3.6 计费系统的数据处理

计费系统最为核心的功能是如何从海量的原始计费数据中统计出每个用户使用虚拟机的总时长。下面将要介绍的就是使用分布式数据库存储原始计费数据以及使用MapReduce处理存储的数据,统计用户使用虚拟机的总时长。

由于无论是使用OpenStack搭建的私有云环境还是计费系统,网络带宽都是比较稀缺的资源,原始计费数据的传输、存储与计算不能一直进行下去。需要的是原始计费数据的处理在系统运行负载比较低的时候进行,并且该任务需要每天都重复执行。计费数据处理流程如图4.4所示。

图4.4 数据处理流程

首先,要从收集到的数据中获取虚拟机的 id 以及 TimeStamp,虚拟机的id 作为每台虚拟机的身份认证,便于区分云计算平台中的每一台虚拟机,使用一个 id 去标识一台固定的虚拟机,而 TimeStamp 作为标签来标记每个计费数据的时间。将虚拟机的 id和TimeStamp 作为Map函数的主键和值,Map函数作用就是根据虚拟机的 id 将虚拟机的 TimeStamp 划分处理,处理之后使虚拟机实例id 与 TimeStamp 列表一一对应。然后将上文得到的处理结果作为 Reduce 函数的输入,Reduce函数的主要功能是根绝虚拟机的 id来对TimeStamp 列表进行处理,将列表前后两项的值做差并做出判断,当两项之差小于某个阙值时,对该

31

南京邮电大学2015届本科生毕业设计(论文)

值进行累加;当两项之差大于某个阈值时,就是证明该虚拟机处于停止工作的状态,计费系统应该停止对其计费,该值不需进行累加处理。最后,将虚拟机 id 和上述结果存储到计费数据库中。计费系统数据处理结构如图4.5所示。

图4.5 计费系统数据处理结构图

4.3.7 计费系统功能的设计

根据上文提到的计费系统的需求分析,设计一个完善的计费机制,使用户可以更好的体验云计算平台的应用服务,同时也要保证计费系统管理员对平台的管理需求。为此,设计的计费系统分为原始计费数据存储、计费信息生成、用户管理、账单查询、计费策略管理以及虚拟机管理六大模块[12]。

1. 原始计费数据存储模块

该模块的主要功能是用于接收资源监控系统所提供的计费数据,并对数据进行分析处理,处理之后将数据存储到分布式数据库中,此次过程中所有的数据都以统一的Json格式传输。该模块还可以划分为3个子模块:

(1)数据接收模块

该模块负责接收资源监控系统传输的 Json 格式的数据信息,并将其发送给数据解析模块。

(2)数据解析模块

该模块负责将接收到的数据信息进行解析,将解析后所得到的结果发送给数 据存储模块。 (3)数据存储模块

该模块负责将接收到的数据信息存入分布式文件系统中。 2. 计费信息生成模块

该模块从分布式文件系统中获取数据存储模块所储存的数据信息,统计出用

32

南京邮电大学2015届本科生毕业设计(论文)

户对平台资源的使用情况,并从计费策略管理模块中获取当前用户所使用的计费方式,基于此计费方式对用户的计费数据进行处理,得到该用户的费用情况,把费用信息写入计费数据库中。该模块通过3个子模块来实现其功:

(1)数据过滤模块

通过计费数据库 VMInstance表中的虚拟机的 id来过滤原始的数据信息。 (2)数据信息统计模块

接收数据过滤模块传送过来的原始数据信息,使用 MapReduce 来处理各项数据信息,以得到每个虚拟机的使用情况。

(3)计费记录添加模块

读取虚拟机使用信息,将读取的信息写入计费数据库的 Instance表中。 3. 用户管理模块

该模块向普通用户提供了注册、登陆、资料修改等功能,系统管理员则拥有管理普通用户的功能,其中包括添加、修改以及删除等功能。该模块还可以划分为四个子模块:

(1)用户注册模块

浏览网站的游客通过用户注册模块,成为计费系统的普通用户。 (2)用户登录模块

普通用户通过在用户注册模块申请的帐号和密码,来登录计费系统,体验云计算平台提供的各项付费服务,系统管理员则可以通过后台登录计费系统,对用户使用情况进行管理,并对计费系统进行维护。

(3)个人资料管理模块

普通用户完成登录进入计费系统之后,可以通过该模块对自己的个人资料进行修改,如系统密码、E-mail 等。

(4)用户管理模块

针对系统管理员单独设置的功能,让系统管理远可以通过此模块来添加新用户,修改计费系统当前所有用户的个人资料,以及注销用户。

4. 账单查询模块

该模块支持普通用户对自己付费记录进行查询。 5. 计费策略模块

该模块主要针对计费策略的增、删、改、查等功能进行设计,并通过一下四个子模块来实现其功能:

(1)计费策略添加模块

通过该模块向计费系统中添加新的计费策略。 (2)计费策略查询模块

用户可以通过该模块对计费系统中现有的各种计费策略进行查询。

33

南京邮电大学2015届本科生毕业设计(论文)

(3)计费策略修改模块

对当前计费系统中各种计费策略进行修改。 (4)计费策略删除模块

对计费系统中现有的计费策略进行删除,但是需要留意所要删除的计费策略是否有用户正在使用,如果计费数据库的 BillMethod 表中存在对计费策略的引用则不能删除。

以上四个子模块当中,普通用户只能访问计费策略查询模块,其他模块均为计费系统的后台操作,只有系统管理员可以对其他模块的功能进行使用。

6. 虚拟机管理模块

支持虚拟机的创建、启动、停止、删除等功能。该模块可划分成四个子模块: (1)虚拟机创建模块

当用户登录计费系统并请求服务之后,虚拟机初次启用的时候会调用此模块,为用户创建虚拟机,同时分配新的 ip地址给新创建的虚拟机。

(2)虚拟机联动模块

通过访问计费数据库中的 Instance表来查看目前所使用的虚拟机的状态,如果虚拟机目前为关闭的状态,则启动虚拟机,同时修改计费数据库Instance表中的状态信息。

(3)虚拟机关闭模块

与虚拟机启动模块相同,都是通过访问计费数据库中的 Instance表来查看当前虚拟机的使用状态,如果虚拟机目前为开机的状态,则关闭虚拟机,同时修改计费数据库 Instance表中的状态信息。

(4)虚拟机删除模块

通过访问计费数据库中的 Instance表来查看目前所使用的虚拟机的状态,如果虚拟机为开机状态,则需要关闭虚拟机,之后再进行删除;如果虚拟机为关闭状态,则可直接删除该虚拟机,同时要删除计费数据库 Instance表中有关该虚拟机的记录。

4.4 本章小结

本章是最艰难的也是最有挑战性的,从基础环境的配置开始,完成之后开始安装各种软件包,每安装一个软件包后都要进行详细的配置文件的修改,这章节对这个艰难的过程给出了详细的安装步骤和详细的指导说明。通过解决安装中的各种问题,将会对OpenStack云平台的实现有更深入的理解。此外,还对平台的计费进行了初步的研究。

34

本文来源:https://www.bwwdw.com/article/vgi3.html

Top