毕业论文基于OpenStack的操作系统镜像管理设计与实现.docx

上传人:b****3 文档编号:4734798 上传时间:2022-12-08 格式:DOCX 页数:40 大小:1MB
下载 相关 举报
毕业论文基于OpenStack的操作系统镜像管理设计与实现.docx_第1页
第1页 / 共40页
毕业论文基于OpenStack的操作系统镜像管理设计与实现.docx_第2页
第2页 / 共40页
毕业论文基于OpenStack的操作系统镜像管理设计与实现.docx_第3页
第3页 / 共40页
毕业论文基于OpenStack的操作系统镜像管理设计与实现.docx_第4页
第4页 / 共40页
毕业论文基于OpenStack的操作系统镜像管理设计与实现.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

毕业论文基于OpenStack的操作系统镜像管理设计与实现.docx

《毕业论文基于OpenStack的操作系统镜像管理设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业论文基于OpenStack的操作系统镜像管理设计与实现.docx(40页珍藏版)》请在冰豆网上搜索。

毕业论文基于OpenStack的操作系统镜像管理设计与实现.docx

毕业论文基于OpenStack的操作系统镜像管理设计与实现

第一章绪论

本章主要介绍课题的产生背景、国内外研究现状及世界上主流的开源云计算项目。

1.1课题背景

随着互联网的不断普及,互联网早已成为世界上信息资源最丰富的网络,人类被网络所包围,越来越难以离开互联网。

互联网极大地丰富和方便了人们的生活,但是互联网中计算资源本身的自治性、开放性、动态性和多样性,使得其不能有效地、自动根据用户需求搜索、加载、并运行软件和提供智能化的服务。

在这样的背景下,云计算随之诞生。

云计算作为一种新的计算模式被提了出来,它为企业及用户提供一种按使用量支付成本的方式,提供便捷的、可利用的和按需使用的网络访问,通过可以由使用者灵活配置的共享资源池(网络、存储、服务器、应用)等等,这些资源能够被很快的提供,投入产出比相对较好。

现有的许多应用框架支持云计算环境的构建,Google公司开发了云计算的编程框架MapReduce用于支持云时代大数据的处理,亚马逊提出了EC2和S3支持计算和存储服务等。

基于上述框架所构建的云计算平台发展迅速,功能也愈加强大。

与此同时,一些开源项目实现了目前较为成熟的云计算平台的核心框架,Hadoop提供了类似于Google公司的云计算解决方案,OpenStack提供了与Amazon的云计算平台AWS相近的开源解决方案。

在云计算众多的研究领域中,我校校长张尧学院士提出了“透明计算”概念。

透明计算通过把存储、运算、管理进行逻辑或者物理分离,在平台上实现软硬件的相互独立,在执行上实行有缓存的流式运算,从而把计算还原成“不知不觉、用户可控”的个性化服务。

作为向透明计算进行科研探索的一部分,我们对云计算领域最热门的开源项目OpenStack进行研究,分析理解其对镜像的管理与存储相关的内容,探索可以推进透明计算的方式。

1.2国内外研究现状

美国是“云计算”概念的发源地,也是云计算应用的主战场,其产品成熟度较高,还有许多业界IT企业推动,发展飞速。

欧洲、日本、印度等国家也在积极推进云计算相关领域研究。

作为OpenStack的模仿对象,亚马逊的AWS于2006年推出,通过Web服务为公司提供IAAS服务,其主要优势是能够根据业务发展以较低可变的成本来增加或减少基础设施的投入。

2013年12月28日,亚马逊的AWS宣布进入中国,在当时引起了国内提供IT云计算服务的公司担忧。

国外的对OpenStack的研究主要是世界几大IT巨头。

RedHat自加入OpenStack后便大量投入OpenStack的工作。

2014年RedHat公司发布的声明中甚至将OpenStack作为公司未来10年的盈利重心,对OpenStack的重视程度也提高到了如RHEL一样的高度。

RedHat在OpenStack社区的代码贡献率也攀升到了第一名。

甲骨文公司已经成为OpenStack基金会的赞助商,并努力促成OpenStack与其公司业务的相互兼容。

开发世界上最流行Linux操作系统Ubuntu的公司Canonical在OpenStak发展早期宣布支持OpenStack,作为OpenStack的官方推荐系统,Ubuntu做了很多优化部署和使用的工作。

OpenStack作为全球当前最为流行的开源云计算平台,它的发展与业界厂商与广大开发者的支持是分不开的。

