首页 > 代码库 > OpenStack

OpenStack

技术分享

01 OpenStack 起源

01 OpenStack 起源
起源:2010.7
 rack space开源了存储代码  Swift
 NASA 贡献了计算代码 Nova
 
OpenStack项目发展状况:
提供对象存储服务的Swift
提供计算服务的Nova
提供镜像服务的 Glance
提供网络服务的Neutron
提供身份认证服务的 Keystone
提供计量服务的 Ceilometer
提供块存储服务 Cinder
提供编排服务的 Heat
OpenStack的会员构成:
白金会员【8个】
黄金会员【华为。。。】
 
OpenStack的版本:
按照26个字母顺序来进行区分的
 
目前是Ocata 2017.2.22
       Newton 2016.10.06(视频中)
 
-------------------------------------

OpenStack 的架构---了解各个组件

OpenStack 的架构---了解各个组件
1.提供身份认证服务的 Keystone组件
主要负责身份服务,管理用户、租户、角色、服务和服务断点
可以支持SQL,PAM,LDAP作为后端
2.提供计算服务的Nova组件
主要负责虚拟机实例的调度分配以及实例的创建、起停、迁移、重启等操作,从而来管理云中实例的生命周期。
是整个云中的组织控制器
主要功能:
计算服务:
计算节点运行虚拟机的
分布式控制器
负责处理器调度策略及API调用等。 
3. 提供镜像服务的 Glance组件
能够实现镜像的创建、镜像快照管理、以及镜像模板等等。
同时也支持各种格式的镜像格式
4.提供对象存储服务的Swift
主要提供了存取数据的应用服务。
通常用于保存非结构化的数据,比如通常作为Glance组件的存储后端或者作为一些云盘等应用
5. 提供网络服务的Neutron
基于软件定义网络的思想,实现网路资源的软件化管理。支持各种各样类型的插件,实现多租户网络的隔离。也可以对硬件以及软件的解决方案进行集成。
6. 提供块存储服务 Cinder
为虚拟机实例提供卷的持久化服务,同时支持一些对卷的快照、备份等的一些管理。基于插件的架构,非常易于扩展。
总结:块存储服务   持久化磁盘   基于插件的架构,易于扩展
7.提供WEB统一化管理界面服务的 HORIZON组件
主要提供了自动化仪表板的管理服务,实现对用户、租户、卷、网络等几乎多有资源的图形化管理。
8. 提供监控和计量服务的 Ceilometer
提供对Opens tack中平台组件的监控
提供纪良服务
 
 
--------------------------------------------

03.提供计算服务的Nova的介绍


1.什么是Nova?
Nova是Open stack云中的计算组织控制器,管理opens tack云中实例的生命周期的左右活动,使得nova称为一个负责管理计算资源、网络、认证所需的可扩展性平台。
2.常用术语
KVM:内核虚拟化,Open Stack 默认的Hypervisor
Qemu: KVM 的替补角色,没有KVM的执行效率高,不支持全虚拟化
Flavor:新建虚拟机的配置列表,虚拟机模板
Keypair:ssh连接访问实例的密钥对
安全组:是一个控制访问策略的容器,里面包含了各种各样的安全组规则
安全组规则:用来控制实例访问的具体策略
3.Nova框架
Nova组件
Nova API:提供了统一风格的 RestAPI接口,作为Nova组件的入口,接受用户的请求
Nova scheduler :负责调度,将实例分配到具体的计算节点
Nova conductor:主要负责与Nova数据库进行交互
Nova compute:用于虚拟机实例的创建和管理
以及提供消息传递的消息队列:Nova各个组件之间的消息传递
和数据库模块:
【重要!!!!】Nova各个组件如何协作运行?
首先,用户通过CLI命令行或者horizon向Nova组件提出创建实例的请求时,Nova API 作为Nova的入口,将会接受用户的请求,将会以消息队列的方式,将请求发送给Nova scheduler,Nova scheduler从消息队列中,侦听到Nova API的消息队列后,去数据库中查询,当前计算节点的负载和使用情况,由于Nova scheduler不能直接跟数据库进行交互,因此,将会借助于消息队列的方式通过Nova conductor组件,进而与数据库进行交互,然后将查询到的结果,将虚拟机实例分配到当前负载最小,并且满足启动虚拟机实例的那个计算节点上,但最终的虚拟机实例的组件,还是要靠Nova compute来完成。但是实例的创建,离不开镜像、网络等一些资源的配合,因此,Nova compute将会与Nova volume、Nova network等等一些组件通过消息队列的方式实现相互的协作。最终完成虚拟机实例的创建。
4. Nova的功能特性:
  • 实现实例的生命周期的管理
  • 调动管理平台的网络、存储等资源
  • 提供了统一风格的 RestAPI接口
  • 支持KVM、VMware等透明的hypervisor
  • 各个模块之间通过消息队列来进行消息传递
 
