OpenStack之基础知识

1、云计算

云计算(cloud computing)是基于互联网的相关服务的增长、使用和交付模式,一般涉及经过互联网来提供动态易扩展且常常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中每每用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。所以,云计算甚至可让你体验每秒10万亿次的运算能力,拥有这么强大的计算能力能够模拟核爆炸、预测气候变化和市场发展趋势。用户经过电脑、笔记本、手机等方式接入数据中心,按本身的需求进行运算。
美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源可以被快速提供,只需投入不多的管理工做,或与服务供应商进行不多的交互。XenSystem,以及在国外已经很是成熟的Intel 和IBM,各类“云计算”的应用服务范围正日渐扩大,影响力也无可估量。
不一样的“云”对应着不一样的基础设施。下面是三种广义的“云”:html

  • 基础设施即服务(IaaS)
  • 平台即服务(PaaS)
  • 软件即服务(SaaS)

2、OpenStack

2.1 openstack介绍

openstack是(infrastructure as a service,基础设置即服务)IAAS架构的实现,OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合做研发并发起的,以Apache许可证受权的自由软件和开放源代码项目。
OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工做。OpenStack支持几乎全部类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack经过各类互补的服务提供了基础设施即服务(IaaS)的解决方案,每一个服务提供API以进行集成。
OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与我的都将OpenStack做为基础设施即服务(IaaS)资源的通用前端。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。本文但愿经过提供必要的指导信息,帮助你们利用OpenStack前端来设置及管理本身的公共云或私有云。
OpenStack云计算平台,帮助服务商和企业内部实现相似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as a Service, IaaS)。OpenStack 包含两个主要模块:Nova 和 Swift,前者是 NASA 开发的虚拟服务器部署和业务计算模块;后者是 Rackspace开发的分布式云存储模块,二者能够一块儿用,也能够分开单独用。OpenStack除了有 Rackspace 和 NASA 的大力支持外,还有包括 Dell、Citrix、 Cisco、 Canonical等重量级公司的贡献和支持,发展速度很是快,有取代另外一个业界领先开源云平台 Eucalyptus 的态势。
前端

2.2 历史版本信息

openstack的核心组件是计算、网络和存储,是为了简化资源的管理和分配,把资源划分为三个比较大的资源池,对外经过API进行交互,openstack相似于一个开源的AWS,有不少功能和API和AWS是相同的,所以AWS底层也是使用的KVM虚拟化,当前最新的是N版,每半年更新一次新版本,已经从A-N,从G版之后国内的使用用户愈来愈多,一下是历史版本更新时间:
html5

2.3 OpenStack的架构


各组件的功能:
整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。
其中:
控制节点负责对其他节点的控制,包含虚拟机创建,迁移,网络分配,存储分配等等
计算节点负责虚拟机运行
网络节点负责对外网络与内网络之间的通讯
存储节点负责对虚拟机的额外存储管理等等node

控制节点架构:
控制节点包括如下服务web

  • 管理支持服务
  • 基础管理服务
  • 扩展管理服务

1)管理支持服务包含MySQL与Qpid两个服务
MySQL:数据库做为基础/扩展服务产生的数据存放的地方
Qpid:消息代理(也称消息中间件)为其余各类服务之间提供了统一的消息通讯服务算法

2)基础管理服务包含Keystone,Glance,Nova,Neutron,Horizon五个服务
Keystone:认证管理服务,提供了其他全部组件的认证信息/令牌的管理,建立,修改等等,使用MySQL做为统一的数据库
Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及制做相应的模板
Nova:计算管理服务,提供了对计算节点的Nova的管理,使用Nova-API进行通讯
Neutron:网络管理服务,提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理面板
Horizon:控制台服务,提供了以Web的形式对全部节点的全部服务的管理,一般把该服务称为DashBoard数据库

