nova组件中子模块简介以及简单功能理解

来源:互联网 发布:阿里云ecs linux教程 编辑:程序博客网 时间:2024/05/19 03:28
 参考网络资料学习并整理如下内容,如果有错误请指出谢谢。


1、nova逻辑架构:
     nova是云主机控制器,它包含很多组件。
      • API服务器(nova-api)
      • 计算服务器(nova-computer)
      • 网络控制器(nova-network)
      • 调度器(nova-schedule)
      • 卷控制器(nova-volume)
      • 消息队列(queue)
     1111.png
  • nova-api是整个nova的入口,他接受用户请求,将指令发送给消息队列,由相应的服务执行相关的指令消息
  • nova-computer是主要的执行守护进程,职责是基于各种虚拟化技术Hyperivisor实现创建和终止虚拟机。nova-computer有两个工作,接受消息队列中的执行指令,并执行相关指令,如部署虚拟机、维护数据库先关模型的状态数据。
  • nova-volume职责是创建、挂载、卸载持久化的磁盘虚拟机,运行机制类似nova-computer。同样是接受消息队列中的执行指令,并执行相关指令。volume相关职责包括:创建硬盘、删除硬盘,弹性计算硬盘(不明白这个是个什么意思),总之就是为虚拟机增加块设备存储。
  • nova-network的职责就是实现网络资源池的管理,包括ip池,网桥接口、vlan、防火墙的管理。接受消息队列指令并执行相关指令。network的职责包括如下:分配私有云、vlan管理、配置计算节点网络。
  • nova-schedule的职责就是调度虚拟机在那个计算节点上部署,接受消息队列指令并执行相关指令。
  • queue:消息队列(这个我一直弄不太懂,最近又专门看了rabbitMq工作原理才明白点,接下来也会分享下)。从架构上看nova各个组件之间的通信全是靠它了,她和db一起为各个守护进程之间传递消息。

2、运行架构

     nova-api对外统一提供标准化接口,各子模块,如计算资源(computer),存储资源(volume)、网络资源(network)模块通过相应的api接口服务对外提供服务。
     
      API接口操作DB实现资源数据模型的维护。通过消息中间件,通知相应的守护进程如nova-compute实现服务接口,api与守护进程共享DB数据库,但守护进程侧重维护状态信息,网络资源状态。守护进程之间不能直接调用,需要通过api调用,如nova-compute为虚拟机分配网络,需要调用network-api,而不能直接调用nova-network,这样易于解耦合。

     下面以创建虚拟机为例:
  1. 通过调用nova-api创建虚拟机接口,nova-api对参数进行解析以及初步合法性校验,调用compute-api创建虚拟机vm接口,computer-api根据虚拟机参数(cpu、内存、磁盘、网络、安全组等)信息,访问数据库创建数据模型虚拟机实例记录。
  2. 接下来需要调用具体的物理机实现虚拟机部署,在这里就会涉及调度模块nova-scheduler,computer-api通过rpc的方式将创建虚拟机的基础信息封装成消息发送至消息中间件指定消息队列“scheduler”
  3. nova-scheduer订阅了消息队列“scheduler”的内容,接受到创建虚拟机的消息后,进行过滤,根据请求的虚拟资源,即flavor的信息,scheduler会找到一个可用的主机,如果没有找到就设置虚拟机的状态成ERROR,选择一台物理主机部署,如novan1,nova-scheduler将虚拟机的基本信息、所属物理主机信息发送值消息中间件指定消息队列“computer.novan1”
  4. novan1上nova-compute守护进程订阅消息队列“computer.novan1”,接受到消息后,根据虚拟机基本信息开始创建虚拟机
  5. nova-computer调用network-api分配网络ip
  6. nova-network接受到消息后,从fixedIP表中拿出一个可用的IP,nova-network根据私网资源池,结合DHCP,实现ip分配和ip绑定
  7. nova-computer通过调用volume-api实现存储划分,最后调用底层虚拟化技术,部署虚拟机。

3、开发架构
     nova的主要代码都是nova文件夹下:
  • /nova/service.py :主机上运行所有服务的通信节点基类;所有服务的start位置。
  • /nova/config.py :配置信息
  • /nova/api/openstack : 提供openstack nova rest api接口服务
  • /nova/computer :计算资源池
  • /nova/computer/api.py :处理关于计算资源的所有的请求。
  • /nova/computer/manager.py :对实例相关的所有进程的处理
      • computerVirtAPI.py:计算virtapi
      • computerManager.py :管理实例从建立到销毁的运行过程
  • /nova/network :网络资源池
  • /nova/schedule : 调度资源池

4、数据库相关表
  • computer_node :计算节点信息
  • fixed_ips: 固定ip表
  • instance_actions :实例的所有操作都会记录在这张表中,包括create 、delete、stop、reset等
  • instance_action_events
  • instance_types: 就是flavor
  • instances:虚拟机表
  • networks:网络信息
  • services: 各个子模块服务的信息,比如computer network scheduler conduct
1 0