Nova(计算服务)

    • 作用:在Openstack中提供计算资源服务项目,提供虚拟机生命周期的管理,其他计算资源生命周期的管理
    • 架构
    1. nova-api:接收并响应计算资源调用请求
    2. nova-scheduler:为虚拟机选择最佳宿主机(过滤、权重、随机)
    3. nova-conductor:向计算节点提供数据库访问,复杂流程控制
    4. nova-compute:通过虚拟化引擎创建、删除虚拟机、部署在KVM节点的本地硬盘,由nova-compute直接调用
    5. nova-console、nova-novncpr:访问虚拟机实例控制台

    Cinder(块存储服务)

    • 作用:Cinder提供块存储服务,为虚拟机实例提供持久化存储
    • 架构
    1. cinder-api:接收并响应卷操作指令
    2. cinder-scheduler:选择合适的存储(过滤、策略、权重)
    3. cinder-volume:与后端存储对接、管理卷、由厂商提供driver,每个存储对应一个volume

    Glance(镜像服务)

    • 作用:为openstack提供镜像的管理
    • 架构
    1. glance-api:对外服务接口(镜像查询、存取)
    2. glance-registry:管理镜像信息的数据库,提供镜像的注册、查询
    3. glance-store

    swift:本地硬盘、raid、远程的LUN由他们所组成的PG划分出来的VG
    本地存储:GLance-api节点的 var/lib/glance/image
    华为公有云OBS

    • 镜像类型:vhd、qcow2、raw、iso、ovf
    • 缓存机制
    1. 将镜像缓存到本地、提供效率
    2. 镜像缓存到glance-api所在节点上
    3. 配置:缓存开关、缓存大小、缓存周期

    Swift(对象存储服务)

    • 作用:为openstack其他组件提供对象存储服务
    • 架构
    1. porxy server:提供api接口,对外提供对象存储功能
    2. account server:账户服务、存放租户信息、以及容器列表
    3. container server:容器服务、存放容器信息、对象列表
    4. object server:对象服务
    • 空间:默认使用本地磁盘(本地磁盘、raid、挂载到本地的LUN)划出一个VG给swift,多副本,扁平化结构,适合非结构化数据存储
    • 采用多租户隔离(三级结构):租户层、容器层、对象层

    Neutron(网络服务)

    • 作用:为openstack提供网络服务
    • 架构
    1. neutron-server:请求接收API请求,并分配给适当的插件
    2. neutron-plugin:插件、负责编排后端设备(插入或排出端口、创建网络和子网、分配IP地址)支持不同的厂商插件、管理Agent。
    3. neutron-agent

    代理:执行插件下发的指令
    L2(ovs-agent)、L3-agent、DHCP-agent等

    • 创建
    1. network(网络):软件定义的一个二层网络
    2. subnet(子网):与network相关联的一个地址段,被分配到端口
    3. port(端口):虚拟机与ovs的连接方式
    • 部署

    控制节点:neutron-server、neutron-plugin、DB
    计算节点:L2-agent(ovs-agent)
    网络节点:L3-agent、DHCP-agent
    keystone(认证服务)

    • 作用
    1. 身份验证:对用户名、密码进行验证
    2. 令牌管理:为用户生存Token,对token的合法性做验证
    3. 访问控制:不同角色的用户或用户组,拥有不同的权限
    4. 服务目录:对外提供服务查询,通过身份认证后返回响应的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(计量服务)

    • 作用:提供计量服务
    • 架构
    1. Celiometer-API:对外提供数据查询(读DB)
    2. Colictor:周期查询Agent对接各个组件,周期收集各组件的信息、侦听Agent通过消息队列的侦听,收集信息、Compute Agent上报信息
    3. Celiometer使用Mongdb(分布式数据库)

    Heat(编排服务)

    • 作用:基于模板,创建所需资源,运行指定程序,完成指定配置,根据Celiometer检测到的数据,自动执行操作(自动化运维)
    • 架构
    1. heat-api:提供api接口,是其他组件的交互接口
    2. engine service:引擎,调用各组件,执行模板
    • 模板

    CFN模板:主要为了兼容AWS
    HOT模板
    Ironic(裸金属服务)

    • 作用:管理裸金属资源
    • 架构

    Ironic-compute:管理硬件资源
    Ironic-api:接收资源请求


    虚拟机创建流程

    1. nova-api接收到虚拟机创建指令,先向keystone做鉴权
    2. 鉴权成功将虚拟机信息通过Conductor写入DB,将指令发到scheduler
    3. Scheduler根据规格要求,选择合适的主机,将主机信息写入DB,并将消息发送给主机上的Nova-compute
    4. nova-compute收到指令后先预留计算资源,并将资源使用信息通过Conductor写入DB
    5. nova-compute向neutron请求网络
    6. nova-compute向cinder请求存储(创卷、挂卷)
    7. nova-compute向glance请求镜像
    8. 启动虚拟机

    Cinder创建卷的流程

    1. Cinder-api收到创建卷请求后,向keystone鉴权
    2. 鉴权成功后预留资源,生成卷ID,写入DB,返回一个卷信息,将创建卷指令通过消息队列发送给Scheduler
    3. Scheduler选择合适的存储,将指令下发送给Cinder-volume
    4. Cinder-volume调用driver进行创卷
    5. 创卷成功,更新DB

    Nova挂卷流程

    1. nova-compute向Cinder-api发起挂卷请求
    2. cinder-api将请求发送至响应的cinder-volume
    3. cinder-volume通过存储驱动建立主机与卷的映射,返回到nova-compute
    4. nova-compute通过主机驱动,将卷再挂载到虚拟机
    5. nova-compute将挂载信息发送给cinder-api,再由cinder-api写入DB

    虚拟机网络创建流程

    1. nova-compute向neutron-server发送建立port请求
    2. neutron-server向keystone鉴权
    3. 鉴权成功,建立端口信息(pid、MAC等),存入DB,并将pid、MAC等信息返回给nova-compute
    4. nova-compute生成VM并启动,建立于ovs的连接
    5. ovs-agent将ovs端口变化信息(新启动的port)上报的plugin
    6. plugin根据pid从DB中响应网络信息,根据信息下发配置