3)扩展管理服务包含Cinder,Swift,Trove,Heat,Centimeter五个服务
Cinder:提供管理存储节点的Cinder相关,同时提供Cinder在Horizon中的管理面板
Swift:提供管理存储节点的Swift相关,同时提供Swift在Horizon中的管理面板
Trove:提供管理数据库节点的Trove相关,同时提供Trove在Horizon中的管理面板
Heat:提供了基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操做,也能够解决自动收缩,负载均衡等高级特性。
Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在必定条件下触发相应动做swift

控制节点通常来讲只须要一个网络端口用于通讯/管理各个节点后端

网络节点架构
网络节点仅包含Neutron服务
Neutron:负责管理私有网段与公有网段的通讯,以及管理虚拟机网络之间的通讯/拓扑,管理虚拟机之上的防火等等api

网络节点包含三个网络端口
eth0:用于与控制节点进行通讯
eth1:用于与除了控制节点以外的计算/存储节点之间的通讯
eth2:用于外部的虚拟机与相应网络之间的通讯

计算节点架构
计算节点包含Nova,Neutron,Telemeter三个服务

1)基础服务
Nova:提供虚拟机的建立,运行,迁移,快照等各类围绕虚拟机的服务,并提供API与控制节点对接,由控制节点下发任务
Neutron:提供计算节点与网络节点之间的通讯服务

2)扩展服务
Telmeter:提供计算节点的监控代理,将虚拟机的状况反馈给控制节点,是Centimeter的代理服务

计算节点包含最少两个网络端口
eth0:与控制节点进行通讯,受控制节点统一调配
eth1:与网络节点,存储节点进行通讯

存储节点架构
存储节点包含Cinder,Swift等服务

Cinder:块存储服务,提供相应的块存储,简单来讲,就是虚拟出一块磁盘,能够挂载到相应的虚拟机之上,不受文件系统等因素影响,对虚拟机来讲,这个操做就像是新加了一块硬盘,能够完成对磁盘的任何操做,包括挂载,卸载,格式化,转换文件系统等等操做,大多应用于虚拟机空间不足的状况下的空间扩容等等
Swift:对象存储服务,提供相应的对象存储,简单来讲,就是虚拟出一块磁盘空间,能够在这个空间当中存放文件,也仅仅只能存放文件,不能进行格式化,转换文件系统,大多应用于云磁盘/文件

存储节点包含最少两个网络接口
eth0:与控制节点进行通讯,接受控制节点任务,受控制节点统一调配
eth1:与计算/网络节点进行通讯,完成控制节点下发的各种任务

openstack经过Nova调用KVM/XEN/VMWARE等虚拟机化技术建立虚拟机,即openstack是一个管理平台框架,支持众多的虚拟化管理,cinder存储支持GlusterFS、ISCSI、MFS等存储技术给虚拟机使用,即openstack不会绑定某一个应用,而是兼容众多的相关技术,所以火的一塌糊涂!

3、组件详解

1.OpenStack认证服务(Keystone)

Keystone为全部的OpenStack组件提供认证和访问策略服务,它依赖自身REST(基于Identity API)系统进行工做,主要对(但不限于)Swift、Glance、Nova等进行认证与受权。事实上,受权经过对动做消息来源者请求的合法性进行鉴定。
重要组成:

  • 服务器
    一个中心化的服务器使用RESTful 接口来提供认证和受权服务。
  • Drivers
    驱动或服务后端被整合进集中式服务器中。它们被用来访问OpenStack外部仓库的身份信息, 而且它们可能已经存在于OpenStack被部署在的基础设施(例如,SQL数据库或LDAP服务器)中。
  • Modules
    中间件模块运行于使用身份认证服务的OpenStack组件的地址空间中。这些模块拦截服务请求,取出用户凭据,并将它们送入中央是服务器寻求受权。中间件模块和OpenStack组件间的整合使用Python Web服务器网关接口。

下图显示了身份认证服务流程:

Keystone采用两种受权方式,一种基于用户名/密码,另外一种基于令牌(Token)。

除此以外,Keystone提供如下三种服务:

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

