一、OpenStack组件介绍
OpenStack的常见的服务包括Nova、Swift、Glance、Keystone、Neutron、Cinder、Horizon、Ceilometer、Heat、Trove、TripleO、Sahara;其中Nova就是Compute(计算服务),主要的作用是管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。
Nova服务的运行是由多个组件各司其职功能完成的,主要组件有Nova-api/Nova-scheduler/Nova-compute等;其中Nova-api/Nova-conductor/Nova-scheduler会部署在控制节点, Nova-computer组件会部署在计算节点。
二、nova组件介绍
Keystone:在客户端发起创建虚拟机请求时,keystone需要对客户端的用户名和密码进行验证。
nova-api:是一个统称,它是一类服务的集合,每个服务提供不同的api。
nova-scheduler:负责从nova-api接收到参数,根据request_spec和filter_properties,选定虚拟机。
nova-compute:负责执行真正的创建虚拟机操作。
nova-network:负责在创建虚拟机之前为虚拟机分配fixed ip和floating ip,并返回网络信息。 三、nova系统架构
Nova最顶层的功能模块有三个,下面分别进行介绍:
Nova-api层:主要功能是对外提供rest接口;对外部传入的参数进行合法性校验和约束限制,如创建两个虚拟机但将其port设置为一样则就会报错;对请求的资源进行配额(quota)的校验和预留,合法就预留,不合法(超上限)就报错;资源的创建、更新、删除、查询等;该层可以水平扩展部署。
Nova-conducor层:进行数据库的操作,解耦其他组件(Nova-compute)数据库访问;Nova复杂流程控制,如创建、冷迁移、热迁移、虚拟机规格调整,虚拟机重建;nova-compute需要依赖nova-conductor启动成功后才能启动成功。
Nova-scheduler层:确定将虚拟机分配到哪一台物理机。分配过程主要分两步,过滤和加权。首先得到未经过滤的主机列表,根据过滤属性生成适合创建虚拟机的主机,加权阶段通过特定的加权算法计算出各主机创建虚拟机的成本,然后进行排序。计算出适合创建虚拟机的主机后通过消息队列Queue通过给对应计算节点上的Nova-compute。
Nova-compute模块:虚拟机各生命周期操作的真正执行者,底层(Libvert Driver)对接不同虚拟化的平台,内置周期性任务,完成资源刷新,虚拟机状态同步等功能。四、工作流程
整个过程从用户发起请求到虚拟机成功运行,包括客户端请求的发出、keystone身份验证、nova-api接收请求、nova-scheduler调度、nova-computer创建、nova-network分配网络。
|