-------------------------------------------------
 
 

04 Swift介绍

04 提供对象存储服务的Swift介绍
1.什么是Swift?
Swift 是 提供高可用分布式对象存储的服务,为nova组件提供虚拟机镜像存储服务,在数据冗余方面,无需采用read【?】通过在软件层面,引入一致性散列技术和数据冗余,牺牲一定得数据一致性,来达到高可用和可伸缩性。支持多租户模式下,容器和对象读写操作,适用于互联网应用场景下非结构化的数据存储,比如,华为云盘等。
2. Swift中的常用术语【1】
Account:用户定义的管理存储区域
Container:存储隔间,类似于文件夹或者目录
Object:包含了基本的存储尸体和它自身的元数据
Ring:环,记录了磁盘上存储的实体名称和物理位置的映射关系。
 
以上术语之间的关系:
首先,可以创建多个account,每个account里可以创建多个容器container,每个container下可以创建多个object,【container 之间不能相互嵌套】
 
Swift的介绍
Swift在物理结构上往往会存储对象的多个副本,通常按照物理位置的特点,将对象拷贝到不同的物理位置的特点,将对象拷贝到不同的物理位置上,来保证数据的可靠性。
 
 
常用术语2
Region:地域,从地理位置上划分的一个概念
Zone:可用区,按照独立的供网、供电既基础设备划分
Node:节点,代表了一台存储服务器
Disk:磁盘,代表着物理服务器上的存储设备
Cluster:群集,为冗余考虑而设计的架构
 
以上术语之间的关系:
可以根据不同的物理位置,有不同的Region,不同的region代表两个不同的城市,然后在同一个region下,为冗余的考虑,设置了多个可用区,zone。每一个可用去可以有不同的存储节点,node;在更大的架构上,两个region可以构成一个cluster。
 
3. Swift的架构
首先,用户提出一个对象存储服务的申请,由Swift的API接受和处理,收到之后,先去找???认证节点,对用户的身份进行认证。认证通过后,将请求提交给,名称为Swift Proxy的组件,Swift Proxy是Swift 的代理,由Swift Proxy来确定究竟应该将存储对象放在哪一个满足存储要求的存储节点上。最终将对象存储到指定的存储节点上即可。最终将返回结果返回给用户。
 
-------

05Keystone 简介

 

05Keystone 简介

提供身份验证、服务规则和服务令牌功能

任何服务之间相互调用,都需要经过keystone的身份验证

 

常用术语

User:Openstack最基本的用户

Project:指分配给使用者的资源的集合

Role:代表一组用户可以访问组员的权限

Domain:定义管理边界,可以包含多个project/tenant、user、role等

Endpoint:服务的URL路径,暴露出来的访问点

 

Keystone认证模型

首先创建两个域domain1和2,给两个公司使用,每个公司在domain下创建三个子公司project1 2 3,project下可以创建多个用户User,用户User可以跨多个project存在。

 

Keystone认证原理

当用户再创建时,将通过Keystone将会创建一个访问令牌accesstoken,假设当用户提出创建虚拟机实例的请求时,首先将自己的访问令牌和访问请求提交给NOVE服务,NOVE服务为确保用户的访问令牌并没有篡改过,因此首先会将访问令牌交给keystone进行验证,验证通过后nova为了启动虚拟机的实例,还需要向Glance组件申请相关的镜像资源,Glance为保证访问令牌在传递的过程中没有被篡改过,也需要将访问令牌发送给keystone做确认,验证通过后将会发放镜像资源给nova组件,虚拟机实例的创建还需要存储、网络等资源,因此nova组件还需要给负责各种资源的模块传递申请资源的请求,资源申请的过程中都会伴随这访问令牌的验证,nova拿到启动虚拟机实例的所有资源后进行实例的启动,然后分配给相关的用户。整个过程来看组件之间资源的调用都离不开keystone的验证....

 

 

--------------------------------------------------------

06 Neutron介绍

06 Neutron介绍
1.Neutron的简介:
Neutron时open stack中负责提供网络服务的组件,基于软件定义网络的思想,实现软件化的网络资源管理,在实现上,充分利用了linux系统中各种与网络相关的技术,支持第三方插件
2. Neutron中常用的术语
Bridge-int:综合网桥,常用于实现内部网路通讯功能的网桥
Br-ex:外部网桥,通常用于跟外部网络通讯的网桥。
Neutron-server:提供了API接口,将配置好的API接口,提供给相关的插件,进行后续处理
Neutron-L2-agent:二层代理,用于实现二层网络通讯的代理,用于管理VLAN的插件,接受Neutron-server的指令来创建VLAN。
Neutron-DHCP-agent:为子网自动分发IP地址
Neutron-L3-agent:负责租户网络和floating IP之间的地址转换,通过linux iptables 中的NAT功能来实现IP转换
Neutron-metadata-agent:运行在网络节点上,用来响应nova中的metadata请求
LBaaS agent:为堕胎实例和open vswitch agent提供负载均衡服务
3. Neutron的架构
当Neutron通过API接口,接受来自用户或者其他组件的网络请求时,以消息队列的方式提交给2、3层代理,其中Neutron-DHCP-agent实现子网的创建和IP地址的自动分发。而Neutron-L2-agent实现相同VLAN下,网络的通信,Neutron-L3-agent实现同一个租户网络下,不同子网间的通信
 
 
---------------------------------------------------

