本节讨论 nova-compute,并详细分析 instance 部署的全过程。
先给大家道个歉:今天这篇文章的篇幅比以往要多一些,本来想分两次发,但考虑到文章的完整和系统性,还是一次发了出来,这次可能要超出 5 分钟了,大家见谅。
nova-compute 在计算节点上运行,负责管理节点上的 instance。
OpenStack 对 instance 的操作,最后都是交给 nova-compute 来完成的。
nova-compute 与 Hypervisor 一起实现 OpenStack 对 instance 生命周期的管理。
通过 Driver 架构支持多种 Hypervisor
接着的问题是:现在市面上有这么多 Hypervisor,nova-compute 如何与它们配合呢?
这就是我们之前讨论过的 Driver 架构。
nova-compute 为这些 Hypervisor 定义了统一的接口,Hypervisor 只需要实现这些接口,就可以 Driver 的形式即插即用到 OpenStack 系统中。
下面是Nova Driver的架构示意图
我们可以在 /opt/stack/nova/nova/virt/ 目录下查看到 OpenStack 源代码中已经自带了上面这几个 Hypervisor 的 Driver
某个特定的计算节点上只会运行一种 Hypervisor,只需在该节点 nova-compute 的配置文件 /etc/nova/nova.conf 中配置所对应的 compute_driver 就可以了。
在我们的环境中因为是 KVM,所以配置的是 Libvirt 的 driver。
nova-compute 的功能可以分为两类:
- 定时向 OpenStack 报告计算节点的状态