keystone认证服务注意点:

  • 服务入口:如Nova、Swift和Glance同样每一个OpenStack服务都拥有一个指定的端口和专属的URL,咱们称其为入口(endpoints)。
  • 区位:在某个数据中心,一个区位具体指定了一处物理位置。在典型的云架构中,若是不是全部的服务都访问分布式数据中心或服务器的话,则也称其为区位。
  • 用户:Keystone受权使用者
      PS:表明一个个体,OpenStack以用户的形式来受权服务给它们。用户拥有证书(credentials),且可能分配给一个或多个租户。通过验证后,会为每一个单独的租户提供一个特定的令牌。
  • 服务:整体而言,任何经过Keystone进行链接或管理的组件都被称为服务。举个例子,咱们能够称Glance为Keystone的服务。
  • 角色:为了维护安全限定,就云内特定用户可执行的操做而言,该用户关联的角色是很是重要的。
      PS:一个角色是应用于某个租户的使用权限集合,以容许某个指定用户访问或使用特定操做。角色是使用权限的逻辑分组,它使得通用的权限能够简单地分组并绑定到与某个指定租户相关的用户。
  • 租间:租间指的是具备所有服务入口并配有特定成员角色的一个项目。
      PS:一个租间映射到一个Nova的“project-id”,在对象存储中,一个租间能够有多个容器。根据不一样的安装方式,一个租间能够表明一个客户、账号、组织或项目。

2.OpenStack计算设施(Nova)

Nova是OpenStack计算的弹性控制器。OpenStack云实例生命期所需的各类动做都将由Nova进行处理和支撑,这就意味着Nova以管理平台的身份登场,负责管理整个云的计算资源、网络、受权及测度。虽然Nova自己并不提供任何虚拟能力,可是它将使用libvirt API与虚拟机的宿主机进行交互。Nova经过Web服务API来对外提供处理接口,并且这些接口与Amazon的Web服务接口是兼容的。

功能及特色: 

  • 实例生命周期管理
  • 计算资源管理
  • 网络与受权管理
  • 基于REST的API
  • 异步连续通讯
  • 支持各类宿主:Xen、XenServer/XCP、KVM、UML、VMware vSphere及Hyper-V