07Glance简介

07Glance简介
1 Glance的作用:为nova提供镜像服务以便启动实例的组件。但不负责镜像的本地存储,可以对镜像做快照、备份、镜像模板等管理
2 Glance镜像支持的格式

Raw
经常被vmware、visualbox使用的vhd
Vdi
光盘iso
openstack经常使用的qcow2
亚马逊的aki 和ami

3 Glance组件:

Glance-api 负责提供镜像服务的rest api服务,作为镜像服务请求的入口。
Glance-registry 负责与glance使用的数据库交互,比如镜像的创建、删除、修改等操作
4.Glance的架构:当有来自horizon、CLI、Nova、Compute发送过来的镜像请求,由glance api接收处理,将请求的消息传递给Glance-registry组件,然后到数据库中查询镜像存储的位置信息,将查询到的结果返回给api。glance api接下来将会调用Storage adapter组件进行查询,用来查询后端的存储,比如SWIFT、Ceph、Amazon S3等,最终获取镜像返回给用户。
 
 
---------------------------

glance简介

  1. Glance的作用:为nova提供镜像服务以便启动镜像的组件但不负责镜像的本地存储,可以对镜像做快照、备份等管理
  2. Glance镜像支持的格式:Raw、vhd、vdi、iso、qcow2、aki ami
  3. Glance组件:
Glance-api 负责提供镜像服务的rest api服务
Glance-registry 负责与glance使用的数据库交互
4.Glance的架构当有来自、、发送过来的镜像请求,由进行处理,传递给组件,然后到数据库中查询镜像信息,将查询到的结果返回给。接下来将会调用组件进行查询,用来查询后端的存储,比如、、等,最终获取镜像返回给用户。
 
-----------------------------------

2.8 Cinder介绍

2.8 Cinder介绍
  • Cinder的简介
    1.为虚拟机实例提供volume卷的块存储服务,可将卷挂载到实例上,作为虚拟机实例的本地磁盘来使用
    2.一个volume卷可以同时挂载到多个实例上
3.共享的卷同时只能被一个实例进行写操作,其他只能进行只读操作
 
  • 支持的文件系统类型
    1.LVM / ISCSI
    2.NFS
    3.NetAPP NFS
    1.Gluster
    5.DELL Equall Logic
 
  • 常用术语
    Volume备份:volume卷的备份,存放在备份的设备中
    Volume快照:卷在某个时间点的状态
    Cinder API:为Cinder请求提供统一风格的Rest API服务,是Cinder服务的入口
    Cinder Scheduler:负责为新建卷制定块存储设备
    Cinder Volume:负责与存储的快设备交互,实现卷的创建、删除、修改等操作
    Cinder Backup:备份服务负责通过驱动和后端的备份设备打交道。
 
  • Cinder架构

  当有用户或者nova compute提出创建卷的服务的请求时,首先由Cinder API接收请求,然后以消息队列的方式发送给Cinder Scheduler进行调用,Cinder Scheduler侦听到来自Cinder API的消息队列后,到数据库中去查询当前存储节点的状态信息。并根据预定策略,选择卷的最佳volume service节点,然后将调度的结果发布出来,给volume service来调用。volume service收到来自volume schedule的调度结果后会去查找volum Provider。在特定的存储节点上创建相关的卷,然后将相关的结果返回给用户,同时将修改的数据写入到数据库中
 
-----------------------------------------------

08Cinder简介

08Cinder简介
1Cinder的简介
为虚拟机势力提供volume卷的块存储服务
一个volume可以同时挂在到多个实例上
共享的卷同时只能被一个实例进行写操作
2支持的文件系统类型
LVM / ISCSI
NFS
NetAPP NFS
Gluster
DELL Equall Logic
3术语
Volume备份:volume卷的备份
Volume快照:卷在某个时间点的状态
Cinder API:为Cinder请求提供统一风格的Rest API服务
Cinder Scheduler:负责为新建卷制定块存储设备
Cinder Volume:负责与存储的快设备交互,实现卷的创建、删除、修改等操作
Cinder Backup:备份服务负责通过驱动和后端的备份设备打交道。
4Cinder架构
  当有用户或者nova compute提出创建卷的服务的请求时,首先由Cinder API接收请求,然后以消息队,Cinder Scheduler列的方式发送给Cinder Scheduler进行调用,Cinder Scheduler侦听到来自Cinder API的消息队列后,到数据库中去查询当前存储节点的状态信息。并根据预定策略,选择卷的最佳volume service节点,然后将调度的结果发布出来,给volume service来调用,volume service收到来自volume schedule的调度结果后回去查找volum Provider。在特定的存储节点上创建相关的卷,然后将相关的结果返回给用户,同时将修改的数据写入到数据库中