而在其不断的发展过程中,中国的开发者越来越登上了舞台,甚至已经变成了OpenStack发展进程中的不可或缺的一环。

前不久在亚特兰大的2014年OpenStackSummit中,国内的开发者越来越多的参与到了国际性的会议中。

国内也有一些公司在对OpenStack进行实践,研究,众多的IT厂商和开发者在参与其中。

作为国内领先的通信设备提供商,华为在2013年宣布支持OpenStack并被接纳为金牌会员。

目前华为有几百余人的团队在进行相关领域的工作。

新浪也是国内较早应用OpenStack的企业之一,SinaAppEngine(SAE)作为新浪提供的云主机服务,较早的关注并使用了OpenStack的技术。

其技术团队负责人程辉也是业界有名的OpenStack专家。

携程网络于2012年建立了基于OpenStack的内部云系统,用于支撑自身巨大的业务访问需求。

XX、360在其公司内部部署了超过1000多个结点的OpenStack应用环境。

爱奇艺内部部署的虚拟机也超过了3000个,这些互联网巨头都在加速对OpenStack的投入。

国内的开发者如杜玉杰、程辉、陈沙克、刘光亚等等,也都积极活跃在OpenStack的推广与开发中。

杜玉杰是第一届OpenStack基金会独立董事,杜玉杰组织了第一次OpenStack上海用户组会议,致力于推广OpenStack在中国的发展,目前其运营有TryS训练营,为企业和开发者提供简短的OpenStack培训。

程辉是新浪云产品经理,当选为第一届OpenStack基金会独立董事。

其在新浪内部率先采用了OpenStack作为新浪云的技术平台,并负责OpenStack在北京的地区的推广应用。

目前,程辉创立了UnitedStack,致力于简化OpenStack繁杂的部署,其UOS2.0于最近发布。

陈沙克因在其个人站点“陈沙克日志”中撰写了大量的OpenStack相关的实践博客而被OpenStack后继的学习者所认识。

OpenStack的火爆程度,以及越来越多企业和开发者对OpenStack的关注,促进了OpenStack的发展与进步。

OpenStack在云计算领域的影响力及其众多的支持者和开发者一定能够把OpenStack推向一个更高的平台。

1.3主流开源云计算项目

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

Eucalyptus

Eucalyptus[1]是一个用于实现云计算的开源软件基础设施,用来通过计算集群或工作站群实现弹性的、实用的云计算。

最初是美国加利福尼亚大学SantaBarbara计算机科学学院的一个研究项目,现在已经商业化。

Eucalyptus是AmazonEC2的一个开源实现,它与EC2的商业服务接口兼容。

Eucalyptus不同于其他的IaaS云计算系统,是一个面向研究社区的软件框架,它采用模块化的设计方案,组件可以进行升级,为研究人员提供了一个进行云计算研究的很好的平台。

Eucalyptus的设计目标是容易扩展、安装和维护。

和EC2一样,Eucalyptus依赖于Linux和Xen进行操作系统虚拟化。

CloudStack

CloudStack[1]是一个开源的具有高可用性及扩展性的云计算平台,它可以帮助用户利用自己的硬件提供类似于AmazonEC2那样的公共云服务。

Cloudstack支持管理大部分主流的hypervisors,如KVM,XenServer,VMware,OracleVM,Xen等。

CloudStack可以通过组织和协调用户的虚拟化资源,构建一个和谐的环境。

由CloudStack组成的IAAS和data中心可以快速,轻松地建立在其现有的基础设施,并对外提供云服务的需求,弹性云计算服务。

CloudStack用户可以充分利用云计算提供更高的效率,无限的规模和更快地部署新服务和系统的最终用户。

OpenNebula

OpenNebula[1]是由IgnacioMLlorente和RubenSMontero创立的一个研究项目,起源于2005年,于2008年发布了第一版。

OpenNebula是一个虚拟化企业数据中心和云基础设施建设和管理的行业开源解决方案,具有模块化、开放性和可扩展的架构,目前可支持XEN、KVM和VMware,以及实时存取EC2和ElasticHosts,它也支持印象档的传输、复制和虚拟网络管理网络。

OpenStack

OpenStack[1]是一个美国国家航空航天局和Rackspace合作研发的,是一个自由软件和开放源代码项目。

OpenStack是一个云平台管理的项目,这个项目由几个主要的组件组合起来完成一些具体的工作。

OpenStack旨在为公共及私有云的建设与管理提供软件。

它的社区拥有超过上千家企业及近万名开发者。

