草庐IT

openstack官网云计算管理平台简介

Optimist753 2024-01-06 原文

OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目组合。由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)授权的开源代码项目。

OpenStack为私有云和公有云提供可扩展的弹性的云计算服务。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。

中文名

OpenStack云计算管理平台

外文名

OpenStack

开发者

NASA,Rackspace

编程语言

Python

遵循标准

Open 、AMQP、SQLAlchemy

目录

  1. 简介
  2. 发展历程
  3. 发展趋势
  1. 工作流程
  2. 管理流程
  3. ▪ QEMU
  1. ▪ Libvirt
  2. 核心项目

 简介:

Openstack是一个云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作。Openstack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与个人将 Openstack作为基础设施即服务资源的通用前端。Openstack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。本文希望通过提供必要的指导信息,帮助大家利用 Openstack前端来设置及管理自己的公共云或私有云。

Openstack是由 Rackspace和NASA共同开发的云计算平台,帮助服务商和企业内部实现类似于 Amazon ec2和S3的云基础架构服务( Infrastructure as a Service)。 Openstack包括两个主要模块:Nova和 Swift。前者是NASA开发的虚拟服务器部署和业务计算模块;后者是 Backpack开发的分布式云存储模块,两者可以一起用,也可以分开单独用。 Openstack是开源项目,除了有 Rackspace和NASA的大力支持外,后面还有包括Dell、 Citrix、 Cisco Canonical这些重量级公司的贡献和支持,发展速度非常快,有取代另一个业界领先开源云台 Eucalyptus的态势。 

发展历程:

Openstack项目虽然诞生时间不长,但其发展之迅速,在云计算领域的影响力扩展,使得这个年轻的项目成为业内所有人都不得不关注的焦点。

2010年 Openstack项目成立。该项目由美国国家航空航天局(NASA)和 Rackspace合作研发, Apache许可证开源目前为止共有以下版本: 

(1) Austin——Openstack发布的第一个版本,这是第一个开源的云计算平台。 

(2) Bexar——Openstack发布的第二个版本,添加了IPv6的支持、影像传递技术,以及Hyper-V和Xen等虚拟服务器功能。

(3) Catus——Openstack发布的第三个版本,添加了虚拟化功能、自动化功能以及一个服务目录。 

(4) Diablo——Openstack发布的第四个版本,增加了新的图形化用户界面和统一身份识别管理系统。

(5) Essex——Openstack发布的第五个版本,完善了 Keystone认证,删除了对 Windows Hyper-V支持的相关代码。 

(6) Folsom——2012年9月 Open Stack发布的第六版。 Folsom包括了 Nova swift、 Horizon Keystone、 Glance原有的五个子项目之外,又多增 Quantum和 Cinder两项。 Quantum支持了数个现有的虚拟网络套件,如 Open vSwitch、Ryu网络操作系统( Network Operation System,NOS)等,也包括了 Cisco、 Nicira和NEC等厂商提供的虚拟网络套件等, Quantun可以让Open Stack的IaS平台能采用软件定义网络( Software Defined network,SDN)的技术,如OpenFlow。Cinder则加强了区块( Block)与磁盘区( Volume)的储存能力。

(7)Grizly——2013年4月Open Stack基金会发布的第七个版本。 Grizzly新增近230个新功能,涉及计算、存储、网络和共享服务等方面。例如 Open Stack计算虚拟化-计算使用“Cells”管理分布式集群,使用“NoDB”主机架构,以减少对中央数据库的依赖。

(8) Havana——2013年10月 Open Stack基金会发布的第八个版本。 Havana除了增加Open Stack Metering( Ceilometer)和 Open Stack Orchestration(Heat)两个新组件外,还完成了400多个特性计划,修补了3000多补丁。 

(9) Icehouse——2014年4月 Open Stack基金会发布的第九个版本。新版本提高了项目的稳定性与成熟度,提升用户体验的一致性,特别是针对存储方面。联合身份验证将允许用户通过相同认证信息同时访问 Open Stack私有云与共有云。新项目 Trove( DB as a service)现在已经成为版本中的组成部分,它允许用户在 Open Stack环境中管理关系数据库服务。

