07.计算Nova→1.nova架构→1.架构概览→3.Compute Core
- nova-scheduler [ˈskɛdʒʊlər]:虚机调度服务,负责决定在哪个计算节点上运行虚机
- nova-compute:管理虚机的核心服务,通过调用 Hypervisor API 实现虚机生命周期管理
- Hypervisor:计算节点上跑的虚拟化管理程序,虚机管理最底层的程序。不同虚拟化技术提供自己的 Hypervisor。常用的 Hypervisor 有 KVM,Xen, VMWare 等。
- 默认仅显示controller,需要在控制节点运行/opt/stack/devstack/tools/discover_hosts.sh来发现计算节点compute搭建了2节点devstack环境 这里的Compute Host在运行命令之前就是
- nova-conductor:nova-compute 经常需要更新数据库,比如更新虚机的状态。出于安全性和伸缩性的考虑,nova-compute 并不会直接访问数据库,而是将这个任务委托给 nova-conductor。
openstack通用设计思路:
- Scheduler 调度服务:对于某项操作,如果有多个实体都能够完成任务,那么通常会有一个 scheduler 负责从这些实体中挑选出一个最合适的来执行操作。
- Worker 工作服务:调度服务只管分配任务,真正执行任务的是 Worker 工作服务。 在 Nova 中,这个 Worker 就是 nova-compute 了。
- 将 Scheduler 和 Worker 从职能上进行划分使得 OpenStack 非常容易扩展: 当计算资源不够了无法创建虚机时,可以增加计算节点(增加 Worker);当客户的请求量太大调度不过来时,可以增加 Scheduler
- Driver 框架:以 Nova 为例,OpenStack 的计算节点支持多种 Hypervisor。 包括 KVM, Hyper-V, VMWare, Xen, Docker, LXC 等。 Nova-compute 为这些 Hypervisor 定义了统一的接口,hypervisor 只需要实现这些接口,就可以 driver 的形式即插即用到 OpenStack 中。
- 在 nova-compute 的配置文件 /etc/nova/nova.conf 中由 compute_driver 配置项在[DEFAULT]指定该计算节点使用哪种 Hypervisor 的 driver在我们的环境中因为是 KVM,所以配置的是 Libvirt 的 driver。
- 在学习 Glance 时谈到:OpenStack 支持多种 backend 来存放 image。可以是本地文件系统,Cinder,Ceph RBD,Swift 等。其实这也是一个 driver 架构。