OpenStack架构
一、概述
openstack是一个综合的云计算管理平台,作为一个开源的IaaS平台,在openstack项目中包含了各种各样的组件,接下来简要介绍。
二、组件(项目)介绍
1、认证服务-Keyston
该组件在openstack中主要负责用户、租户、角色、服务和服务端点的管理,同时也是openstack中各个组件的认证核心(任何服务之间的相互调用都需要认证),提供了服务的注册功能,并且可以支持SQL、PAM、LDAP等等一些后端的认证。
1)Keyston中常用术语:
名称 | 含义 |
---|---|
User | OpenStack最基本的用户,代表人或者程序 |
Project | 指分配给使用者的资源的集合,如CPU核数\内存大小等 |
Role | 代表一组用户可以访问资源的权限 |
Domain | 定义管理边界,可以包含多个project/tenant、user、role等 |
Endpoint | 服务的URL路径,可以认为是暴露出来的访问点 |
2)术语之间的关系
图中的用户可以跨多个Project而存在。
3)Keyston认证原理
图中可以看出,每调用一个组件都需要一次Keyston认证。
2、计算服务-Nova
Nova是OpenStack云总的计算组织控制器,管理云中实例的生命周期。管理计算资源、网络、认证所需的可扩展性平台。主要负责虚拟机实例的调度分配以及虚拟机实例的创建、启动、停止、迁移、重启等等一些操作。
1)Nova中常用术语:
名称 | 含义 |
---|---|
KVM | 内核虚拟化,是OpenStack默认的Hypersvisor层 |
Qemu | KVM替补角色,没有KVM执行效率高,也不支持全虚拟化 |
Flavor | 新建虚拟机的配置列表,是虚拟机的模板 |
Keypair | ssh连接访问的实例的**对 |
安全组 | 用来控制实例访问控制策略的容器 |
安全组规则 | 用来控制实例访问的具体策略,定义了用户可以使用什么协议在远端哪一个网段的主机上通过什么端口登录 |
2)Nova框架:
其中:
- API提供了统一风格的RestAPI接口,作为Nova组件的入口,接受用户的请求。
- NovaSchedu负责调度将实例分配到具体的计算机节点。
- NovaConuctor负责与Nova数据库进行交互。
- NovaCompute节点运行在计算节点上,用于实例的创建和管理。
- MessageQueue主要用于Nova各个组件之间的消息传递。
3、镜像服务-Glance
Glance为Nova提供镜像服务,以便启动实例的组件,但通常不负责镜像的本地存储,可以实现对镜像做快照、备份、镜像模板的管理,支持Raw、vhd、cdi、iso、qcow2、aki/ami等镜像格式。
1)Glance组件
名称 | 含义 |
---|---|
Glance-api | 负责提供镜像服务的rest api服务 |
Glance-registry | 主要负责与Glance使用的数据库交互,如镜像的删除创建等都需要调用 |
2)Glance架构
4、对象存储-Swift
Swift是openstack中提供高可用分布式对象存储服务,为Nova组件提供虚拟机镜像存储。在数据冗余方面,无需采用read,通过在软件层面引入一致性散列技术和数据冗余,牺牲一定程度的数据一致性来达到高可用和可伸缩性。支持多租户模式下容器和对象读写操作。适用于互联网应用场景下非结构化数据存储。比如华为云盘等等。
1)Swift中常用术语:
名称 | 含义 |
---|---|
Account | 用户定义的管理存储区域 |
Container | 存储隔间,类似于文件夹或者目录 |
Object | 包含了基本的存储实体和它自身的元数据 |
Ring | 记录了磁盘上存储的实体名称和物理位置的映射关系,有Account环、Container环、Object环 |
Region | 地域,从地理位置划分的一个概念 |
Zone | 可用区,按照独立的供网、供电基础设施划分 |
Node | 节点,存储服务器 |
Disk | 磁盘,物理服务器上的存储设备 |
Cluster | 群集,是为冗余而设计的架构 |
2)术语之间的关系
3)Swift架构
首先用户提出了一个对象存储资源的的申请,由Swift的API接收和处理,收到以后首先找Keyston节点对用户的身份进行认证,认证通过后将请求提交给名称为Swift Proxy的组件(这是Swift的代理,由它来决定存储在哪个满足存储要求的存储节点上),最终将存储对象存储到指定的存储节点,并将存储结果返回给用户。
5、网络服务-Neutron
Neutron是OpenStack中负责提供网络服务的核心组件,基于软件定义网络的思想,实现软件化的资源管理。在实现上充分利用了Linux系统中各种网络相关技术,支持第三方插件。
1)Neutron中常用术语:
名称 | 含义 |
---|---|
Bridge-int | 实现内部网络功能的网桥 |
Br-ex | 跟外部网络通信的网桥 |
Neutron-server | 提供API接口,把API的调用请求传递给已经配置好的插件,进行后续处理 |
Neutron-L2-agent | 实现二等网络通信的代理,用于管理VLAN的插件,接受Neutron-server的指令来创建VLAN |
Neutron-L3-agent | 租户网络和floating IP间地址转换 |
Neutron-DHCP-agent | 为子网自动分发IP地址 |
Neutron-metadata-agent | 相应Nova的metadata请求 |
LBaaS agent | 为多台实例和open vswitch agent提供均衡负载服务 |
2)Nutron架构
当 Nutron通过API接收来自用户或者其他组件传来的消息时,以消息队列的形式将消息传递给二层或者三层代理。二层代理实现相同VLAN下的网络通信,L3实现同一租户下不同网络之间的通信。
6、块存储服务-Cinder
Cinder为虚拟机实例提供volume卷的块存储服务,可以将卷挂载在实例上,作为虚拟机实例的本地磁盘来使用。一个volume可以同时挂载在多个实例上,但是共享的卷同时只能被一个实例进行写操作,其他的都只能读操作。
Cinder支持的文件系统类型有:LVM/ISCSI、NFS、NetAPP NFS、Gluster、DELL Equall Logic。
1)常用术语
名称 | 含义 |
---|---|
Volume备份 | volume卷的备份 |
Volume快照 | 卷在某个时间点的状态 |
Cinder API | 为Cinder请求提供统一风格的Rest API服务,用来接收Cinder的请求,是Cinder服务的入口 |
Cinder Scheduler | 负责为新建卷指定块存储节点 |
Cinder Volume | 与存储的块设备交互,实现卷的创建、删除、修改等操作 |
Cinder Backup | 备份服务负责通过驱动和后端的备份设备打交道 |
2)Cinder架构
API接收来自user或者compute的请求,以消息队列的方式发送个scheduler调用,然后scheduler到数据库中查询当前存储节点的状态信息,并根据预定策略选择最佳volume service节点,然后将调度的结果发布出来给volume provider调用,然后volume provider在特定的存储节点上创建相关的卷,并将相关结果返回给用户,并将相关数据写入到数据库中。本文来自http://blog.****.net/yanyumin52
其它都是复制的。
7、Web统一化管理界面-Horizon
啦啦啦啦
8、监控、计量服务-Ceilometer
Ceilometer是openstack的一个子项目,它像一个漏斗一样把openstack中发生的所有事件都搜集起来,然后为计费、监控等基础服务提供数据支撑。
1)Ceilometer的五个重要组件:
名称 | 含义 |
---|---|
Ceilometer-agent-compute | 搜集在计算节点上的信息代理,是计算节点上数据搜集的代理 |
Ceilometer-agent-central | 运行在控制节点上,轮训服务的非持续化数据 |
Ceilometer-collector | 运行在控制节点上,监听Message Bus,将受到的消息写入到数据库中 |
Storage | 支持MySQL等数据库,用于存储所搜集到的数据 |
API server | 运行在控制节点上,提供对数据库数据的访问 |
Message Bus | 计量数据的总线,搜集数据提供给Collector |
2)Ceilometer架构
Ceilometer使用了两种数据采集的方式,其一是OpenStack内服务自动发出的消息(Notifiction消息,图中的蓝色箭头,大部分事件都会主动发出消息,如实例的创建删除),其二是Ceilometer调用API主动轮询计量消息(对应黑色箭头,如CPU使用时间)。
9、模板编排服务-Heat
Heat是openstack的核心项目之一,提供基于模板的编排服务,可以通过.yaml文件生成模板,通过heat-agent组件在openstack中创建相关资源,除此之外她还 支其它模板。
1)常用术语
名称 | 含义 |
---|---|
Stack | 指的是Heat要用到的所有设施和资源的集合 |
Heat template | 指的是模板,以.yaml结尾的文件,用于创建stack |
Heat-api | 提供 rest api服务,将api请求发送给heat engine去执行 |
Heat-api-cfn | 支持亚马逊格式访问Rest api |
Heat-engine | Heat的核心模块,接收API请求在openstack中创建资源 |
Heat-cfntools、Heat-init | 在镜像中安装完成虚拟实例操作任务的工具 |
Heat-api-cloudwatch | 监控编排服务 |
Resource | 底层各种服务的抽象集合,如网络、计算、存储 |
Heat-client | 调用访问其他各个组件的client工具 |
2)Heat架构
三、总结
见下表:
后续:写了我好几天,纪念一下~