三分钟带你入门了解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的元数据工作机制是怎样的?
工作机制
-
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服务实现虚拟机的创建
服务从nova-scheduler服务得到了合适的计算节点的信息后,在通过消息队列通知nova-compute服务实现虚拟机的创建