Nova弹性云(OpenStack计算部件)包含如下主要部分:

  • API Server(nova-api)
    API服务器提供了云设施与外界交互的接口,它是外界用户对云实施管理的惟一通道。经过使用web服务来调用各类EC2的API,接着API服务器便经过消息队列把请求送达至云内目标设施进行处理。做为对EC2-api的替代,用户也可使用OpenStack的原生API,咱们把它叫作“OpenStack API”。
    接收和响应来自最终用户的计算API请求。此服务支持OpenStack计算服务API,Amazon EC2 API,以及特殊的管理API用于赋予用户作一些管理的操做。它会强制实施一些规则,发起多数的编排活动,例如运行一个实例。
  • 消息队列(rabbit-mq server)
    OpenStack内部在遵循AMQP(高级消息队列协议)的基础上采用消息队列进行通讯。Nova对请求应答进行异步调用,当请求接收后便则当即触发一个回调。因为使用了异步通讯,不会有用户的动做被长置于等待状态。例如,启动一个实例或上传一份镜像的过程较为耗时,API调用就将等待返回结果而不影响其它操做,在此异步通讯起到了很大做用,使整个系统变得更加高效。
  • 运算工做站(nova-compute)
    运算工做站的主要任务是管理实例的整个生命周期。他们经过消息队列接收请求并执行,从而对实例进行各类操做。在典型实际生产环境下,会架设许多运算工做站,根据调度算法,一个实例能够在可用的任意一台运算工做站上部署。
    一个持续工做的守护进程,经过Hypervior的API来建立和销毁虚拟机实例。例如:
    XenServer/XCP 的 XenAPI
    KVM 或 QEMU 的 libvirt
    VMware 的 VMwareAPI
    过程是蛮复杂的。最为基本的,守护进程赞成了来自队列的动做请求,转换为一系列的系统命令如启动一个KVM实例,而后,到数据库中更新它的状态。
  • 网络控制器(nova-network)
    网络控制器处理主机的网络配置,例如IP地址分配,配置项目VLAN,设定安全群组以及为计算节点配置网络。
  • 卷管理(nova-volume)
    卷工做站管理基于LVM的 实例卷,它可以为一个实例建立、删除、附加卷,也能够从一个实例中分离卷。卷管理为什么如此重要?由于它提供了一种保持实例持续存储的手段,好比当结束一个 实例后,根分区若是是非持续化的,那么对其的任何改变都将丢失。但是,若是从一个实例中将卷分离出来,或者为这个实例附加上卷的话,即便实例被关闭,数据 仍然保存其中。这些数据能够经过将卷附加到原实例或其余实例的方式而从新访问。
    所以,为了往后访问,重要数据务必要写入卷中。这种应用对于数据服务器实例的存储而言,尤其重要。
  • 调度器(nova-scheduler)
    拿到一个来自队列请求虚拟机实例,而后决定那台计算服务器主机来运行它。
    调度器负责把nova-API调用送达给目标。调度器以名为“nova-schedule”的守护进程方式运行,并根据调度算法从可用资源池中恰当地选择运算服务器。有不少因素均可以影响调度结果,好比负载、内存、子节点的远近、CPU架构等等。强大的是nova调度器采用的是可插入式架构。
    目前nova调度器使用了几种基本的调度算法:
    随机化:主机随机选择可用节点;
    可用化:与随机类似,只是随机选择的范围被指定;
    简单化:应用这种方式,主机选择负载最小者来运行实例。负载数据能够从别处得到,如负载均衡服务器。
  • nova-cert
    服务器守护进程向Nova Cert服务提供X509证书。用来为euca-bundle-image生成证书。仅仅是在EC2 API的请求中使用
  • nova-novncproxy
    提供一个代理,用于访问正在运行的实例,经过VNC协议,支持基于浏览器的novnc客户端。
  • nova-spicehtml5proxy
    提供一个代理,用于访问正在运行的实例,经过 SPICE 协议,支持基于浏览器的 HTML5 客户端。
  • nova-xvpvncproxy
    提供一个代理,用于访问正在运行的实例,经过VNC协议,支持OpenStack特定的Java客户端。
  • SQL数据库
    存储构建时和运行时的状态,为云基础设施,包括有:
    可用实例类型
    使用中的实例
    可用网络
    项目

3.OpenStack镜像服务(Glance)

OpenStack镜像服务是IaaS的核心服务,如同 :ref:get_started_conceptual_architecture所示。它接受磁盘镜像或服务器镜像API请求,和来自终端用户或OpenStack计算组件的元数据定义。它也支持包括OpenStack对象存储在内的多种类型仓库上的磁盘镜像或服务器镜像存储。

大量周期性进程运行于OpenStack镜像服务上以支持缓存。同步复制(Replication)服务保证集群中的一致性和可用性。其它周期性进程包括auditors, updaters, 和 reapers。

OpenStack镜像服务包括如下组件:

  • glance-api
    接收镜像API的调用,诸如镜像发现、恢复、存储。
  • glance-registry
    存储、处理和恢复镜像的元数据,元数据包括项诸如大小和类型。
  • 数据库
    存放镜像元数据,用户是能够依据我的喜爱选择数据库的,多数的部署使用MySQL或SQLite。
  • 镜像文件的存储仓库
    Various repository types are supported including normal file systems (or any filesystem mounted on the glance-api controller node), Object Storage, RADOS block devices, VMware datastore, and HTTP. Note that some repositories will only support read-only usage.
  • 元数据定义服务
    通用的API,是用于为厂商,管理员,服务,以及用户自定义元数据。这种元数据可用于不一样的资源,例如镜像,工件,卷,配额以及集合。一个定义包括了新属性的键,描述,约束以及能够与之关联的资源的类型。

4.OpenStack网络服务(neutron)

OpenStack Networking(neutron),容许建立、插入接口设备,这些设备由其余的OpenStack服务管理。插件式的实现能够容纳不一样的网络设备和软件,为OpenStack架构与部署提供了灵活性。

