1.什么是Nova?
Nova是Openstack云中的计算组织控制器,管理Openstack云中实例的生命周期的所有活动,使得nova称为一个负责管理计算资源、网络、认证所需的可扩展性平台。
2.常用术语
- Hypervisor:虚拟机监视器,用来建立与执行虚拟机的部分电脑软件、固件或硬件
- KVM:内核虚拟化,OpenStack默认的Hypervisor
- Qemu: KVM 的替补角色,没有KVM的执行效率高,不支持全虚拟化
- Flavor:用来新建虚拟机的配置列表,可以认为是创建虚拟机的模板
- Keypair:ssh连接访问实例的密钥对
- 安全组:是一个控制访问策略的容器,里面包含了各种各样的安全组规则
- 安全组规则:用来控制实例访问的具体策略,定义了用户可以通过什么协议,在远端什么主机上通过什么端口对实例进行链接访问。
3. Nova框架
3.1 Nova组件
Nova组件
- Nova API:提供了统一风格的 RestAPI接口,作为Nova组件的入口,接受用户的请求
- Nova scheduler :负责调度,将实例分配到具体的计算节点
- Nova conductor:主要负责与Nova数据库进行交互
-
Nova compute:用于虚拟机实例的创建和管理
以及提供消息传递的 -
消息队列:Nova各个组件之间的消息传递
和数据库模块:
3.2 Nova各个组件如何协作运行?
Nova组件的运行方式
首先,用户通过CLI命令行或者horizon向Nova组件提出创建实例的请求时,Nova API 作为Nova的入口,将会接受用户的请求,将会以消息队列的方式,将请求发送给Nova scheduler。
Nova scheduler从消息队列中,侦听到Nova API的消息队列后,去数据库中查询当前计算节点的负载和使用情况,由于Nova scheduler不能直接跟数据库进行交互,因此,将会借助于消息队列的方式通过Nova conductor组件,进而与数据库进行交互。
然后将查询到的结果,将虚拟机实例分配到当前负载最小,并且满足启动虚拟机实例的那个计算节点上,但最终的虚拟机实例的创建,并不是由Nova scheduler完成(它负责实例的分配调度工作)还是要靠Nova compute来完成。
但是实例的创建,离不开镜像、网络等一些资源的配合,因此,Nova compute将会与Nova volume、Nova network等等一些组件通过消息队列的方式实现相互的协作。最终完成虚拟机实例的创建。
4. Nova的功能特性:
- 实现实例的生命周期的管理
- 调动管理平台的网络、存储等资源
- 提供了统一风格的 RestAPI接口
- 支持KVM、VMware等透明的hypervisor
各个模块之间通过消息队列来进行消息传递