Compute Service Nova 是OpenStack最核心的服务,负责维护和管理云环境的计算资源。OpenStack作为IaaS 的云操作系统,虚拟机声明周期管理也就是通过Nova来实现的。




nova openstack 命令 关系 openstack nova架构_mysql


 


在上图中可以看到,Nova处于OpenStack架构的中心,其他组件都为Nova提供支持:Glance为VM提供 image 、Cinder 和 Swift 分别为 VM 提供块存储和对象存储,Neutron为VM提供网络连接。Nova架构如下:

 


nova openstack 命令 关系 openstack nova架构_mysql_02


 


Nova的架构比较复杂,包含很多组件。这些组件以子服务(后台deamon进程)的形式运行,可以分为以下几类:

 

API

 


    接收和响应用户的API调用。除了提供OpenStack自己的API,nova-api还支持Amazon EC2 API。也就是说,如果客户以前使用Amazon EC2 ,并且用EC2的API开发了些工具来管理虚拟机,那么如果现在要换成OpenStack,这些工具可以无缝迁移到OpenStack,因为nova-api兼容 EC2 API,无需做任何修改。

Compute Core

 

    nova-scheduler 虚机调度服务,负责决定在哪个计算节点上原型虚机


    nova-compute 管理虚机的核心服务,通过调用Hypervisor API 实现虚机声明周期管理


    Hypervisor 计算节点上跑的虚拟化管理程序,虚机管理最底层的程序。不同虚拟化技术提供自己的Hypervisor。常用Hypervisor有 KVM、Xen、VMware等

 

nova-conductor nova-compute通常需要更新数据库,比如更新虚机的状态,处于安全性和伸缩性的考虑,nova-compute 并不会直接访问数据库,而是将这个任务委托给 nova-conductor ,这个我们后面学习

Console Interface


    nova-console    用户可以通过多种方式访问虚机的控制台:

        nova-novncproxy,基于Web浏览器的VNC访问


        nova-spicehtml5proxy,基于HTML5浏览器的SPICE访问


        nova-xvpnvncproxy,基于Java客户端的VNC访问

nova-consoleauth    负责对访问虚拟机控制台请求提供Token认证

 

nova-cert    提供x509证书支持

Database

 

Nova会有一些数据需要存放到数据库中,一般使用MySQL。数据库安装在控制节点上。Nova使用命名为 nova 的数据库。

 


stack@DevStack-Controller:~$ mysql


    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 1104
    Server version: 5.7.26-0ubuntu0.16.04.1 (Ubuntu)
    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
    Oracle is a registered trademark of Oracle Corporation and/or its


    affiliates. Other names may be trademarks of their respective


    owners.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 


mysql> show databases;
   

    +--------------------+ 
    | Database           | 
    +--------------------+ 
    | information_schema | 
    | cinder             | 
    | glance             | 
    | keystone           | 
    | mysql              | 
    | neutron            | 
     
    | nova               |   
   
    | nova_api           | 
    | nova_cell0         | 
    | performance_schema | 
    | sys                | 
    +--------------------+ 
    11 rows in set (0.00 sec) 
  

  
Message Queue

 


在前面我们了解到Nova包含众多的子服务,这些子服务之间需要相互协调和通信,为解耦各个子服务,Nova通过 Message Queue 作为子服务的信息中转站。所以在架构图上我们看到了子服务之间没有直接的连线,是通过Message Queue联系的。

 


nova openstack 命令 关系 openstack nova架构_mysql_03

 

OpenStack默认是用RabbitMQ 作为 Message Queue。MQ 是OpenStack的核心基础组件,我们后面会详细介绍。