Nova是OpenStack最核心的服务,负责维护和管理云环境的计算资源,虚拟机生命周期也是通过Nova来实现的。
用途与功能 : 1) 实例生命周期管理 2) 管理计算资源 3) 网络和认证管理 4)REST 风格的 API 5) 异步的一致性通信 6)Hypervisor 透明:支持Xen,XenServer/XCP,KVM, UML, VMware vSphere and Hyper-V,Hypervisor(系统管理程序):虚拟化技术的核心,是物理服务器和操作系统之间的软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此可以看作是虚拟环境中的“元”操作系统,他可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器。
Nova组件:
1、Nova-api是这个Nova组件的门户,接收和响应客户的API调用,所有对Nova的请求都是首先由NOva-api处理,Nova-api向外界暴露若干HTTP REST API 接口。 2、Nova-scheduler虚拟机调度器,是compute core,主要负责决定在哪个计算节点是哪个运行虚拟机,OpenStack的默认调度器为:filter scheduler,调度器中含有的两部分:instance(实例),flavor(模板),在生成一个实例的时候可以根据模板中的规定去生成。 调度过程:
1)通过过滤器filter选择满足条件的计算机节点(nova-compute)
2)通过计算权重(weighting)选择在最优的计算节点上创建instance
3、Nova-compute:管理虚拟机的核心服务,在计算节点上运行,通过调研hypervisor API实现节点上的instance的生命周期管理,OpenStack对instance的操作最后都是交给nova-compute来完成的,nova-compute和Hypervisor一起实现OpenStack对instance生命周期的管理。
4、Nova-conductor:nova-compute 经常需要更新数据库,比如更新和获取虚机的状态。 出于安全性和伸缩性的考虑,nova-compute 并不会直接访问数据库,而是将这个任务委托给 nova-conductor。
5、nova-console: 用户可以通过多种方式访问虚机的控制台:
6、nova-novncproxy: 基于 Web 浏览器的 VNC 访问
Nova的部署方案:Nova 的以上这些组件都会部署在两类节点上:计算节点、控制节点,其中只有nova-compute需要放在计算节点上,其他服务则放在控制节点上,计算节点和控制节点之间事通过集群网通信,两个节点之间虚拟机的通信是通过租户网。另外,可以将所有服务都放在一台物理机上,作为一个 All-in-One 的测试环境; 也可以将服务部署在多台物理机上,获得更好的性能和高可用。
Nova服务中各个组件之间协同工作:
1、客户(可以是 OpenStack 最终用户,也可以是其他程序)向 API(nova-api)发送请求:“帮我创建一个虚机” 2、API 对请求做一些必要处理后,向 Messaging(RabbitMQ)发送了一条消息:“让 Scheduler 创建一个虚机” 3、Scheduler(nova-scheduler)从 Messaging 获取到 API 发给它的消息,然后执行调度算法,从若干计算节点中选出节点 A 4、Scheduler 向 Messaging 发送了一条消息:“在计算节点 A 上创建这个虚机” 5、计算节点 A 的 Compute(nova-compute)从 Messaging 中获取到 Scheduler 发给它的消息,然后在本节点的 Hypervisor 上启动虚机。 6、在虚机创建的过程中,Compute 如果需要查询或更新数据库信息,会通过 Messaging 向 Conductor(nova-conductor)发送消息,Conductor 负责数据库访问。
验证Nova服务是否安装完成: 1、nova service-list 查看Nova下的服务状态 ,如果服务起不了,查看openstack用户是否存在: rabbitmqctl list_users 2、openstack endpoint list 查看openstack下各服务的API端点 3、nova image-list 查看可用的镜像文件
关于nova的命令: 1、nova list 显示当前节点的虚拟机 2、nova list --all-t 显示所有节点的所有虚拟机
配置文件注意点:
my_ip = 集群网ip 主机名要做修改,还有openstack用户的密码 [vnc] novncproxy_base_url = http://192.168.254.230:6080/vnc_auto.html ip 为集群网ip
注意:在openstack界面无法建立虚机的时候执行以下命令:
nova-manage cell_v2 discover_hosts --verbose