它包含下列组件:

  • neutron-server
    接收和路由API请求到合适的OpenStack网络插件,以达到预想的目的。
  • OpenStack网络插件和代理
    Plug and unplug ports, create networks or subnets, and provide IP addressing. These plug-ins and agents differ depending on the vendor and technologies used in the particular cloud. OpenStack Networking ships with plug-ins and agents for Cisco virtual and physical switches, NEC OpenFlow products, Open vSwitch, Linux bridging, and the VMware NSX product.
    常见的代理L3(3层),DHCP(动态主机IP地址),以及插件代理。
  • 消息队列
    大多数的OpenStack Networking安装都会用到,用于在neutron-server和各类各样的代理进程间路由信息。也为某些特定的插件扮演数据库的角色,以存储网络状态。

OpenStack网络主要和OpenStack计算交互,以提供网络链接到它的实例。

网络(neutron)概念

网络服务提供网络,子网以及路由这些对象的抽象概念。每一个抽象概念都有本身的功能,能够模拟对应的物理设备:网络包括子网,路由在不一样的子网和网络间进行路由转发。

对于任意一个给定的网络都必须包含至少一个外部网络。不想其余的网络那样,外部网络不只仅是一个定义的虚拟网络。相反,它表明了一种OpenStack安装以外的能从物理的,外部的网络访问的视图。外部网络上的IP地址可供外部网络上的任意的物理设备所访问

外部网络以外,任何 Networking 设置拥有一个或多个内部网络。这些软件定义的网络直接链接到虚拟机。仅仅在给定网络上的虚拟机,或那些在经过接口链接到相近路由的子网上的虚拟机,能直接访问链接到那个网络上的虚拟机。

若是外部网络想要访问实例或者相反实例想要访问外部网络,那么网络之间的路由就是必要的了。每个路由都配有一个网关用于链接到外部网络,以及一个或多个链接到内部网络的接口。就像一个物理路由同样,子网能够访问同一个路由上其余子网中的机器,而且机器也能够访问路由的网关访问外部网络。

另外,你能够将外部网络的IP地址分配给内部网络的端口。无论何时一旦有链接链接到子网,那个链接被称做端口。你能够给实例的端口分配外部网络的IP地址。经过这种方式,外部网络上的实体能够访问实例.

网络服务一样支持安全组。安全组容许管理员在安全组中定义防火墙规则。一个实例能够属于一个或多个安全组,网络为这个实例配置这些安全组中的规则,阻止或者开启端口,端口范围或者通讯类型。

每个Networking使用的插件都有其自有的概念。虽然对操做VNI和OpenStack环境不是相当重要的,但理解这些概念能帮助你设置Networking。全部的Networking安装使用了一个核心插件和一个安全组插件(或仅是空操做安全组插件)。另外,防火墙即服务(FWaaS)和负载均衡即服务(LBaaS)插件是可用的。

5.OpenStack管理的Web接口(Horizon)

Dashboard(horizon)是一个web接口,使得云平台管理员以及用户能够管理不一样的Openstack资源以及服务。

Horizon具备以下一些特色:  

  • 实例管理:建立、终止实例,查看终端日志,VNC链接,添加卷等
  • 访问与安全管理:建立安全群组,管理密匙对,设置浮动IP等
  • 偏好设定:对虚拟硬件模板能够进行不一样偏好设定
  • 镜像管理:编辑或删除镜像
  • 查看服务目录
  • 管理用户、配额及项目用途
  • 用户管理:建立用户等
  • 卷管理:建立卷和快照
  • 对象存储处理:建立、删除容器和对象
  • 为项目下载环境变量

6.OpenStack块存储服务(Cinder)

块存储服务(cinder)为实例提供块存储。存储的分配和消耗是由块存储驱动器,或者多后端配置的驱动器决定的。还有不少驱动程序可用:NAS/SAN,NFS,ISCSI,Ceph等。

典型状况下,块服务API和调度器服务运行在控制节点上。取决于使用的驱动,卷服务器能够运行在控制节点、计算节点或单独的存储节点。

