三分钟带你入门了解openstack的Nova项目

前言

一:Nova项目

1.1:什么是Nova?有什么作用?

  • Nova是负责提供计算资源的模块,也是OpenStack中的核心模块。OpenStack使用计算服务来托管和管理云计算系统
  • 主要功能是负责虚拟机实例的生命周期管理、网络管理、存储卷管理、用户管理以及其他的相关云平台管理功能。

1.2:Nova有哪些重要服务组件?

  • Nova-api服务

    • 接收和响应来自最终用户的计算API请求,对外提供一个与云基础设施交互的接口,也是外部可用于管理基础设施的唯一组件
  • Nova-api-metadata服务

    • 接收来自虚拟机发送的元数据请求,Nova-api-metadata服务一般在安装Nova-Network服务的多主机模式下使用
  • Nova-Compute服务

    • 一个持续工作的守护进程,通过 Hypervisor的API来创建和销毁虚拟机实例
  • Nova- placement-api服务

    • 用于追踪记录资源提供者目录和资源使用情况,这些资源包括计算、存储以及IP地址池等。
  • Nova-Conductor模块

    • 用于Nova- Compute服务与数据库之间,避免了由Nova- Compute服务对云数据库的直接访问。它可以横向扩展。但是,不要将它部署在运行Nova- Compute服务的主机节点上
  • Nova- Scheduler服务

    • 接收到一个来自队列的运行虚拟机实例请求,然后决定在哪台计算服务器主机来运行该虚拟机。通过恰当的调度算法从可用资源池获得一个计算服务。Nova- Scheduler服务将根据负载、内存、可用域的物理距离、CPU构架等信息,并运行调度算法,最终做出调度决策
    • 最终OpenStack计算模块Nova中的各个组件是以数据库和队列为中心进行通信的

1.3:Nova的元数据工作机制是怎样的?

  • mark
  • 工作机制
    • 1、实例通过项目网络将元数据请求发送到neutron-ns-metadata-proxy,此时在请求中添加router-id和network-id
    • 2、neutron-ns-metadata-proxy通过unix domain socket将请求发送给neutron-metadata-agent。此时根据请求中的router-id、network-id和IP,获取端口信息,从而获得instance-id和project-id(tenant-id)并加入到请求中
    • 3、Neutron-metadata-agent通过内部管理网络将请求转发给Nova-api-metadata。此时利用instance-id和project-id(tenant-id)获取实例的元数据
    • 4、将获取的元数据原路返回给发出请求的实例
  • 虚拟机实例访问元数据服务
    • 计算节点为虚拟机实例使用元数据服务来获取指定实例的元数据
    • 元数据和用户数据都可以由实例访问。只有顶–user-data选项和包含用户内容的文件被传入到openstack server create命令,或者在图形界面通过配置驱动器注入用户数据时,才回出现像user_data这样的用户数据文件,不过user_data不是JSON格式

1.4:VM实例化流程

  • 1、首先用户执行Nova client提供的用于创建虚拟机的命令
  • 2、Nova-api服务监听到来自Nova client的HTTP请求,并将这些请求转换为AMQP消息之后加入消息列队
  • 3、通过消息队列调用Nova-conductor服务
  • 4、nova-conductor服务从消息列队中接收到虚拟机实例化请求消息后,进行一些准备工作
  • 5、nova-conductor服务通过消息列队告诉nova-scheduler服务去选择一个合适的计算节点来创建虚拟机,此时nova-scheduler会获取数据库的内容
    去选择一个合适的计算节点来创建虚拟机,此时nova-scheduler会获取数据库的内容
  • 6、nova-conductor服务从nova-scheduler服务得到了合适的计算节点的信息后,在通过消息队列通知nova-compute服务实现虚拟机的创建
原创文章 172 获赞 97 访问量 5万+

猜你喜欢

转载自blog.csdn.net/CN_TangZheng/article/details/104941484