Nova是OpenStack中最核心的组件,可以说OpenStack中的其它组件都是为Nova服务的。所以Nova也是OpenStack最复杂的组件。Nova服务由多个子服务组成,这些子服务通过RPC实现通信,而其它组件(如glance等)是通过Nova对外提供的API,实际上就是RESTful API,实现与Nova的通信。所以可以看到,前面提到的OpenStack应用的两种通信方式(RPC、RESTful API),Nova中都用到了。
Nova中各个子服务如下:
Nova API:这是一个基于HTTP的RESTful API服务,用于接收和处理外部HTTP请求。
Nova Compute:这是Nova子服务中最核心的服务,它实现了虚拟机的管理功能。包括虚拟机的创建、启动、暂停、关闭和删除等。
Nova Scheduler:这是Nova子服务的“大脑”,负责调度子服务。当向Nova服务发起创建虚拟机请求时,Nova Scheduler子服务决定虚拟机创建在哪个计算节点上。
————————以上三个子服务为Nova中必须的————————
Nova Cell:这个子服务是为了方便实现横向扩展和大规模部署。
Nova Conductor:这是OpenStack G版本新增的子服务,它其实是一个RPC服务,主要是提供数据库的查询功能。在之前的版本中,都是在Nova Compute中定义许多数据库的查询方法,这种方式存在一些安全方面的隐患,因为Nova Compute需要部署在每个计算节点上,一旦有一个计算节点受到攻击,就会威胁到数据库。
要实现基本的虚拟机管理功能,需要在所有计算节点上启动Nova Compute服务,在控制