(10)Juno——2014年10月 OpenStack基金会发布的第十个版本。新增包括围绕 Hadoop和 Spark集群管理和监控的自动化服务和支持软件开发、大数据分析和大规模应用架构在内的342个功能点,标志着 Open Stack正向大范围支持的成熟云平台快速前进。自 Openstack项目成立以来,超过200个公司加入了该项目,其中包括AT&T、AMD、 Cisco、Dell、IBM、 Intel、 Red hat等。目前参与 Openstack项目的开发人员有17000,来自139个国家,这一数字还在不断增长中。来自咨询机构 Forrester的分析表示, OpenStack已经逐步成为事实上( de facto)的基础架构云(IaaS)标准。 [2] 

发展趋势:

尽管 Open Stack从诞生到现在已经变得日渐成熟,基本上已经能够满足云计算用户的大部分的需求。但随着云计算技术的发展, Open Stack必然也需要不断地完善。Open Stack已经逐渐成为市场上主流的一个云计算平台解决方案。结合业界的一般观点和调查中关于 Open Stack用户的意见, Open Stack需要完善的部分大体上可以归纳为以下几个方面:

(1)增强动态迁移:虽然 Open Stack的Nova组件支持动态迁移,但实质上 Open Stack尚未实现真正意义上的动态迁移。在 Open Stack中因为没有共存储只能做块迁移,共享迁移只能在有共享存储的情况下才被使用。

(2)数据安全:安全问题一直是整个云计算行业的问题,尽管 Open Stack中存在对用户身份信息的验证等安全措施,甚至划分出可以单独或合并表征安全信任等级的域,但随着用户需求的变化和发展,安全问题仍然不可小觑。

(3)计费和数据监控:随着 Open Stack在公有云平台中的进一步部署,计费和监控成为公有云运营中的一个重要环节。云平台的管理者和云计算服务的提供者必然会进一步开发Open Stack的商业价值。尽管 Open Stack中已经有 Ceilometer计量组件,通过它提供的API接口可以实现收集云计算里面的基本数据和其他信息,但这项工程目前尚处于完善和测试阶段,还需要大量的技术人员予以维护和支持。

工作流程:

Open Stack的各个服务之间通过统一的REST风格的API调用,实现系统的松耦合。它内部组件的工作过程是一个有序的整体。诸如计算资源分配、控制调度、网络通信等都通过AMQP实现。 Open Stack的上层用户是程序员、一般用户和 Horizon界面等模块。这三者都是采用 Open Stack各个组件提供的API接口进行交互,而它们之间则是通过AMQP进行互相调用,它们共同利用底层的虚拟资源为上层用户和程序提供云计算服务。 [3] 

管理流程:

OpenStack既然是一个开源的云平台项目,它的主要任务是给用户提供IaaS服务。

QEMU

QEMU是一个纯软件的计算机硬件仿真器。通过单独运行QEMU来模拟物理计算机,具有非常灵活和可移植的特点,利用它能够达到使用软件取代硬件的效果。

一般情况下,OpenStack可以部署在Ubuntu的Linux操作系统上,为了进一步提高QEMU的运行效率,往往会增加一个KVM硬件加速模块。KVM内嵌在Linux操作系统内核之中,能够直接参与计算机硬件的调度,这一点是QEMU所不具备的。一般的QEMU程序的执行必然要经过程序从用户态向内核态的转变,这必然会在一定程度上降低效率。所以QEMU虽然能够通过转换对硬件进行访问,但在OpenStack中往往采用KVM进行辅助,使得OpenStack的性能表现得更为良好。

但需要说明的是KVM需要良好的硬件支持,有些硬件本身如果不支持虚拟化的时候,KVM则不能使用。

Libvirt:

