openstack基本概念与架构介绍

一:openstack介绍

OpenStack 是一系列开源工具(或开源项目)的组合,主要使用池化虚拟资源来构建和管理私有云及公共云。其中的六个项目主要负责处理核心云计算服务,包括计算、网络、存储、身份和镜像服务。还有另外十多个可选项目,用户可把它们捆绑打包,用来创建独特、可部署的云架构。

二:云计算模式

  1. IaaS:基础设施即服务(个人比较习惯的):用户通过网络获取虚机、存储、网络,然后用户根据自己的需求操作获取的资源
  2. PaaS:平台即服务:将软件研发平台作为一种服务, 如Eclipse/Java编程平台,服务商提供编程接口/运行平台等
  3. SaaS:软件即服务 :将软件作为一种服务通过网络提供给用户,如web的电子邮件、HR系统、订单管理系统、客户关系系统等。用户无需购买软件,而是向提供商租用基于web的软件,来管理企业经营活动

三:OpenStack 服务介绍

服务项目名称描述
Computer(计算服务)Nova负责实例生命周期的管理,计算资源的单位。对Hypervison进行屏蔽,支持多种虚拟化的技术(红帽默认为KVM),支持横向拓展
Network(网络服务)Neutron负责虚拟网络的管理,为实例创建网络的拓扑结构,是面向租户的网络管理,可以自己定义自己的网络,各个租户之间互不影响
Idententity(身份认证服务)Keystone类似于LDAP服务,对用户,租户和角色,服务进行认证与授权,且支持多认证机制
Dashboard(控制面板服务)Horizon提供一个Web管理界面,与openstack底层服务进行交互
Image Service(镜像服务)Glance提供虚拟机镜像模板的注册与管理,将做好的操作系统拷贝为镜像模板,在创建虚拟机时直接使用,可支持多格式的镜像
Block Storage(块存储服务)Cinder负责为运行实例提供持久的块存储设备,可进行方便的拓展,按需付费,支持多种后端存储
Object Storge(对象存储服务)swift为openstack 提供云的弹性存储,支持群集无单点故障
Telemetry(计量服务)Ceilometer用于度量、监控和控制数据资源的集中来源,为openstack用户提供记账用途

OpenStack 架构由大量开源项目组成。其中包含 6 个稳定可靠的核心服务,用于处理计算、网络、存储、身份和镜像; 同时,还为用户提供了十多种开发成熟度各异的可选服务。OpenStack 的 6 个核心服务主要担纲系统的基础架构,其余项目则负责管理控制面板、编排、裸机部署、信息传递、容器及统筹管理等操作

重要组件介绍

1:OpenStack认证服务(Keystone)

Keystone为所有的OpenStack组件提供认证和访问策略服务,它依赖自身REST(基于Identity API)系统进行工作,主要对(但不限于)Swift、Glance、Nova等进行认证与授权。事实上,授权通过对动作消息来源者请求的合法性进行鉴定。下图显示了身份认证服务流程:
在这里插入图片描述
Keystone采用两种授权方式,一种基于用户名/密码,另一种基于令牌(Token)

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

  • 令牌服务:含有授权用户的授权信息
  • 目录服务:含有用户合法操作的可用服务列表
  • 策略服务:利用Keystone具体指定用户或群组某些访问权限
2: OpenStack计算设施----Nova

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

  • 功能及特点:

1:实例生命周期管理
2:计算资源管理
3:网络与授权管理
4:基于REST的API 异步连续通信
5:支持各种宿主:Xen、XenServer/XCP、KVM、UML、VMware vSphere及Hyper-V

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

API Server(nova-api)
消息队列(rabbit-mq server)
运算工作站(nova-compute)
网络控制器(nova-network)
卷管理(nova-volume)
调度器(nova-scheduler)

解释如下:

1)API服务器(nova-api)
API服务器提供了云设施与外界交互的接口,它是外界用户对云实施管理的唯一通道。通过使用web服务来调用各种EC2的API,接着API服务器便通过消息队列把请求送达至云内目标设施进行处理。作为对EC2-api的替代,用户也可以使用OpenStack的原生API,我们把它叫做“OpenStack
API”。

2)消息队列(Rabbit MQ Server)
OpenStack内部在遵循AMQP(高级消息队列协议)的基础上采用消息队列进行通信。Nova对请求应答进行异步调用,当请求接收后便则立即触发一个回调。由于使用了异步通信,不会有用户的动作被长置于等待状态。例如,启动一个实例或上传一份镜像的过程较为耗时,API调用就将等待返回结果而不影响其它操作,在此异步通信起到了很大作用,使整个系统变得更加高效。

3)调度器(nova-scheduler)

