Nova组件

Nova用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置CPU、内存等信息规格。

Nova组件包括以下几个服务:

  • nova-api
  • nova-compute
  • nova-scheduler
  • nova-conductor
  • nova-network(现在是使用的neutron)
  • nova-console
  • nova-consoleauth
  • nova-objectstore
  • nova-db

nova的逻辑架构图如图:

Nova组件_第1张图片

  • nova-api
    Nova对外提供服务的窗口,他接收并响应来自用户的Compute API调用。

  • nova-compute
    是安装到每个物理主机上的服务进程,这个服务接受请求后执行一批与虚拟机相关的操作,这些操作需要调用底层的Hypervisor API完成,比如支持XenServer/XCP的XwnAPI,支持KVM和QEMU的libvirt或者支持VMware的VMwareAPI等。

  • nova-scheduler
    用于接收创建虚拟机的请求,并决定在哪台物理主机上启动该虚拟机的调度器。目前nova中的实现有以下几种:

    • 随机调度器(ChanceScheduler):从所有nova-compute服务的正常运行的节点中随机选择。
    • 过滤调度器(FilterScheduler):根据指定的过滤条件以及权重新挑选最佳节点。
    • CachingScheduler:FilterScheduler的一种,在FilterScheduler的基础上将主机资源信息缓存在本地内存中,然后通过后台的定时任务定时从数据库中获取最新的主机资源信息。
  • nova-conductor
    处于nova-compute与nova-db之间的一个组件,nova-conductor创建的初衷是基于安全考虑而避免nova-compute直接访问nova-db的,nova-compute的请求都由nova-comductor代交,不能直接访问nova-db。

  • nova-db
    包含一大堆数据库表,该数据库用于记录虚拟机状态,虚拟机与物理机的对应关系、project信息等数据内容。

  • nova-console与nova-consoleath
    都是Nova提供的控制台服务,允许最终用户通过代理服务器访问虚拟机的控制台。

  • nova-cert与nova-objectstore
    提供了x509验证管理服务和在Glance中注册镜像的S3接口服务。

Nova创建虚拟机的流程(这个简化了):

Nova组件_第2张图片


Nova创建启动虚拟机流程:

Nova组件_第3张图片

  • 1.web界面或者命令行发送用户名或密码到keystone认证,并从keystone返回一个认证token和endpoint服务URL.
  • 2.调用nova-API。
  • 3.向keystone认证发送的API是否正确。
  • 4.向instance表中插入记录。
  • 6.根据合适的调度算法找到最佳的Host,并将信息写入数据库。
  • 8.调度网络资源(现在是由neutron完成)。
  • 9.根据信息生成对应的VM(只是裸机)。

以上是我自己在了解OpenStack时,对nova的一些资本了解,比较浅,如果有不对的地方欢迎指出来,谢谢!

你可能感兴趣的:(openstack)