OpenStack项目由基金会管理,基金会成立于2012年,是一个实体型非营利组织,旨在保护、促进和授权OpenStack软件及其社区。

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

Eucalyptus

CloudStack

OpenNebula

OpenStack

发布时间

2008.5

2010.5

2008.7

2010.7

最新版本

4.0

4.2

icehouse

基本架构

CLC、CC、NC、Walrus、SC

网络、管理服务、云基础设施

API、用户与组、

主机、网络、存储、集群

Nova、Glance

Swift、Keystone

Horizon、Cinder

Neutron、Trove

Ceilometer

虚拟化支持

Xen、KVM、VMWare

Xen、KVM、VMWare

Xen、KVM、VMWare

Xen、KVM、VMWare

LXC、QEMU、UML

用户界面

简单浏览器、命令行

丰富浏览器

命令行

简单浏览器

命令行

丰富浏览器

命令行

公共云支持

兼容AWS

兼容AWS

兼容AWS

兼容AWS

社区活跃度

cloudstack.org

opennebula.org

openstack.org

表1.1是目前几大主流云计算平台的相关参数对比。

在主流的开源云计算项目中,OpenStack目前已经获得英特尔、Ubuntu、惠普、思科和中国华为等多个知名公司和开源组织的支持,是目前最火的开源云计算项目。

第二章相关技术介绍

本章主要对OpenStack及其子项目进行介绍,并对构建OpenStack的关键技术进行描述,最后分析了用于扩展镜像管理存储后端的几种方式。

2.1OpenStack及其子项目介绍

OpenStack是由NASA和RackSpace共同组成的云计算平台,帮助服务商和企业内部实现类似于AmazonEC2和S3的云计算架构服务(IaaS)。

自2010年起,OpenStack已发布Austin、Bexar、Cactus、Diablo、Essex、Folsom、Grizzly、Havana和Icehouse九个版本。

由于OpenStack[2]采用Apache2.0许可证发布源码,因此在短短四五年的时间内就吸引了RedHat、IBM、Cisso、HP、华为等众多企业和组织加入,国内公司也有一些基于OpenStack的商业应用出现,比如新浪SAE、携程、XX、360等。

OpenStack采用模块化设计,各个组件可以独立工作、分别提供虚拟化、云存储和镜像服务等独立服务;同时也实现了各个组件的联合工作,能够提供比较稳定完整的云计算架构服务,最新发布的Icehouse的集成程度算是比较完善了。

此外,模块化的设计能把旧的、第三方的技术集成进来,也使得开发者能够比较容易的对OpenStack进行二次开发,从而满足业务需求。

图2.1是对Openstack相关子项目的一个结构描述。

图2.1OpenStack核心子项目结构

截止到目前已经发布的Icehouse版,开源项目OpenStack包含的组件主要有Nova、Glance、Swift、Keystone、Horizon、Cinder、Neutron、Ceilometer、Heat、Trove等。

Nova

Nova是一套计算控制器,承载了OpenStack的计算功能。

用于为单个用户或使用群组启动虚拟机实例。

它同样能够用于为包含着多个实例的特定项目设置网络。

Nova在公共云处理方面堪与AmazonEC2相提并论;而在私有云方面也毫不逊色于VMware的产品。

图2.2是Nova项目的内部调用结构图:

图2.2Nova结构图

Swift

OpenStackObjectStorage(Swift)[3]是用来创建冗余的、可扩展的对象存储(引擎)的开源软件。

它可以用于存储永久性的数据,而且这些数据可用来CRUD。

最适合存储的数据类型的首要例子是虚拟机镜像,图片存储,邮件存储,存档备份。

因为没有中心单元或者主控结点,swift提供了更强的扩展性、冗余和持久性。

图2.3是swift的结构图:

图2.3Swift结构图

Swift主要有三个组成部分:

代理服务、存储服务和一致性服务。

如上图所示,其中Storage和Consistency服务均允许在存储结点上。

OpenStack的认证服务KeyStone被从swift中剥离了出来,用于OpenStack各个项目间的认证管理。

StorageServer提供了磁盘上的存储服务。

在Swift中有三类存储服务器:

账户、容器和对象。

其中Container服务器负责处理Object的列表,Container服务器并不知道对象存放位置,只知道指定Container里存的哪些Object。

这些Object信息以sqlite数据库文件的形式存储。

Container服务器也做一些跟踪统计,例如Object的总数、Container的使用情况。

Glance

Glance提供虚拟机镜像的发现、注册、取得服务。

Glance提供RestAPI可以查询虚拟机镜像的metadata,并且可以获得镜像。