OpenStack块存储服务(cinder)为虚拟机添加持久的存储,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷。此服务也会激活管理卷的快照和卷类型的功能。

块存储服务一般包含下列组件:

  • cinder-api
    接受API请求,并将其路由到cinder-volume执行。
  • cinder-volume
    与块存储服务和例如cinder-scheduler的进程进行直接交互。它也能够与这些进程经过一个消息队列进行交互。cinder-volume服务响应送到块存储服务的读写请求来维持状态。它也能够和多种存储提供者在驱动架构下进行交互。
  • cinder-scheduler守护进程
    选择最优存储提供节点来建立卷。其与nova-scheduler组件相似。
  • cinder-backup daemon
    cinder-backup服务提供任何种类备份卷到一个备份存储提供者。就像cinder-volume服务,它与多种存储提供者在驱动架构下进行交互。
  • 消息队列
    在块存储的进程之间路由信息。

7.OpenStack存储服务(Swift)

Swift为OpenStack提供一种分布式、持续虚拟对象存储,它相似于Amazon Web Service的S3简单存储服务。Swift具备跨节点百级对象的存储能力。Swift内建冗余和失效备援管理,也可以处理归档和媒体流,特别是对大数据(千兆字节)和大容量(多对象数量)的测度很是高效。

swift功能及特色:  

  • 海量对象存储
  • 大文件(对象)存储
  • 数据冗余管理
  • 归档能力-----处理大数据集
  • 为虚拟机和云应用提供数据容器
  • 处理流媒体
  • 对象安全存储
  • 备份与归档
  • 良好的可伸缩性

Swift代理服务器  
用户都是经过Swift-API与代理服务器进行交互,代理服务器正是接收外界请求的门卫,它检测合法的实体位置并路由它们的请求。
此外,代理服务器也同时处理实体失效而转移时,故障切换的实体重复路由请求。

Swift对象服务器
对象服务器是一种二进制存储,它负责处理本地存储中的对象数据的存储、检索和删除。对象都是文件系统中存放的典型的二进制文件,具备扩展文件属性的元数据(xattr)。

注意:xattr格式被Linux中的ext3/4,XFS,Btrfs,JFS和ReiserFS所支持,可是并无有效测试证实在XFS,JFS,ReiserFS,Reiser4和ZFS下也一样能运行良好。不过,XFS被认为是当前最好的选择。

Swift容器服务器
容器服务器将列出一个容器中的全部对象,默认对象列表将存储为SQLite文件(译者注:也能够修改成MySQL,安装中就是以MySQL为例)。容器服务器也会统计容器中包含的对象数量及容器的存储空间耗费。

Swift帐户服务器
帐户服务器与容器服务器相似,将列出容器中的对象。

Ring(索引环)
Ring容器记录着Swift中物理存储对象的位置信息,它是真实物理存储位置的实体名的虚拟映射,相似于查找及定位不一样集群的实体真实物理位置的索引服务。这里所谓的实体指帐户、容器、对象,它们都拥有属于本身的不一样的Rings。

8.其余服务

裸金属服务(ironic)
裸金属服务是提供管理和准备物理硬件支持的组件的集合。

容器的基础设施管理服务(magnum)
容器的基础设施管理服务(magnum)是OpenStack API服务,它使容器编排引擎(COE),好比Docker Swarm, Kubernetes和Mesos,成为了OpenStack头等资源。

数据库服务(trove)
数据库服务(trove)提供了数据库引擎的云部署功能。

DNS service (designate)
The DNS service (designate) provides cloud provisioning functionality for DNS Zones and Recordsets.

秘钥管理器服务
密钥管理服务为存储提供了RESTful API,以及密钥数据,好比口令、加密密钥和X.509证书。

云消息服务(zaqar)
云消息服务容许开发人员共享分布式应用组件间的数据来完成不一样任务,而不会丢失消息或要求每一个组件老是可用。

对象存储服务(swift)
对象存储服务(swift)经过REST API提供对象存储和检索的访问入口。

