OpenStack 开源私有云平台(云操作系统)
操作系统的功能
- 物理硬件资源的抽象化 HZ G G/T
- 应用程序运行的依赖
- 提供可视化的界面(图形化和命令行)
- 分配资源
- 监控
介绍
-
定义
- Openstack开源云操作系统, 在云计算平台中扮演操作系统的角色
-
功能
-
资源抽象
- OpenStack将各类硬件资源,通过虚拟化与软件定义的方式,抽象成资源池
-
资源分配与负载调度
- OpenStack根据管理员/用户的需求,将资源池中的资源分配给不同的用户,承载不同应用
-
应用生命周期管理
- OpenStack已经可以提供初步的应用部署/撤除、自动规模调整能力(需要注意的是OpenStack能够实现虚拟化功能,但不等同于虚拟化,且OpenStack作为构建云平台的其中一部分,也不等同于云)
-
-
版本发行
- OpenStack每年更新两个大版本,以26个英文字母进行版本排序
架构和组件(服务)
-
专有组件
- Horizon:提供图形化界面服务
- Keystone:提供鉴权服务
- Nova:提供计算服务
- Cinder:提供块存储服务
- Glance:提供镜像服务
- Neutron:通过网络服务
- Swfit:提供对象存储服务
- Ceilometer:提供监控告警服务
- Heat:提供自动化编排服务
-
公共组件
- DB:提供数据库服务
- Message-Queue:提供消息队列服务
-
专用组件的子组件及内容
-
Nova
-
Nova-api
- 对外提供Rest接口
- 对传入参数进行合法性检验和约束限制
- 对请求的资源进行配额的校验和预留
- 实现资源的创建,更新,查询,删除等操作
- 虚拟机生命周期入口
- 可实现自身的水平扩展
-
Nova-Conductor
- 数据库操作(解耦其他组件(nova-compute)数据库访问)
- Nova复杂流程控制(创建冷迁移,热迁移,虚拟机规格调整,虚拟机重建)
- 其他组件的依赖(如nova-compute需要依赖nova-conductor启动成功后才能启动成功)
-
Nova-Scheduler
- 根据Nova-api下发的请求及结合自身的策略(过滤,权重,随机)选择合适主机
-
Nova-Compute
- 虚拟机各生命周期操作的真正执行者(会调用对应的hypervisor的driver)
- 底层对接不同虚拟化的平台(kvm,vmware,xen,FusionCompute,hyperv等)
-
-
Message-Queue
-
Exchange(类似邮局)
- 消息交换机,它指定消息按什么规则,路由到哪个队列。
-
Queue(类似邮差)
- 消息队列载体,每个消息都会被投入到一个或多个队列。
-
Binding
- 绑定,它的作用就是把exchange和queue按照路由规则绑定起来。
-
Routing Key(类似邮编号)
- 路由关键字,exchange根据这个关键字进行消息投递。
-
Producer
- 消息生产者,就是投递消息的程序。
-
Consumer
- 消息消费者,就是接受消息的程序。
-
Connection
- 就是一个TCP连接。Producer和Consumer都是通过TCP连接到RabbitMQ Server的。以后我们可以看到,程序的起始就是建立这个TCP连接。
-
Channel
- 消息通道,是在TCP连接中的虚拟连接,在客户端的每个TCP连接里,可建立多个channel,每个channel代表一个会话任务。
-
-
Cinder
-
Cinder-Client
- 表示与Cinder交互的外部组件或服务,比如Horizon、Ceilometer等等
-
Cinder-api
- 接收和处理rest请求
-
Cinder-Scheduler
- 根据策略选择出合适的主机进行任务的处理
-
Cinder-Volume
- 通过驱动对接不同的后端存储,可支持IP SAN、FC SAN、本地存储
-
Cinder-Backup
- 将卷数据备份至其他存储介质中
-
-
Glance
-
Glance-api
- 类似nova-api,接收REST API请求,通过其他模块(glance-registry及image store)来完成诸如镜像的查找、获取、上传、删除等操作
-
glance-registry
- 用于与MySQL数据库交互,用于存储或获取镜像的元数据(metadata)
-
image store
- 是一个存储的接口层,通过这个接口,glance可以获取镜像,image store支持的存储有Amazon的S3、OpenStack本身的Swift,还有诸如ceph,sheepdog,GlusterFS等分布式存储
-
Cache机制
- 提前将需要的镜像文件缓存至Glance-api所在节点,在创建VM时先会从缓存中查找镜像,若缓存中能够查找到所需要的镜像,将不会去Glance下载image文件,而是直接利用本地base下的缓存镜像直接创建vm的disk文件,大大减少vm的部署时间
-
Glance支持的镜像格式
- raw :非结构化的镜像格式
- vhd : 通用虚拟机磁盘格式,使用于Vmware、XEN 、Microsoft Virtual PC、Virtual Server/Hyper-v、VirtualBox
- vmdk :Vmware 的虚拟机磁盘格式,同样也支持多种Hypervisor
- vdi : VirtualBox 、QEMU等虚拟机磁盘格式
- iso:光盘存档格式
- qcow2:一种QEMU并且可以动态拓展的磁盘格式
-
-
Swift
-
Neutron
-
neutron-server
- 主要提供接受和处理REST API 请求的功能
-
neutron-database
- 数据库,存储和管理数据
-
agent
- L2 agent (实现二层通信)
- L3 agent(实现二层通信)
- DHCP agent(提供DHCP服务)
-
RPC
- 实现远程访问服务(分布式系统的不同服务器)
-
网络结构
- Mangement Network:实现OpenStack组件之间的通信,比如nova-api与nova-scheduler、nova-compute与glance-api
- Data Network:实现VM之间的通信
- External Network:实现VM与外部的通信
- API Network:实现与OpenStack API的访问
-
资源对象
- network:类似虚拟交换
- subnet:包含IP地址段、DNS IP、网关IP等,必须与network关联
- port:分配给虚拟机网卡使用的逻辑端口,使得虚拟机具备网络的通信能力
-
-
三大存储服务
- Glance:OpenSphere 的Swfit、本地存储、OBS服务
- Cinder:SAN、FusionStorage
- Swift:本地存储、远端存储(管理存储的类型,可支持FusionStorage和SAN)
创建虚拟机流程
- 登录Horizon提供的图形化界面或者命令行界面,需要经过Keystone鉴权返回Token信息;
- Horizon或CLI向Nova发起创建虚拟机的请求,并且携带Token信息;
- Nova将Token信息发送至Keystone鉴权,Keystone返回验证信息以及对应角色(权限);
- Nova-api将该请求记录到DB中;
- Nova-api将该请求发送至Nova-Scheduler筛选出合适的主机(过滤—权重—随机);
- Nova-Scheduler需要向DB获取主机的相关信息,筛选之后还需要更新数据库信息;
- Nova-Scheduler将该请求发送至Nova-Compute;
- Nova-Compute需要Nova-Conductor访问DB获取规格信息;
- Nova-Compute分别向Glance、Neutron、Cinder获取创建虚拟机所需的镜像、网络、存储资源;
- Nova-Compute调用虚拟化平台的驱动完成虚拟机的创建。
- --注意事项:Nova内部组件的交互需要通过Message Queen(消息队列);不同服务之间的交互需要经过KeyStone的鉴权。
创建cinder卷流程
- 用户下发创建卷请求到Cinder-api
- Cinder-api检验用户是否有权限,以及基本校验,quota预占等操作,异步返回卷信息(生成卷id)
- Cinder-api将创建卷消息投递到scheduler消息队列中
- Scheduler从自己的消息队列中消费创建卷消息,根据各个volume定期上报的能力以及卷信息,选择一个主机创建卷
- Scheduler调度到主机后,将消息投递到相应的volume队列中
- Volume从自己的消息队列中消费创建卷消息,调用driver进行创建卷,最后更新数据库
- Volume调用Driver插件
- Driver将发送相应的创建卷命令到存储设备