---------------------------------------------------------------
 

09 Ceilometer介绍

09 Ceilometer介绍
1.Ceilometer的简介:
Ceilometer是open stack 中的一个子项目,为计费、监控等其他的服务提供数据支撑。
2. Ceilometer存在的理由:
更多的公司利用open stack做自己的公有云平台。而作为共有云,计量和监控,这两个基础的服务往往是必不可少的,计量是为了获取平台中用户对自己的使用情况,监控是为了确保资源处于一个健康的状态,因此,Ceilometer在项目提出之处,是为了计量、计费而生。
3. Ceilometer的核心概念
Ceilometer-agent-compute:运行在计算节点上,是收集计算节点上信息的代理
Ceilometer-agent-central:运行在控制节点上,轮询服务的非持续化数据
Ceilometer-collector:运行在一个或者多个控制节点上,监听Message Bus【消息总线】,将收到的信息写入到数据库中
Storage:数据存储,支持mongo DB,mysql等等。用于存储收集到的样本数据
API server:运行在控制节点上,提供对数据库的数据的访问
Message Bus:计量数据的消息总线,收集数据给Ceilometer-collector
4. Ceilometer架构
Ceilometer采用了两种数据采集的方式,其中一种是消费了open stack内各个服务自动发出的notification消息,【图中的蓝色箭头】,另外一种是调用各个服务的API,去主动轮询获取数据。【图中的黑色箭头】
 
为什么采用两种数据采集的方式?【也是工作架构】
因为在open stack 中,大部分事件都会发出notification消息,比如创建删除instance实例的时候,这些计量计费的信息时,都会发出notification消息。而作为Ceilometer组件,就是notification消息的最大的消费者。因此,第一种方式,是Ceilometer的首要的数据来源。
但是,也有一些计量的消息,是notification获取不到的,比如一些instance的CPU的运行时间,或者是CPU的使用率等等。因此,Ceilometer增加了第二种方式,即为周期性的调用相关的API,去轮询这些消息。
 
 
 
--------------------------------------------------

10 Heat介绍

1. Heat简介

Heat是一个基于模板来创建相关资源的服务,是OpenStack核心项目之一。可以通过.yaml文件生成模板,通过Heat-agent组件在OpenStack中创建相关的资源。
除此之外,支持自由的Haut模板。以及亚马逊的cloudy formation格式的模板。
模板支持丰富的资源类型,不仅支持了常用的基础架构,包括计算、网络、存储、 镜像等功能,还包括了Ceilometer警报等高级资源。
提供基于模板的编排服务。

2. 常用术语
  • Stack:Heat要用到的所有设施和资源的集合。
  • Heat template:是以.yaml结尾的文件,用于创建stack。
  • Heat-api:提供rest api服务,Heat入口将api请求发送给heat engine去执行。
  • Heat-api-cfn:支持亚马逊格式访问的rest api。
  • Heat-engine:Heat的核心模块,接收API请求,在openstack中创建资源。
  • Heat-cfntools、Heat-init:在镜像中安装完成虚拟实例操作任务的工具。
  • Heat-api-cloudwatch: 监控编排服务。
  • Resource:底层各种服务抽象的集合。(例:计算、存储、网络)
  • Heat-client:用于调用访问其它各个组件的client工具
3. Heat架构
Heat工作流程-1


当用户在Horizon中或者命令行(CLI)中提交包含模板和参数的,创建实例的请求时,Heat服务接收请求,调用Heat-API/Heat-API-cfn,然后API首先验证模板的正确性,然后通过消息队列异步传输给Heat Engine进行处理。


Heat工作流程-2


当Heat Engine拿到请求后,会把请求解析为各种资源类型,而每一种资源都有相关的Client与相关的服务对应。
Client通过发送rest请求给其它的服务,从而获取相关的资源,最终完成请求的处理。
在整个过程中,Heat Engine的作用分为三层:

  1. 处理Heat层面的请求,然后根据模板和输入的参数来创建Stack。
  2. 解析Stack中各种资源的依赖关系以及Stack的嵌套关系。
  3. 根据解析出来的关系,依次调用各种服务的Clinet,来创建各种资源。
    ----------------------------------------
 

OpenStack