调度器负责把nova-API调用送达给目标。调度器以名为“nova-schedule”的守护进程方式运行,并根据调度算法从可用资源池中恰当地选择运算服务器。有很多因素都可以影响调度结果,比如负载、内存、子节点的远近、CPU架构等等。强大的是nova调度器采用的是可插入式架构。

目前nova调度器使用了几种基本的调度算法:   随机化:主机随机选择可用节点;   可用化:与随机相似,只是随机选择的范围被指定;
  简单化:应用这种方式,主机选择负载最小者来运行实例。负载数据可以从别处获得,如负载均衡服务器。

4)运算工作站(nova-compute)
运算工作站的主要任务是管理实例的整个生命周期。他们通过消息队列接收请求并执行,从而对实例进行各种操作。在典型实际生产环境下,会架设许多运算工作站,根据调度算法,一个实例可以在可用的任意一台运算工作站上部署。

5)网络控制器(nova-network)
网络控制器处理主机的网络配置,例如IP地址分配,配置项目VLAN,设定安全群组以及为计算节点配置网络。

6)卷工作站(nova-volume) 
卷工作站管理基于LVM的
实例卷,它能够为一个实例创建、删除、附加卷,也可以从一个实例中分离卷。卷管理为何如此重要?因为它提供了一种保持实例持续存储的手段,比如当结束一个
实例后,根分区如果是非持续化的,那么对其的任何改变都将丢失。可是,如果从一个实例中将卷分离出来,或者为这个实例附加上卷的话,即使实例被关闭,数据
仍然保存其中。这些数据可以通过将卷附加到原实例或其他实例的方式而重新访问。

因此,为了日后访问,重要数据务必要写入卷中。这种应用对于数据服务器实例的存储而言,尤为重要。

3: OpenStack镜像服务器----Glance

OpenStack镜像服务器是一套虚拟机镜像发现、注册、检索系统,我们可以将镜像存储到以下任意一种存储中:

  • 本地文件系统(默认)
  • S3直接存储
  • S3对象存储(作为S3访问的中间渠道)
  • OpenStack对象存储等等。
      
    功能及特点:
    提供镜像相关服务。

Glance构件:

1)Glance-API:  
主要负责接收响应镜像管理命令的Restful请求,分析消息请求信息并分发其所带的命令(如新增,删除,更新等)。默认绑定端口是9292。
2)Glance-Registry:
  主要负责接收响应镜像元数据命令的Restful请求。分析消息请求信息并分发其所带的命令(如获取元数据,更新元数据等)。默认绑定的端口是9191。

4:OpenStack存储设施----Swift

Swift为OpenStack提供一种分布式、持续虚拟对象存储,它类似于Amazon Web Service的S3简单存储服务。Swift具有跨节点百级对象的存储能力。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。

5:OpenStack管理的Web接口----Horizon

Horizon是一个用以管理、控制OpenStack服务的Web控制面板,它可以管理实例、镜像、创建密匙对,对实例添加卷、操作Swift容器等。除此之外,用户还可以在控制面板中使用终端(console)或VNC直接访问实例。

总之,Horizon具有如下一些特点:

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

四:openstack基本架构

在这里插入图片描述

通过消息队列和数据库,各个组件可以相互调用,互相通信。每个项目都有各自的特性,大而全的架构并非适合每一个用户,如Glance在最早的A、B版本中并没有实际出现应用,Nova可以脱离镜像服务独立运行。当用户的云计算规模大到需要管理多种镜像时,才需要像Glance这样的组件。

整个OpenStack是由控制节点计算节点网络节点存储节点四大部分组成。(这四个节点也可以安装在一台机器上,单机部署)其中:

控制节点

  • 控制节点:负责对其余节点的控制,包含虚拟机建立,迁移,网络分配,存储分配等等

    - 控制节点包括以下服务

  1. 管理支持服务

管理支持服务包含MySQL与Qpid两个服务:
1:MySQL:数据库作为基础/扩展服务产生的数据存放的地方

2: Qpid:消息代理(也称消息中间件)为其他各种服务之间提供了统一的消息通信服务

  1. 基础管理服务

基础管理服务包含Keystone,Glance,Nova,Neutron,Horizon五个服务
1: Keystone:认证管理服务,提供了其余所有组件的认证信息/令牌的管理,创建,修改等等,使用MySQL作为统一的数据库

2:Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及制作相应的模板

3:Nova:计算管理服务,提供了对计算节点的Nova的管理,使用Nova-API进行通信

4: Neutron:网络管理服务,提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理面板

5:Horizon:控制台服务,提供了以Web的形式对所有节点的所有服务的管理,通常把该服务称为DashBoard

3:扩展管理服务