通过Glance,虚拟机镜像可以被存储到多种存储上,比如简单的文件存储或者对象存储(比如swift)。

下图是Glance的项目结构图:

图2.4Glance结构图

Glance遵循结构化组件、高可用性、高容错性、可恢复性和开放标准的设计原则。

镜像使用URI作为唯一标识符。

Glance被设计为使用多种后端存储支持S3、Swift、简单的文件存储以及只读的Https存储,也支持分布式存储(SheepDog或Ceph等)。

Cinder

Cinder是将之前在Nova中的部分持久性块存储功能(Nova-Volume)分离了出来,独立为新的组件。

主要核心是对卷的管理,允许对卷、卷的类型、卷的快照进行处理。

它并没有实现对块设备的管理和实际服务,而是为后端不同的存储结构提供了统一的接口,不同的块设备服务厂商在Cinder中实现其驱动支持以与OpenStack进行整合。

图2.5是Cinder的结构图:

图2.5Cinder结构图

APIservice:

负责接受和处理Restful请求,并将请求放入RabbitMQ队列。

Schedulerservice:

处理任务队列的任务,并根据预定策略选择合适的VolumeService节点来执行任务。

Volumeservice:

该服务运行在存储节点上,管理存储空间。

每个存储节点都有一个Volumeservice,若干个这样的存储节点联合起来可以构成一个存储资源池。

Horizon

Horizon是OpenStack的一个子项目,用于提供一个Web前端控制台(Dashboard),以此来展示OpenStack的功能。

Horizon并没有为OpenStack添加任何一个新功能,它只是试用了OpenStack的部分API功能,因此,我们可以扩展Horizon的功能。

图2.6是Dashboard的页面截图。

图2.6DashBoard界面

Horizon主要基于python的django这一成熟的框架进行开发。

采用了MVC设计模式,基本保留了Django的MTV模式。

Keystone

KeyStone(OpenStackIdentityService)是OpenStack框架中,负责身份验证、服务规则和服务令牌的功能。

它实现了OpenStack的identityAPI。

Keystone类似于一个服务总线,或者说是整个OpenStack框架的注册表,其他服务通过keystone来注册其服务的Endpoint(服务访问的URL),任何服务之间相互的调用,需要经过keystone的身份验证,来获得目标服务的Endpoint来找到目标服务。

图2.7keystone流程图

Keystone主要包括:

User、Tenant、Role、Service、Token、Role、Endpoint等,一个普通用户访问的流程如上图。

Others

Neutron网络的目的是为OpenStack云更灵活的划分物理网络,在多租户环境下提供给每个租户独立的网络环境。

另外,Neutron提供API来实现这种目标。

Neutron中用户可以创建自己的网络对象,如果要和物理环境下的概念映射的话,这个网络对象相当于一个巨大的交换机,可以拥有无线多个动态可创建和销毁的虚拟端口。

Ceilometer项目的目标是成为OpenStack里数据采集(监控数据、计费数据)的唯一基础设施,将采集到的数据提供给监控、计费、面板等项目使用。

Heat是一套业务流程平台,旨在帮助用户更轻松地配置以OpenStack为基础的云体系。

利用Heat应用程序,开发人员能够在程序中使用模板以实现资源的自动化部署。

Heat能够启动应用、创建虚拟机并自动处理整个流程。

它还拥有出色的跨平台兼容性,能够与AmazonWebServices业务流程平台CloudFormation相对接——这意味着用户完全可以将AWS模板引入OpenStack环境当中。

Trove是OpenStack提供的数据库作为服务的一个项目。

它被设计成完整的运行在OpenStack上,目的是让用户能够方便快速地利用关系型数据库的特性,而不用处理复杂的管理性的任务。

云用户和数据库管理员可以按照需要规定并管理多种数据库实例。

起初,在自动处理复杂管理任务的时候(比如部署、配置、修补、备份、还原、监控)服务主要提供高性能资源隔离。

2.2关键技术介绍

OpenStack开源项目涉及到了多种技术,下面对这些技术做一些简单说明。

2.2.1Python

OpenStack子项目采用Python语言编写。

Python是一种面向对象、解释型脚本语言。

经过二十多年的发展,稳定并成熟,积累了大量的开发者和标准库。

Python具备垃圾回收机制。

经常被当作脚本语言用于编写网络程序和处理系统任务。

Python是一种跨平台的语言,可以完美支持Mac、Windows、Linux三大桌面操作系统。

由于Python语言的简洁、易读以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python教授程序设计课程。

