Nova(计算服务)
- 作用:在Openstack中提供计算资源服务项目,提供虚拟机生命周期的管理,其他计算资源生命周期的管理
- 架构
- nova-api:接收并响应计算资源调用请求
- nova-scheduler:为虚拟机选择最佳宿主机(过滤、权重、随机)
- nova-conductor:向计算节点提供数据库访问,复杂流程控制
- nova-compute:通过虚拟化引擎创建、删除虚拟机、部署在KVM节点的本地硬盘,由nova-compute直接调用
- nova-console、nova-novncpr:访问虚拟机实例控制台
Cinder(块存储服务)
- 作用:Cinder提供块存储服务,为虚拟机实例提供持久化存储
- 架构
- cinder-api:接收并响应卷操作指令
- cinder-scheduler:选择合适的存储(过滤、策略、权重)
- cinder-volume:与后端存储对接、管理卷、由厂商提供driver,每个存储对应一个volume
Glance(镜像服务)
- 作用:为openstack提供镜像的管理
- 架构
- glance-api:对外服务接口(镜像查询、存取)
- glance-registry:管理镜像信息的数据库,提供镜像的注册、查询
- glance-store
swift:本地硬盘、raid、远程的LUN由他们所组成的PG划分出来的VG
本地存储:GLance-api节点的 var/lib/glance/image
华为公有云OBS
- 镜像类型:vhd、qcow2、raw、iso、ovf
- 缓存机制
- 将镜像缓存到本地、提供效率
- 镜像缓存到glance-api所在节点上
- 配置:缓存开关、缓存大小、缓存周期
Swift(对象存储服务)
- 作用:为openstack其他组件提供对象存储服务
- 架构
- porxy server:提供api接口,对外提供对象存储功能
- account server:账户服务、存放租户信息、以及容器列表
- container server:容器服务、存放容器信息、对象列表
- object server:对象服务
- 空间:默认使用本地磁盘(本地磁盘、raid、挂载到本地的LUN)划出一个VG给swift,多副本,扁平化结构,适合非结构化数据存储
- 采用多租户隔离(三级结构):租户层、容器层、对象层
Neutron(网络服务)
- 作用:为openstack提供网络服务
- 架构
- neutron-server:请求接收API请求,并分配给适当的插件
- neutron-plugin:插件、负责编排后端设备(插入或排出端口、创建网络和子网、分配IP地址)支持不同的厂商插件、管理Agent。
- neutron-agent
代理:执行插件下发的指令
L2(ovs-agent)、L3-agent、DHCP-agent等
- 创建
- network(网络):软件定义的一个二层网络
- subnet(子网):与network相关联的一个地址段,被分配到端口
- port(端口):虚拟机与ovs的连接方式
- 部署
控制节点:neutron-server、neutron-plugin、DB
计算节点:L2-agent(ovs-agent)
网络节点:L3-agent、DHCP-agent
keystone(认证服务)
- 作用
- 身份验证:对用户名、密码进行验证
- 令牌管理:为用户生存Token,对token的合法性做验证
- 访问控制:不同角色的用户或用户组,拥有不同的权限
- 服务目录:对外提供服务查询,通过身份认证后返回响应的Endport
Endport:针对不同的对象,指向统一服务(组件)的URL,admin URL、Public URL、Internal URL 、模型:Rigin-Server-endport
- 架构
Keystone-API:外部请求内部组件时,先向Keystone做身份验证、组件间访问时,收到请求向keystone做鉴权
Keystone-Middleware:缓存Token等,减轻Token,减轻keystone Server压力
Keystone-Backends:实现Keystone服务,不同的Service由不同的Backends提供
Keystone-plugin:提供密码、token等认证方式
多个openstack统一管理时,共用一个keystone,手工指向一个openstack的keystone.Catalog中存放个regin相应的组件的endport
- 认证:keystone收到用户请求后先做身份认证,通过后生成token并返回给用户,并根据用户角色返回给相应的endport。
- 鉴权:组件api收到请求后,拿token向keystone鉴权,keystone根据token进行授权
Celiometer(计量服务)
- 作用:提供计量服务
- 架构
- Celiometer-API:对外提供数据查询(读DB)
- Colictor:周期查询Agent对接各个组件,周期收集各组件的信息、侦听Agent通过消息队列的侦听,收集信息、Compute Agent上报信息
- Celiometer使用Mongdb(分布式数据库)
Heat(编排服务)
- 作用:基于模板,创建所需资源,运行指定程序,完成指定配置,根据Celiometer检测到的数据,自动执行操作(自动化运维)
- 架构
- heat-api:提供api接口,是其他组件的交互接口
- engine service:引擎,调用各组件,执行模板
- 模板
CFN模板:主要为了兼容AWS
HOT模板
Ironic(裸金属服务)
- 作用:管理裸金属资源
- 架构
Ironic-compute:管理硬件资源
Ironic-api:接收资源请求
虚拟机创建流程
- nova-api接收到虚拟机创建指令,先向keystone做鉴权
- 鉴权成功将虚拟机信息通过Conductor写入DB,将指令发到scheduler
- Scheduler根据规格要求,选择合适的主机,将主机信息写入DB,并将消息发送给主机上的Nova-compute
- nova-compute收到指令后先预留计算资源,并将资源使用信息通过Conductor写入DB
- nova-compute向neutron请求网络
- nova-compute向cinder请求存储(创卷、挂卷)
- nova-compute向glance请求镜像
- 启动虚拟机
Cinder创建卷的流程
- Cinder-api收到创建卷请求后,向keystone鉴权
- 鉴权成功后预留资源,生成卷ID,写入DB,返回一个卷信息,将创建卷指令通过消息队列发送给Scheduler
- Scheduler选择合适的存储,将指令下发送给Cinder-volume
- Cinder-volume调用driver进行创卷
- 创卷成功,更新DB
Nova挂卷流程
- nova-compute向Cinder-api发起挂卷请求
- cinder-api将请求发送至响应的cinder-volume
- cinder-volume通过存储驱动建立主机与卷的映射,返回到nova-compute
- nova-compute通过主机驱动,将卷再挂载到虚拟机
- nova-compute将挂载信息发送给cinder-api,再由cinder-api写入DB
虚拟机网络创建流程
- nova-compute向neutron-server发送建立port请求
- neutron-server向keystone鉴权
- 鉴权成功,建立端口信息(pid、MAC等),存入DB,并将pid、MAC等信息返回给nova-compute
- nova-compute生成VM并启动,建立于ovs的连接
- ovs-agent将ovs端口变化信息(新启动的port)上报的plugin
- plugin根据pid从DB中响应网络信息,根据信息下发配置