Libvirt是一个开源的、支持Linux下虚拟化工具的函数库。实质上它就是为构建虚拟化管理工具的API函数。Libvirt是为了能够更方便地管理平台虚拟化技术而设计的开放源代码的应用程序接口,它不仅提供了对虚拟化客户机的管理,也提供了对虚拟化网络和存储的管理。

最初的 Libvirt是只针对Xen而设计的一系列管理和调度Xen下的虚拟化资源的API函数,目前高版本的 Libvirt可以支持多种虚拟化方案,包括KVM、QEMU、Xen、 VMware、 VirtualBox等在内的平台虚拟化方案,又支持 Openvz、LXC等 Linux容器虚拟化系统,还支持用户态Linux(UML)的虚拟化,它能够对虚拟化方案中的Hypervisor进行适配,让底层 Hypervisor对上层用户空间的管理工具可以做到完全透明。 

核心项目:

OpenStack覆盖了网络、虚拟化、操作系统、服务器等各个方面。它是一个正在开发中的云计算平台项目,根据成熟及重要程度的不同,被分解成核心项目、孵化项目,以及支持项目和相关项目。每个项目都有自己的委员会和项目技术主管,而且每个项目都不是一成不变的,孵化项目可以根据发展的成熟度和重要性,转变为核心项目。截止到Icehouse版本,下面列出了10个核心项目(即OpenStack服务)。

1、计算(Compute):Nova。一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置CPU、内存等信息规格。自Austin版本集成到项目中。

2、对象存储(Object Storage):Swift。一套用于在大规模可扩展系统中通过内置冗余及高容错机制实现对象存储的系统,允许进行存储或者检索文件。可为Glance提供镜像存储,为Cinder提供卷备份服务。自Austin版本集成到项目中。

3、镜像服务(Image Service):Glance。一套虚拟机镜像查找及检索系统,支持多种虚拟机镜像格式(AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD、VMDK),有创建上传镜像、删除镜像、编辑镜像基本信息的功能。自Bexar版本集成到项目中。

4、身份服务(Identity Service):Keystone。为OpenStack其他服务提供身份验证、服务规则和服务令牌的功能,管理Domains、Projects、Users、Groups、Roles。自Essex版本集成到项目中。

5、网络&地址管理(Network):Neutron。提供云计算的网络虚拟化技术,为OpenStack其他服务提供网络连接服务。为用户提供接口,可以定义Network、Subnet、Router,配置DHCP、DNS、负载均衡、L3服务,网络支持GRE、VLAN。插件架构支持许多主流的网络厂家和技术,如OpenvSwitch。自Folsom版本集成到项目中。

6、块存储 (Block Storage):Cinder。为运行实例提供稳定的数据块存储服务,它的插件驱动架构有利于块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷。自Folsom版本集成到项目中。

7、UI 界面 (Dashboard):Horizon。OpenStack中各种服务的Web管理门户,用于简化用户对服务的操作,例如:启动实例、分配IP地址、配置访问控制等。自Essex版本集成到项目中。

8、测量 (Metering):Ceilometer。像一个漏斗一样,能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑。自Havana版本集成到项目中。

9、部署编排 (Orchestration):Heat。提供了一种通过模板定义的协同部署方式,实现云基础设施软件运行环境(计算、存储和网络资源)的自动化部署。自Havana版本集成到项目中。 

10、数据库服务(Database Service):Trove。为用户在OpenStack的环境提供可扩展和可靠的关系和非关系数据库引擎服务。自Icehouse版本集成到项目中。

OpenStack的核心项目:

OpenStack覆盖了网络、虚拟化、操作系统、服务器等各个方面。根据成熟及重要程度的不同,被分解成核心项目、孵化项目,支持项目和相关项目。每个项目都有自己的委员会和项目技术主管,而且每个项目都不是一成不变的,如孵化项目可以根据发展的成熟度和重要性,转变为核心项目。

OpenStack项目间的逻辑关系如下图所示:

OpenStack项目间的逻辑关系

以下列举OpenStack的6个最重要的核心项目。