众多开源的科学计算软件包都提供了Python的调用接口,例如著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。

Python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。

2.2.2WSGI

WSGI是一个web组件的接口规范,全称是WebServerGatewayInterface。

是python定义服务器接口的一种协议标准。

WSGI将web组件分为三类:

web服务器,web中间件,web应用程序。

应用程序通过中间件与服务器进行交互。

WSGI的工作流程:

服务器建立socket,进行监听端口,等待客户端连接;请求进来时,服务器解析信息并且放到环境变量environ中,并调用绑定的handler来处理请求;handler解析这个http请求,将请求信息放到environ中;wsgihandler再将一些服务器端信息也放到environ中,最后服务器信息,客户端信息,本次请求信息全部都保存到了环境变量environ中;wsgihandler调用注册的wsgiapp,并将environ和回调函数传给wsgiapp;wsgiapp将reponseheader/status/body回传给wsgihandler;最终handler通过socket将response信息塞给客户端。

OpenStack大部分子项目都会附有一个api的server,如nova-api,glance-api,还有不单独存在一个api服务的项目,例如neutron,keystone,这些server内部也有对api的处理,只是没有分离出来。

简单的来说,所有这些api都是一个WSGI的Application。

2.2.3Spice协议

Spice是一个开放的远程计算解决方案,使得客户端可以访问远程机器桌面和设备(比如键盘,鼠标,audio和USB)。

通过Spice我们可以像使用本地计算机一样访问远程机器,这样可以把CPU密集工作从客户端移交给远程高性能机器。

Spice适用于LAN和WAN,并且不会损害用户体验。

Spice项目提供了和虚拟桌面进行交互的解决方案,并且是完全开源的。

Spice项目可以处理虚拟设备(后端back-end)和前端front-end。

在前端和后端间通过VDI(VirtualDeviceInterfaces)进行交互。

OpenStackDashboard集成了一个SPICE-HTML5的组件用在控制台中。

通过交互界面,可以直接在浏览器中观看虚拟机的运行桌面。

2.2.4CAP理论和NWR存储策略

CAP理论是由UCBerkerly的EricBrewer在2000年提出的,当时是一个猜想,2年后被MIT的研究员证明为理论,很快被互联网企业们接受和拥护,到如今已经13年,成为了分布式系统设计的经典理论之一。

CAP的主要思想是C,A,P三者不可兼得,最多选择两个。

C代表一致性,保证得到的都是完成状态的数据,否则直接失败。

A代表可用性,在容忍的响应时间内,每个操作总是能够返回。

P代表分区容忍性,保证系统是分区的。

Amazon出了一篇论文,分析取舍的具体策略,具体到副本数的设定,这就是NWR。

NWR策略是在平衡读、写、备份的效率中使用到的一个非常经典的策略,在swift中的应用很关键。

策略来说就有具体的公式可供运算,有两个:

W>N/2W+R>N

N代表N个备份;W代表要写入至少W份才认为成功;R表示至少读取R个备份;公式W+R>N,保证某个数据不被两个不同的事务同时读和写;公式W>N/2保证两个事务不能并发写某一个数据。

配置的时候要求W+R>N。

因为W+R>N,所以R>N-W,就是读取的份数一定要比总备份数减去确保写成功的倍数的差值要大。

也就是说,每次读取,都至少读取到一个最新的版本,从而不会读到一份旧数据。

比如N=5,W=3,N-W=2,即保证5个备份中有3个是正确的,另外2个可能没有写成功。

如果只读取2份,那么这两份有可能都不是写成功的。

Swift在这个策略的选择中,选择的是N=3,W=2,R=2,与亚马逊的S3的策略值相同。

这样的策略,能够较好的平衡一致性、可用性和分区容忍性。

2.2.5AMQP与RabbitMQ

AMQP(高级消息队列协议)是一个异步消息传递所使用的应用层协议规范。

作为线路层协议,而不是API,AMQP客户端能够无视消息的来源任意发送和接受信息。

现在,已经有相当一部分不同平台的服务器3和客户端可以投入使用。

AMQP是一个抽象的协议,它不负责处理具体的数据。

反而,Internet使得消息无处不在。

人们通常使用它们和异步消息简单灵活地解决很多问题。

而且构建AMQ中的异步消息架构模型最困难的地方在于上手的时候,一旦这些困难被克服,那么构建过程将变得简单。

RabbitMQ是AMQP(高级消息队列协议)的消息中间件的一种实现方式,起源于金融系统,用于在分布式系

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1