编排服务(heat)
The Orchestration service (heat) uses a Heat Orchestration Template (HOT) to create and manage cloud resources.

共享文件系统服务(manila)
共享文件系统服务(manila)提供了共享或分布式文件系统的协同访问。

监测告警服务(aodh)
当收集到的测量或事件数据符合预约义的规则时,监测告警服务就会触发告警。

Telemetry 数据收集服务(ceilometer)
Telemetry 数据收集服务提供以下功能:

  • 高效地轮询与 OpenStack 服务相关的计量数据。
  • 经过监测通知收集来自各个服务发送的事件和计量数据。
  • 将收集到的数据发布到各个目标区,包括数据存储区和消息队列。

4、OpenStack工做流程

这里以建立一个虚拟机为例来了解 OpenStack 是如何工做的,下面的图是 OpenStack 建立虚拟机整个工做过程:

虚拟机建立过程:

  • 1.界面或命令行经过RESTful API向keystone获取认证信息。
  • 2.keystone经过用户请求认证信息,并生成auth-token返回给对应的认证请求。
  • 3.界面或命令行经过RESTful API向nova-api发送一个boot instance的请求(携带auth-token)。
  • 4.nova-api接受请求后向keystone发送认证请求,查看token是否为有效用户和token。
  • 5.keystone验证token是否有效,若有效则返回有效的认证和对应的角色(注:有些操做须要有角色权限才能操做)。
  • 6.经过认证后nova-api和数据库通信。
  • 7.初始化新建虚拟机的数据库记录。
  • 8.nova-api经过rpc.call向nova-scheduler请求是否有建立虚拟机的资源(Host ID)。
  • 9.nova-scheduler进程侦听消息队列,获取nova-api的请求。
  • 10.nova-scheduler经过查询nova数据库中计算资源的状况,并经过调度算法计算符合虚拟机建立须要的主机。
  • 11.对于有符合虚拟机建立的主机,nova-scheduler更新数据库中虚拟机对应的物理主机信息。
  • 12.nova-scheduler经过rpc.cast向nova-compute发送对应的建立虚拟机请求的消息。
  • 13.nova-compute会从对应的消息队列中获取建立虚拟机请求的消息。
  • 14.nova-compute经过rpc.call向nova-conductor请求获取虚拟机消息。(Flavor)
  • 15.nova-conductor从消息队队列中拿到nova-compute请求消息。
  • 16.nova-conductor根据消息查询虚拟机对应的信息。
  • 17.nova-conductor从数据库中得到虚拟机对应信息。
  • 18.nova-conductor把虚拟机信息经过消息的方式发送到消息队列中。
  • 19.nova-compute从对应的消息队列中获取虚拟机信息消息。
  • 20.nova-compute经过keystone的RESTfull API拿到认证的token,并经过HTTP请求glance-api获取建立虚拟机所须要镜像。
  • 21.glance-api向keystone认证token是否有效,并返回验证结果。
  • 22.token验证经过,nova-compute得到虚拟机镜像信息(URL)。
  • 23.nova-compute经过keystone的RESTfull API拿到认证k的token,并经过HTTP请求neutron-server获取建立虚拟机所须要的网络信息。
  • 24.neutron-server向keystone认证token是否有效,并返回验证结果。
  • 25.token验证经过,nova-compute得到虚拟机网络信息。
  • 26.nova-compute经过keystone的RESTfull API拿到认证的token,并经过HTTP请求cinder-api获取建立虚拟机所须要的持久化存储信息。
  • 27.cinder-api向keystone认证token是否有效,并返回验证结果。
  • 28.token验证经过,nova-compute得到虚拟机持久化存储信息。
  • 29.nova-compute根据instance的信息调用配置的虚拟化驱动来建立虚拟机。

参考资料:
https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/common/conventions.html
http://www.javashuo.com/article/p-oyhvpgwy-ew.html
http://www.javashuo.com/article/p-cbtcxhln-z.html

相关文章
相关标签/搜索