1. 如何跑openstack的cinder单元测试
单元测试工具小结
Keystone的单元测试框架
使用tox进行测试环境管理
使用testrepository管理测试的运行
单元测试用例的代码架构
2. 如何基于openstack管理配置数据
OpenStack软件包括许多不同的模块,针对云环境中各个方面:
Swift:对象存储
Cinder:块存储
Nova:虚拟机计算
Neutron:网络
Horizon: 仪表盘
Keystone:认证服务
Glance:镜像服务
Ceilometer:遥测
Heat:编排
Trove:数据库即服务
随着每一个OpenStack的代码发布(目前是第九个版本,叫做IceHouse),新项目被创建或者从已有的项目上“分支”出来或者开一个全新的分支,包括用于裸机管理的Ironic以及会在OpenStack的Juno版本中发布的Sahara,用于弹性MapRece。
数据服务由以上的五个组件来提供。Swift是一个子项目,为OpenStack基础架构提供对象存储的功能。块存储由Cinder提供,使用标准的象iSCSI和NFS这样的IP存储协议。Glance为VM镜像提供一个知识库,使用底层的基本文件系统或者Swift作为存储。Trove提供数据库即服务 (DBaaS) 的能力,而Sahara提供弹性MapRece的功能,后者也被称为Hadoop集群存储。这篇文章,我们将着重讲述Cinder和Swift这两大主要的存储平台。
Cinder块存储
块存储是虚拟基础架构中必不可少的组件,是存储虚拟机镜像文件及虚拟机使用的数据的基础。直到2012年OpenStack Folsom的发布才引入了Cinder,VM镜像是短暂的,它们的存储只维持在那台虚拟机的生命周期。Cinder提供对块存储的管理支持,通过使用iSCSI, 光纤通道或者NFS协议,以及若干私有协议提供后端连接,展现给计算层(Nova)。
Cinder接口提供了一些标准功能,允许创建和附加块设备到虚拟机,如“创建卷”,“删除卷”和“附加卷”。还有更多高级的功能,支持扩展容量的能力,快照和创建虚拟机镜像克隆。
许多厂商在他们现有的硬件平台上提供对Cinder块的支持,通过使用一个Cinder驱动将Cinder API转换成厂商特定的硬件命令。提供Cinder支持的厂商包括了EMC(VMAX和VNX),惠普(3PAR StoreServ和StoreVirtual),日立数据系统,IBM(跨所有存储平台),NetApp,Pure Storage和SolidFire。还有一些基于软件的解决方案,比如EMC(ScaleIO)和Nexenta。
另外,许多软件存储实现,包括开源平台,都可以用于提供对Cinder的支持,这些软件中包括红帽的Ceph和GlusterFS。Ceph已经被集成到Linux内核中,使其成为最简单的一种为OpenStack部署环境提供块存储的方法。
NFS的支持是在2013年OpenStack的第七个版本引入的,又叫Grizzly,尽管之前Folsom有提供“试验性的”技术支持。在NFS的环境中,VM磁盘分区被当作单个的文件,这和在VMware ESXi虚拟程序或者微软的Hyper-V的VHD所使用的方法相似。将VM磁盘分区封装成文件可以实现类似快照和克隆这样的功能。
存储功能已引入Cinder的后续版本,之后一直被存储厂商们支持。支持的各种厂商平台和功能的完整列表可以在OpenStack的关于OpenStack块存储驱动器的Wiki页面找到。
Swift对象存储
OpenStack中的对象存储通过Swift来达成,Swift实现了分布在OpenStack的集群节点的横向扩展的对象存储。对象存储将数据以二进制对象的方式存储,没有特别的格式要求。Swift使用简单的类似PUT或GET(基于HTTP网络协议,也被称为RESTful API)的命令对对象进行存取操作。
Swift架构被分割成一些逻辑服务,包括对象服务器,代理服务器,容器服务器和帐户服务器,整个一起被称作一个ring。数据同其他用于追踪与每个存储对象相关的元数据和管理数据访问的组件一起存储在对象服务器上。
在Swift中使用zone的概念来管理数据的弹性。一个zone是一个ring的子部件,用于提供数据的一个拷贝,多个zone则用来存储冗余的数据拷贝,被称为replica(默认最少3个)。Swift能用一个单独的磁盘或者服务器来代表一个zone,包括数据中心之间的数据地理分布。
同许多对象存储一样,Swift使用最终一致性的思想来实现数据的弹性。这意味着数据不是象块存储那样以同步的方式在整个OpenStack集群里复制,而是在zone之间以一个后台任务的形式进行复制,这在系统高负载的情况下也许会挂起或者失败。
与块存储的同步复制提供高级别的可靠性功能相比,最终一致性也许看起来会更具风险。但是,在可扩展性,性能和弹性中总是得做出取舍。最终一致性使得一个记录归档比在一个基于块存储的系统更容易具备可扩展性,就Swift而言,代理服务器会确保取得最近一次的数据拷贝,即便在该集群里的一些服务器无法访问的时候。
和所有的OpenStack项目一起,随着每个版本的发布,Swift不断被开发出新的功能和功能增强。OpenStack Grizzly引入了更细粒度的replica控制,允许ring能够调整replica的数量。另外,通过基于对象服务器的时间排序的思想,改善了对象读取的性能。使得数据能够通过最快响应速度的对象服务器传递,这对于扩展到广域网很重要。
由于Swift使用HTTP协议,这样在OpenStack里使用第三方存储方案,包括Cleversafe,Scality的产品或者类似于Amazon Web Service简单存储服务(S3)这样的公有云,进行对象存储的做法会非常实用。
Swift还是Cinder?做出正确的选择
很显然Swift和Cinder为完全不同类型的数据需求服务。对象存储(通过Swift)被设计成专门针对诸如媒体,镜像和文件之类的对象型数据的高可扩展性存储。这些系统的重点在于能够大量扩展数据而不依赖于那些类似RAID的传统存储拥有的特性。但是,最终的一致性模型意味着Swift不适合存储像虚拟机这样的数据。
尽管Swift使用元数据来追踪对象和他们的版本,对象存储仍然需要额外的逻辑来追踪所存的对象上的用户元数据。这部分将需要用户自己来构建到应用程序中去。
Cinder提供块存储组件来存储持久化对象,比如虚拟机和定期在数据库中更新的数据。块存储的功能可以在整个OpenStack集群中实现,通过一些商用组件,使用内置的工具,如服务器逻辑盘管理器或者NFS,来传输存储资源。另外,开源解决方案如Ceph的和GlusterFS,提供从OpenStack的主代码中单独打包OpenStack存储模块的能力,同时仍保留可以使用开源软件的灵活性。
随着Cinder的广泛支持,现有的传统存储方案可以用到OpenStack部署环境中来提供存储服务。当一个IT组织已经具备了这种技术并且硬件平台也到位的情况下,这也许是他们更愿意采用的方式。现有的存储平台技术已经很发达,并且支持一些存储优化的高级功能,比如精简配置,重复数据删除和压缩。许多现在还提供服务质量(比如HP的3PAR StoreServ和SolidFire的平台),让它们适合在混合工作负载下而不是单纯的用于OpenStack的部署。其结果带来的一个显着的益处就是,可以将“繁重”的任务卸载到一个外部存储阵列。
在做出使用一个特定平台的决策中,系统架构师们需要权衡风险与使用OpenStack“”方案(仍然需要硬件)或者使用专属硬件提供的功能所花费的成本。
OpenStack存储备份
最后,我们应该考虑在OpenStack里备份数据的需求。备份OpenStack环境中的关键配置组件的具体细节已经有很好的文档描述,但是备份在一个OpenStack集群里的数据被视为用户自己的责任。备份可以通过使用外部存储供应商来轻松实现,比如说,SolidFire提供将整个集群备份到AmazonS3或者Swift兼容的对象存储中的功能。或者,用户将需要查看现有的支持他们的OpenStack虚拟机管理程序的备份产品。
Raksha是一个新的项目提议,将备份即服务的功能集成到OpenStack的框架中。会同时支持完全及增量的虚拟机备份到一个Swift“端”,并能让应用保持一致性。Raksha目前是一个独立的项目,不属于核心OpenStack框架。要将它集成到一般的类似VSphere和Hyper-V这样的虚拟化平台中会需要花一些功夫,但是至少可以提供一个更整合的解决方案来对OpenStack环境中的数据进行保护。
3. 简述OpenStack的各核心项目及相应用途
OpenStack覆盖了网络、虚拟化、操作系统、服务器等各个方面。它是一个正在开发中的云计算平台项目,根据成熟及重要程度的不同,被分解成核心项目、孵化项目,以及支持项目和相关项目。每个项目都有自己的委员会和项目技术主管,而且每个项目都不是一成不变的,孵化项目可以根据发展的成熟度和重要性,转变为核心项目。截止到Icehouse版本,下面列出了10个核心项目(即OpenStack服务)。
计算(Compute):Nova。一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置CPU、内存等信息规格。自Austin版本集成到项目中。
对象存储(Object Storage):Swift。一套用于在大规模可扩展系统中通过内置冗余及高容错机制实现对象存储的系统,允许进行存储或者检索文件。可为Glance提供镜像存储,为Cinder提供卷备份服务。自Austin版本集成到项目中
镜像服务(Image Service):Glance。一套虚拟机镜像查找及检索系统,支持多种虚拟机镜像格式(AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD、VMDK),有创建上传镜像、删除镜像、编辑镜像基本信息的功能。自Bexar版本集成到项目中。
身份服务(Identity Service):Keystone。为OpenStack其他服务提供身份验证、服务规则和服务令牌的功能,管理Domains、Projects、Users、Groups、Roles。自Essex版本集成到项目中。
网络&地址管理(Network):Neutron。提供云计算的网络虚拟化技术,为OpenStack其他服务提供网络连接服务。为用户提供接口,可以定义Network、Subnet、Router,配置DHCP、DNS、负载均衡、L3服务,网络支持GRE、VLAN。插件架构支持许多主流的网络厂家和技术,如OpenvSwitch。自Folsom版本集成到项目中。
块存储 (Block Storage):Cinder。为运行实例提供稳定的数据块存储服务,它的插件驱动架构有利于块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷。自Folsom版本集成到项目中。
UI 界面 (Dashboard):Horizon。OpenStack中各种服务的Web管理门户,用于简化用户对服务的操作,例如:启动实例、分配IP地址、配置访问控制等。自Essex版本集成到项目中。
测量 (Metering):Ceilometer。像一个漏斗一样,能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑。自Havana版本集成到项目中。
部署编排 (Orchestration):Heat [2] 。提供了一种通过模板定义的协同部署方式,实现云基础设施软件运行环境(计算、存储和网络资源)的自动化部署。自Havana版本集成到项目中。
数据库服务(Database Service):Trove。为用户在OpenStack的环境提供可扩展和可靠的关系和非关系数据库引擎服务。自Icehouse版本集成到项目中。
4. openstack组件问题
OpenStack其实有三个与存储相关的组件,这三个组件被人熟知的程度和组件本身出现时间的早晚是相符的,按熟悉程度排列如下:
Swift——提供对象存储 (Object Storage),在概念上类似于Amazon S3服务,不过swift具有很强的扩展性、冗余和持久性,也兼容S3 API
Glance——提供虚机镜像(Image)存储和管理,包括了很多与Amazon AMI catalog相似的功能。(Glance的后台数据从最初的实践来看是存放在Swift的)。
Cinder——提供块存储(Block Storage),类似于Amazon的EBS块存储服务,目前仅给虚机挂载使用。
(Amazon一直是OpenStack设计之初的假象对手和挑战对象,所以基本上关键的功能模块都有对应项目。除了上面提到的三个组件,对于AWS中的重要的EC2服务,OpenStack中是Nova来对应,并且保持和EC2 API的兼容性,有不同的方法可以实现)
三个组件中,Glance主要是虚机镜像的管理,所以相对简单;Swift作为对象存储已经很成熟,连CloudStack也支持它。Cinder是比较新出现的块存储,设计理念不错,并且和商业存储有结合的机会,所以厂商比较积极。
Swift
关于Swift的架构和部署讨论,除了官方网站,网上也有很多文章,这里就不重复.(也可以参考我之前在OpenStack中国行活动中上海站演讲的PPT)。从开发上看,最近也没有太大的结构性调整,所以我想主要说说比较适用的应用领域好了。
从我所了解的实际案例来看,Swift出现的领域有4个,(应该还有更多,希望大家看到实际用例能够指教)
1.网盘。
Swift的对称分布式架构和多proxy多节点的设计导致它从基因里就适合于多用户大并发的应用模式,最典型的应用莫过于类似Dropbox的网盘应用,Dropbox去年底已经突破一亿用户数,对于这种规模的访问,良好的架构设计是能够支撑的根本原因。
Swift的对称架构使得数据节点从逻辑上看处于同级别,每台节点上同时都具有数据和相关的元数据。并且元数据的核心数据结构使用的是哈希环,一致性哈希算法对于节点的增减都只需重定位环空间中的一小部分数据,具有较好的容错性和可扩展性。另外数据是无状态的,每个数据在磁盘上都是完整的存储。这几点综合起来保证了存储的本身的良好的扩展性。
另外和应用的结合上,Swift是说HTTP协议这种语言的,这使得应用和存储的交互变得简单,不需要考虑底层基础构架的细节,应用软件不需要进行任何的修改就可以让系统整体扩展到非常大的程度。
2.IaaS公有云
Swift在设计中的线性扩展,高并发和多租户支持等特性,使得它也非常适合做为IaaS的选择,公有云规模较大,更多的遇到大量虚机并发启动这种情况,所以对于虚机镜像的后台存储具体来说,实际上的挑战在于大数据(超过G)的并发读性能,Swift在OpenStack中一开始就是作为镜像库的后台存储,经过RACKSpace上千台机器的部署规模下的数年实践,Swift已经被证明是一个成熟的选择。
另外如果基于IaaS要提供上层的SaaS 服务,多租户是一个不可避免的问题,Swift的架构设计本身就是支持多租户的,这样对接起来更方便。
3.备份归档
RackSpace的主营业务就是数据的备份归档,所以Swift在这个领域也是久经考验,同时他们还延展出一种新业务--“热归档”。由于长尾效应,数据可能被调用的时间窗越来越长,热归档能够保证应用归档数据能够在分钟级别重新获取,和传统磁带机归档方案中的数小时而言,是一个很大的进步。
4. 移动互联网和CDN
移动互联网和手机游戏等产生大量的用户数据,数据量不是很大但是用户数很多,这也是Swift能够处理的领域。
至于加上CDN,如果使用Swift,云存储就可以直接响应移动设备,不需要专门的服务器去响应这个HTTP的请求,也不需要在数据传输中再经过移动设备上的文件系统,直接是用HTTP 协议上传云端。如果把经常被平台访问的数据缓存起来,利用一定的优化机制,数据可以从不同的地点分发到你的用户那里,这样就能提高访问的速度,我最近看到Swift的开发社区有人在讨论视频网站应用和Swift的结合,窃以为是值得关注的方向。
Glance
Glance比较简单,是一个虚机镜像的存储。向前端nova(或者是安装了Glance-client的其他虚拟管理平台)提供镜像服务,包括存储,查询和检索。这个模块本身不存储大量的数据,需要挂载后台存储(Swift,S3。。。)来存放实际的镜像数据。
Glance主要包括下面几个部分:
l API service: glance-api 主要是用来接受Nova的各种api调用请求,将请求放入RBMQ交由后台处理,。
l Glacne-registry 用来和MySQL数据库进行交互,存储或者获取镜像的元数据,注意,刚才在Swift中提到,Swift在自己的Storage Server中是不保存元数据的,这儿的元数据是指保存在MySQL数据库中的关于镜像的一些信息,这个元数据是属于Glance的。
l Image store: 后台存储接口,通过它获取镜像,后台挂载的默认存储是Swift,但同时也支持Amazon S3等其他的镜像。
Glance从某种角度上看起来有点像虚拟存储,也提供API,可以实现比较完整的镜像管理功能。所以理论上其他云平台也可以使用它。
Glance比较简单,又限于云内部,所以没啥可以多展开讨论的,不如看看新出来的块存储组件Cinder,目前我对Cinder基本的看法是总体的设计不错,细节和功能还有很多需要完善的地方,离一个成熟的产品还有点距离。
Cinder
OpenStack到F版本有比较大的改变,其中之一就是将之前在Nova中的部分持久性块存储功能(Nova-Volume)分离了出来,独立为新的组件Cinder。它通过整合后端多种存储,用API接口为外界提供块存储服务,主要核心是对卷的管理,允许对卷,卷的类型,卷的快照进行处理。
Cinder包含以下三个主要组成部分
API service:Cinder-api 是主要服务接口, 负责接受和处理外界的API请求,并将请求放入RabbitMQ队列,交由后端执行。 Cinder目前提供Volume API V2
Scheler service: 处理任务队列的任务,并根据预定策略选择合适的Volume Service节点来执行任务。目前版本的cinder仅仅提供了一个Simple Scheler, 该调度器选择卷数量最少的一个活跃节点来创建卷。
Volume service: 该服务运行在存储节点上,管理存储空间,塔处理cinder数据库的维护状态的读写请求,通过消息队列和直接在块存储设备或软件上与其他进程交互。每个存储节点都有一个Volume Service,若干个这样的存储节点联合起来可以构成一个存储资源池。
Cinder通过添加不同厂商的指定drivers来为了支持不同类型和型号的存储。目前能支持的商业存储设备有EMC 和IBM的几款,也能通过LVM支持本地存储和NFS协议支持NAS存储,所以Netapp的NAS应该也没问题,好像华为也在努力中。我前段时间还在Cinder的blueprints看到IBM的GPFS分布式文件系统,在以后的版本应该会添加进来
到目前为止,Cinder主要和Openstack的Nova内部交互,为之提供虚机实例所需要的卷Attach上去,但是理论上也可以单独向外界提供块存储。
部署上,可以把三个服务部署在一台服务器,也可以独立部署到不同物理节点
现在Cinder还是不够成熟,有几个明显的问题还没很好解决,一是支持的商业存储还不够多,而且还不支持FC SAN,另外单点故障隐患没解决,内部的schele调度算法也太简单。另外由于它把各种存储整合进来又加了一层,管理倒是有办法了,但是效率肯定是有影响,性能肯定有损耗,但这也是没办法的事了。
Openstack通过两年多发展,变得越来越庞大。目前光存储就出现了三种:对象存储、镜像存储和块存储。这也是为了满足更多不同的需求,体现出开源项目灵活快速的特性。总的说来,当选择一套存储系统的时候,如果考虑到将来会被多个应用所共同使用,应该视为长期的决策。Openstack作为一个开放的系统,最主要是解决软硬件供应商锁定的问题,可以随时选择新的硬件供应商,将新的硬件和已有的硬件组成混合的集群,统一管理,当然也可以替换软件技术服务的提供商,不用动应用。这是开源本身的优势!
5. openstack cinder lvm 挂载出错。
如果直接在 /etc/fstab 中写上挂载点没用,系统认为还没这个设备
QUOTE:
Mounting local filesystems: mount: special device /dev/mapper/VolGroup-lvol0 does not exist
[FAILED]
Mounting filesystems: mount: special device /dev/mapper/VolGroup-lvol0 does not exist
[FAILED]
有人是在启动文件中写入
vgchange -ay
lvcganhe -ay
等命令才实现自动挂载的。
6. OpenStack选用哪种后端存储系统比较好
和openstack融合度较好的就是ceph,国内大多数云环境都使用ceph作为openstack的唯一后端存储。国内使用ceph开发出分布式存储系统的厂商有深圳元核云、北京xsky等,性能都还不错的。
7. 《OpenStack从零开始学》pdf下载在线阅读全文,求百度网盘云资源
《OpenStack从零开始学》(卢万龙)电子书网盘下载免费在线阅读
链接:
书名:OpenStack从零开始学
作者:卢万龙
豆瓣评分:4.2
出版社:电子工业出版社
出版年份:2016-11
页数:352
内容简介:
OpenStack作为开源云计算技术首当其冲,有着广泛的受众、活跃的社区和良好的传播,尊为云计算技术的领导者。
《OpenStack从零开始学》由浅入深,从设计理论到实际操作,带领读者认识OpenStack云计算的全貌,轻松步入OpenStack云计算的世界。其内容涵盖了OpenStack云计算设计理论,虚拟化技术KVM和Xen的原理与应用,4种OpenStack网络架构(Flat、Local、GRE和VXLAN)模式和网络OSI 7层模型介绍,Ceph分布式存储, OpenStack安装配置(Nova、Cinder、Neutron、Horizon、Swift和Keystone等服务组件)、应用场景和实际操作(卷管理、创建网络和实例、实例热迁移和冷迁移)等多个方面,使读者读后如沐春风,真正喜欢云计算这项技术。
《OpenStack从零开始学》适合刚刚或者计划进入云计算领域的初级读者学习,也适合已经进入云计算领域并且有一定相关知识或认识的中级读者阅读。对于一些从事售前工作的读者,《OpenStack从零开始学》也非常适用。
作者简介:
卢万龙
现就职于联想集团,近十年来一直专注于虚拟化、云计算和基础设施架构方面,参与建设企业众多重要项目的可行性研究、设计、实施和运维等工作,学习和积累了丰富的技术和项目管理经验,对KVM虚拟化、OpenStack云计算、分布式文件系统和IBM PowerVM有深入研究
周萌
2007年加入中油瑞飞,现任部门经理、技术架构师。拥有10多年行业从业经验,作为技术负责人参与了中石油多个统建项目的实施,对云计算有深入的理解,发表了多篇文章,研究领域包括分布式计算、项目管理和系统架构,积累了深厚的技术专业知识和丰富的管理经验。
8. 如何进行 OpenStack 的性能测试及平台功能性测试
1,openstack包含nova、cinder、neutron等模块,具体的模块压测行为不同,通用的工具就是用lr或者jmeter进行接口压测,或者基于mock框架 模拟大数据批量压测;
2,平台功能性测试有很多方法,第一:最笨的方法就是人工验证;第二:可以借助自动化工具进行验证,例如seleniumn等自动化框架,前提是你的平台功能性比较稳定。
打字不易,希望的回答能帮到你,谢谢。
9. openstack中的三种基础资源是那三种
openstack中的三种基础资源是:计算服务、存储服务、镜像服务。
它负责管理OpenStack集群中的镜像,可以创建、删除、编辑镜像基本信息,支持多种虚拟机镜像格式。但是,Glance本身并不存储信息,它只保存描述镜像的元数据和状态信息,存储工作由cinder和swift等项目负责。
工作流程:
Open Stack的各个服务之间通过统一的REST风格的API调用,实现系统的松耦合。它内部组件的工作过程是一个有序的整体。诸如计算资源分配、控制调度、网络通信等都通过AMQP实现。 Open Stack的上层用户是程序员、一般用户和 Horizon界面等模块。
这三者都是采用 Open Stack各个组件提供的API接口进行交互,而它们之间则是通过AMQP进行互相调用,它们共同利用底层的虚拟资源为上层用户和程序提供云计算服务。
10. 在openstack中swift和cinder中的区别
swift是object storage(对象存储),将object(可以理解为文件)存储到bucket(可以理解为文件夹)里,你可以用swift创建container,然后上传文件,例如视频,照片,这些文件会被replication到不同服务器上以保证可靠性,swift可以不依靠虚拟机工作。所谓的云存储,OpenStack就是用swift实现的,类似于Amazon AWS S3(Simple Storage Service).
cinder是block storage(块存储),你可以把cinder当做优盘管理程序来理解。你可以用cinder创建volume,然后将它接到(attach)虚拟机上去,这个volume就像虚拟机的一个存储分区一样工作。如果你把这个虚拟机terminate了,这个volume和里边的数据依然还在,你还可以把它接到其他虚拟机上继续使用里边的数据。cinder创建的volume必须被接到虚拟机上才能工作。类似于Amazon AWS EBS(Elastic Block Storage).