文章目录
前言:
本篇博客为OpenStack—Nova组件基础理论,之后会持续更新其他组件理论部分
一、Nova计算服务基本概念
- Nova主要负责计算资源的模块,同时支持、处理openstack云中的实例生命周期的所有活动,这样使得nova成为一个负责管理计算资源、网络、认证、所需可扩展性的平台。
- nova服务是由多个子服务构成,子服务是通过RPC(远程过程调用)实现通信。服务之间有很松的耦合性。
- PS 解耦:耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。 解耦就是用数学方法将两种运动分离开来处理问题,常用解耦方法就是忽略或简化对所研究问题影响较小的一种运动,只分析主要的运动。
二、Nova主要功能与工作流程
2.1 Nova 主要功能
- ① 实现实例的生命周期的管理
- ② 调动管理平台的网络、存储等资源
- ③ 支持KVM、VMware等同名的hypervisor(虚拟机监视器)
- ④ hypervisor 提供软件来管理虚拟机对底层硬件的访问
- ⑤ 异步的一致性通信
2.2 Nova虚拟机创建工作流程图
2.2.1 详细工作流程
- 请求nova boot --image ttylinux --flavor 1 i-01
- 接收nova-api 接受请求(tcp REST请求)
- nova-api 发送一个创建虚拟机的请求到消息队列,并会存储到数据库,产生uuid.
- nova-scheduler 接受到请求后进行过滤,调度器会根据请求的虚拟资源,即flavor的信息,选择出最优的计算节点A(装有nova-computer的物理主机)
- nova-scheduler发送消息到nova-network,进入下一步(配置网络),此过程虚拟机处于scheduling任务状态。
- nova-network 接收到消息后,从fixed IP表(数据库)里拿出一个可用IP,设置dnsmsq(DHCP server),确保此IP可以与生成的MAC地址对应
- nova-network对fixed IP 进行地址转换,使虚拟机可以访问外网
- network设置完成后,nova-network发消息到消息队列,scheduler选择的计算节点服务器A会收到创建虚拟机的消息
- 计算节点A接收到消息后,开始创建虚拟机,首先会从glance上下载镜像,然后会根据之前生成的uuid、MAC,镜像位置、创建一个启动虚拟机的xml文件,同时调用libvirt接口,根据xml配置创建虚拟机,
- 虚拟机创建完后,把虚拟机状态改成ACTIVE
- 以上,虚拟机发布完成
三、Nova组件及功能
3.1 主要组件
-
nova-api
HTTP服务,对内接收处理客户端发送的HTTP请求 对外提供一个云基础设施的接口,也是外部可用于管理基础设施的唯一组件
-
nova-scheduler
① 在接收到一个来自消息队列的创建虚拟机实例请求时,根据配置从计算节点集群中选择最优节点,并将请求转给该节点,最终将虚拟机部署创建在该节点上,类似于负载均衡
② Nova-Scheduler服务将根据负载,内存,可用域的物理距离,CPU架构等信息,并运行调度算法,最终做出调度决策,同时负责Nova主机选择,提供决策,配置在contron下的noca.conf中
③ /Contron/nova.conf中配置:
scheduler_default_filter默认的过滤器
scheduler_avavilable_filter 可用的过滤器
④ 工作在逻辑控制层
-
nova-compute
nova-compute是一个非常重要的守护进程,负责创建和终止虚拟机实例,即管理虚拟机实例的生命周期
上层发来的请求通过compute去管理虚拟化组件,kvm、qemu去创建虚拟机实例,通过 Hypervisor 的 API来创建 和销毁虚拟机
-
nova-network daemon
安装在compute节点上,功能与nova-compute类似,管理IPtables规则和网卡
-
nova-conductor
RPC(远程过程调用)服务,主要提供数据查询功能
工作于Nova-Compute服务与数据库之间,避免了Nova-Compute服务对云数据库的直接访问,但是,不能将它部署在运行Nova-Compute服务的主机节点上
-
Nova-api-metadata
接收来自虚拟机发送的源数据请求,一般在安装Nova-Network 服务的所主机模式下使用
-
Nova-placement-api
用于追踪记录资源提供者目录和资源使用情况,这些资源包括计算,存储以及IP地址池等。
3.2 其他组件简介
-
nova-consoleauth daemon
身份验证的一个进程,用户的授权令牌.
Noca-consoleauth 守护进程,由用户的console控制台代理提供授权tokens,两种模式nova-novncproxy和nova-xv*nvcproxy
-
nova-novncproxy daemon
通过vnc(虚拟网络控制台)连接来访问运行的虚拟机实例的代理。
-
nova client
是指使用 Neutron服务的应用程序,可以是命令行工具(脚本)、 Horizon( OpenStack图形操作界面)和Nova计算服务等
-
the queue
消息队列rabbitmq。进程之间传递消息的中心
-
sql database
数据库(默认使用 Maria DB)用于存放 OpenStack的网络状态信息、包括网络、子网端口、路由器等等
-
Nova-conductor——数据库访问代理
负载均衡,可扩展性高
防止计算节点直接访问数据库