扩展管理服务包含Cinder,Swift,Trove,Heat,Centimeter五个服务

1:Cinder:提供管理存储节点的Cinder相关,同时提供Cinder在Horizon中的管理面板

2:Swift:提供管理存储节点的Swift相关,同时提供Swift在Horizon中的管理面板

3: Trove:提供管理数据库节点的Trove相关,同时提供Trove在Horizon中的管理面板

4:Heat:提供了基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性。

5:Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在一定条件下触发相应动作

控制节点一般来说只需要一个网络端口用于通信/管理各个节点

计算节点

  • 计算节点:负责虚拟机运行

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

1)基础服务

Nova:提供虚拟机的创建,运行,迁移,快照等各种围绕虚拟机的服务,并提供API与控制节点对接,由控制节点下发任务

Neutron:提供计算节点与网络节点之间的通信服务

2)扩展服务

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

计算节点包含最少两个网络端口

eth0:与控制节点进行通信,受控制节点统一调配

eth1:与网络节点,存储节点进行通信

网络节点

  • 网络节点; 负责对外网络与内网络之间的通信

网络节点仅包含Neutron服务

Neutron:负责管理私有网段与公有网段的通信,以及管理虚拟机网络之间的通信/拓扑,管理虚拟机之上的防火等等

网络节点包含三个网络端口

eth0:用于与控制节点进行通信

eth1:用于与除了控制节点之外的计算/存储节点之间的通信

eth2:用于外部的虚拟机与相应网络之间的通信

存储节点

  • 存储节点 :负责对虚拟机的额外存储管理

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

Cinder:块存储服务,提供相应的块存储,简单来说,就是虚拟出一块磁盘,可以挂载到相应的虚拟机之上,不受文件系统等因素影响,对虚拟机来说,这个操作就像是新加了一块硬盘,可以完成对磁盘的任何操作,包括挂载,卸载,格式化,转换文件系统等等操作,大多应用于虚拟机空间不足的情况下的空间扩容等等

Swift:对象存储服务,提供相应的对象存储,简单来说,就是虚拟出一块磁盘空间,可以在这个空间当中存放文件,也仅仅只能存放文件,不能进行格式化,转换文件系统,大多应用于云磁盘/文件

存储节点包含最少两个网络接口

eth0:与控制节点进行通信,接受控制节点任务,受控制节点统一调配

eth1:与计算/网络节点进行通信,完成控制节点下发的各类任务

五:OpenStack 逻辑架构

在这里插入图片描述

  • OpenStack包括若干个称为OpenStack服务的独立组件。所有服务均可通过一个公共身份服务进行身份验证。除了那些需
    要管理权限的命令,每个服务之间均可通过公共API进行交互。
  • 每个OpenStack服务又由若干组件组成。包含多个进程。所有服务至少有一个API进程,用于侦听API请求,对这些请求进行预处理,并将它们传送到该服务的其他组件。除了认证服务,实际工作都是由具体的进程完成的
  • 至于一个服务的进程之间的通信,则使用AMPD消息代理,服务的状态存储在数据库中

六:OpenStack 组件通信关系

■基于AMQP协议的通信

  • 用于每个项目内部各个组件之间的通信。

■基于SQL的通信

  • 用于各个项目内部的通信。

■基于HTTP协议进行通信

  • 通过各项目的API建立的通信关系,API都是RESTful Web API。
    x;
    ■通过Native API实现通信
    OpenStack各组件和第三方软硬件之间的通信。

七:OpenStack 概念架构

云平台用户在经过Keystone服务认证授权后,通过Horizon或者Reset API模式创建虚拟机服务,创建过程中包括利用Nova服务创建虚拟机实例,虚拟机实例采用Glance提供镜像服务,然后使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中,之后在通过Cinder创建的卷为虚拟机挂载存储块,整个过程都在Ceilometer模块资源的监控下,Cinder产生的卷(Volume) 和
Glance提供的镜像(Image) 可以通过Swift的对象存储机制进行保存。
在这里插入图片描述
红色方框为全局组件
keystone:为所有服务模块提供认证与授权
ceilometer:度量、监控所有数据资源
horizon :UI平台管理,提供一个web管理页面,与底层交互

紫色方框为外部辅助组件
ironic 提供裸金属环境
trove 提供管理数据库服务(控制关系型和非关系型数据库)
heat,sahara 提供对数据管理和编排

蓝色方框为内部核心组件
glance:存储和检索虚拟机磁盘镜像
neutron:提供网络连接服务
swift:通过一个 RESTful,基于HTTP的应用程序接口存储和任意检索的非结构化数据对象
cinder:提供持久性存储资源
nova:管理实例的生命周期,并负责调取以上四个资源给虚拟机使用。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值