Keystone:Keystone是OpenStack的认证服务,Keystone为所有的OpenStack组件提供认证和访问策略服务,它依赖自身REST系统进行工作,主要对Swift、Glance、Nova等进行认证与授权,它对动作消息中的来源者进行合法性鉴定。 Keystone采用两种授权方式,一种基于用户名/密码,另一种基于令牌(Token)。除此之外,Keystone提供以下三种服务:

  • 令牌服务:令牌中含有授权用户或群组的授权信息,授权给合法用户或群组。
  • 目录服务:目录中含有合法用户或群组的可用服务列表。
  • 策略服务:利用Keystone具体指定用户或群组的某些访问权限。

Nova:Nova是一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务,Nova负责管理整个云的计算资源、网络资源、授权及测度。虽然Nova本身并不提供任何虚拟能力,但是它将使用libvirt API与虚拟机的宿主机进行交互。Nova通过Web服务API来对外提供处理接口。

Glance:Glance负责OpenStack的镜像服务,Glance是一套虚拟机镜像发现、注册、检索系统,它提供虚拟机镜像的存储,查询和检索功能,为nova进行服务,依赖于存储服务和数据库服务。

Swift:Swift为OpenStack提供了一种分布式、持续虚拟对象存储。Swift具有跨节点的存储能力。Swift组件有冗余和失效备援管理功能,也能够处理归档和媒体流,特别是对大数据和大容量的测度非常高效。

Cinder:Cinder是OpenStack的块存储服务组件,它管理所有块存储设备,为VM服务。

Neutorn:Neutorn为OpenStack提供虚拟的网络功能,为每个不同的租户建立独立的网络环境。

华为FushionSphere OpenStack简介:

FusionSphere OpenStack(以下简称FusionSphere)是华为公司开发的云计算操作系统,它借鉴了OpenStack的架构(基于其源码开发),保留了OpenStack已有的对外接口,并且与华为传统的电信业务融合,简单的说,FusionSphere是华为公司对OpenStack进行增强后的企业版本,是商业化后的OpenStack。

相比OpenStack,FushionSphere有以下优势:

  1. FusionSphere有较好的兼容性,能够支持基于x86硬件平台的多种服务器和兼容多种存储设备,可供运营商和企业灵活选择。
  2. FusionSphere支持自定义的资源管理SLA(Service-Level Agreement)策略、故障判断标准及恢复策略。通过IT资源调度、热管理、能耗管理等一体化拉通,降低维护成本。同时FushionSphere还支持自动检测服务器或业务的负载情况,对资源进行智能调度,均衡各服务器及业务系统负载,保证系统良好的用户体验和业务系统的最佳响应。
  3. FusionSphere可根据不同的角色、权限等,提供完善的权限管理功能,授权用户对系统内容的资源进行管理。
  4. FushionSphere可针对不同的业务类型进行精确计费,如按IT资源(CPU、内存、存储)用量计费,或按时计费。
  5. FusionSphere提供多种运营工具,实现业务的可控、可管,提高整个系统运营的效率。
  6. FusionSphere采用多种安全措施和策略,并遵从信息安全法律法规,对用户接入、管理维护、数据、网络、虚拟化等提供端到端的业务保护。

流程图片:

有关openstack官网云计算管理平台简介的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  3. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  4. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

  5. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  6. HBase Region 简介和建议数量&大小 - 2

    Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile

  7. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  8. ruby - (Ruby || Python) 窗口管理器 - 2

    我想用这两种语言中的任何一种(最好是ruby​​)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生

  9. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  10. ruby-on-rails - 事件管理员和自定义方法 - 2

    这是我在ActiveAdmin中的自定义页面ActiveAdmin.register_page"Settings"doaction_itemdolink_to('Importprojects','settings/importprojects')endcontentdopara"Text"endcontrollerdodefimportprojectssystem"rakedataspider:import_projects_ninja"para"OK"endendend我想做的是,当我单击“导入项目”按钮时,我想在Controller中执行rake任务。但是我无法访问该方法。可能是什

随机推荐