1.什么是nova
nova是openstack中的组件之一,nova作为云平台的计算服务提供模板,nova组件用于调度并管理整个云平台的计算资源,也就是提供了云计算服务。nova组件的如此重要,也注定他是openstack中最为复杂的组件。nova服务有多个子服务,自服务通过RPC实现通信,下面介绍
2.在说自服务之前,先说明一下nova是管理底层虚拟化的,并不是自己实施虚拟化的。在linux中真正实施虚拟化的是底层的kvm,qemu,kvm把底层物理机的硬盘,cpu等资源进行虚拟化之后,然后nova去管理那些被KVM虚拟化之后的资源。
3.nova子服务概念
(1).nova api service------安装在controller节点:接受和相应客户端发送的请求,nova-api负责接收和响应终端用户由管虚拟机和云硬盘的请求。就是说我想在openstack中创建个虚拟机(创建虚拟机最终在nova中完成),我发出的请求就被nova-api接收并发送到nova中去,然后在进行下一步具体操作。
nova-api是整个nova的入口。它接收用户请求,将指令发送到消息队列,由相应的服务执行相关的指令消息,他提供了openstack API,亚马逊EC2 API,以及管理员控制API。
(2)nova-api-metadata service:接受从实例元数据发来的请求,该服务通常于nova-network服务在对主机模式下运行,也就说由多个nova节点才会用得到
(3)nova compute------安装在compute节点:是nova组件中最核心的服务,它实现了管理虚拟机的功能,实现了在计算节点上创建,启动,暂停,关闭,和删除虚拟机。
(4)nova Scheduler:主要起到调度作用,假如现在又多台nova计算节点,当用户发起创建虚拟机的请求时,nova Scheduler会决定把虚拟机创建放在那个计算节点上。
(5)nova conductor:主要提供数据查询功能,提供nova compute和Database之间的交互数据,那为啥nova compute不直接去访问数据库呢?只是为防止nova compute被攻击后,数据库就会不安全,所以需要有nova conductor去调度
以上子服务的工作图:
接下来接着说子服务
(6)nova-network work demo--安装在compute节点
接收来自队列中网络任务和操作网络。就是创建虚拟机肯定需要网卡等网络配置,noa-network就是各负责实施网络的
(7)nova Consoleauth:在控制台提供给用户授权令牌
(8)nova novncproxy:提供一个通过VNC连接来访问运行虚拟机的实例代理
(9)nova client nova命令行工具
(10)The Queue 消息代理,用于子服务之间的消息沟通,通常为RabbitMQ
(11)SQL database:保存云基础设施建立和运行时的状态信息
三.nova中各组件的工作图:
纠错:实时监控,是监控的物理机的资源使用情况,以便于Scheduler下次更好的选择nova计算节点。
四.nova和其他组件沟通