Nova: 1 Nova基础及其架构

news/2024/12/12 7:16:33/

目标:
弄清楚nova架构及其主要场景的实现原理

1 引言
nova的作用是管理虚机,提供计算资源抽象。

2 nova架构

        api-------------------------------
        |                |
        |                |
        V                |
        conductor------>scheduler    |
        |                |
        |                |
        V                |
        compute<--------------------------


3 子服务作用及其交互
3.1 api服务
作用: 将长时任务()发送到conductor服务,将短时任务发送给compute服务。

3.2 conductor服务
作用: 对任务进行跟踪和调度。
典型场景: 新建虚机或迁移时,会向scheduler请求符合要求的计算节点,然后将请求发送到最终的计算节点。

3.3 scheduler服务
1)作用: 筛选出最符合要求的计算节点返回给conductor服务。
2)调度器
FilterScheduler:默认的过滤调度器,根据过滤条件以及权重挑选最佳节点。
CachingScheduler: 将主机资源信息还存在本地,通过定时任务从数据库获取最新信息。
......
3)调度器缓存更新
nova-compute服务对主机数据更新到数据库,nova-scheduler从数据库获取主机数据。
选择最佳主机需要在内存中保存先前决策情况,在调度器内存维护缓存实现。
HostState会从数据库和缓存更新主机数据,服务状态等信息。
4)过滤
用指定的Filters过滤不符合条件的主机。
Filter类型:
主机可用资源: 内存/磁盘/CPU等
主机状态: CPU使用率/虚拟机启动数量等
......
RamFilter:根据内存可用情况,选择内存足够多的主机
ComputeFilter:选择所有处于Active状态的主机
......
5)权重
对符合条件的主机计算权重得到最佳的。

3.4 compute服务
1)作用: 负责与Hypervisor通信,实现虚拟机管理。
典型场景: 删除虚机时,api通过消息告诉compute删除指定虚机。
2)Resource Tracker
compute服务需要在数据库更新主机资源使用情况(内存/CPU/磁盘),以便
scheduler服务作为选择主机依据。
使用ComputeNode保存计算节点配置和资源使用情况。
启动compute服务时会为主机创建Resource Tracker对象来监视本主机资源变化,
并更新ComputeNode对应的表compute_nodes。
3)更新ComputeNode途径
Resource Tracker的Claim机制: 创建前测试主机可用资源是否满足需要,满足更新数据库将主机可用资源中减去申请资源;失败则还原
周期性任务: 更新主机资源数据。保证数据库信息准确。

4 nova服务通信机制
nova-conductor, nova-scheduler, nova-compute通信基于消息队列的RPC远程过程调用。
上述服务启动会注册RPC server。

5 nova创建虚机流程
s1: api服务监听到创建虚机请求并转换为消息,校验合法则分配虚机id,在数据库中记录状态,调用conductor服务
s2: conductor服务接受该消息,汇总虚机参数,让scheduler选择最合适的主机
s3: conductor知道目标主机后,要求compute创建虚机。
s4: compute检查主机是否有足够资源,足够则启动虚机并更新数据库虚机状态,将主机资源使用情况
更新到数据库;不符,则发送请求给conductor服务来重试整个调度过程。

6 冷迁移与Resize
6.1)概念
迁移: 将虚机从一个计算节点迁移到另一个节点。
冷迁移: 迁移过程中虚机可能时管及或不可用
热迁移: 保证虚机运行
Resize: 调整虚机计算能力
Resize与冷迁移流程想通,Resize保证新的Flavor大于原来的Flavor,冷迁移则两者想通。

6.2)Resize流程
s1: api将虚机状态修改为RESIZE_PREP,并通过rpc调用conductor
s2: conductor生成request_spec对象,调用scheduler选择合适目标主机
s3: conductor调用目标主机compute,目标主机通过Resource Tracker的Claim
检测主机是否满足条件。
s4: 通过RPC回到源主机,由源主机的compute服务完成迁移。
源主机的compute获取虚机磁盘/网络,使用cp/scp复制待迁移资源到目标主机,修改虚机
状态为RESIZE_MIGRATED,通过RPC到目标主机上完成虚机RESIZE。

7 热迁移
1) 概念
含义: 虚机在工作情况下从一个计算节点迁移到另外节点。
本质: 业务不中断条件下将虚机内存复制到目标主机。迁移最后时刻,虚机短暂挂起,完成最后一次内存复制。
挂起虚机本质: 改变vcpu调度,不可虚机可用物理cpu时间片。

2)热迁移流程
s1: api通过rpc调用conductor发送热迁移消息
s2: conductor向scheduler服务发送rpc请求获知目标主机,并进行
虚机是否活跃,host是否ip等检查
s3: conductor向目标主机发送请求检查是否可以热迁移到目标主机
s4: 目标主机向宿主机发送请求是否可以热迁移宿主机
s5: 宿主机进行热迁移

8 挂起和恢复
Suspend: 会通知虚机,虚机内部进行挂起(例如挂起网卡/磁盘等), Resume:虚机主动恢复 
Pause: 虚机被动,Hypervisor直接从CPU调度挂起虚机,虚机感知不到。Unpause:恢复暂停。


9 重建和驱逐
rebuild:重建,系统重装但是配置不变
evacuate: openstack高可用,节点宕机会将这个节点上运行的虚机转移到另一个节点。

参考:
OpenStack设计与实现(第二版)


http://www.ppmy.cn/news/307713.html

相关文章

nova安装与配置

一、实验目的&#xff1a; 1、理解nova服务在OpenStack中的作用 2、掌握在控制节点上安装配置nova的方法和步骤 3、掌握在计算节点上安装与配置nova的方法和步骤 二、实验步骤&#xff1a; 1、在controller节点上为nova创建数据库&#xff0c;并创建管理账号&#xff0c;参…

NOVA再见

其实从这个学期开始&#xff0c;我才变成了一个真正的ACMer。 接触到了当初宣讲会的学长拐骗我们时提到的那些东西&#xff1a; 组队&#xff0c;闷小黑屋编代码&#xff0c;多年队友成基友&#xff0c;各种T恤&#xff0c;各种气球&#xff0c;公费旅游&#xff0c;在外校胡…

C语言关于一维数组【num】、【num】、【num[0]】的区别

#include<stdio.h> int main() {int num[5] { 1,2,3,4,5 };int* p (int*)(&num 1);int* p1 (&num[0] 1);int(*s)[5] &num;printf("%d,%d",*(num1),*(p-1));return 0; }通过Vs2019调试会发现 num与&num、&num[0]都是数组的首地址&…

一只仓鼠引发的热议HUAWEI nova 青春版超大内存走红

今天&#xff0c;一段小仓鼠的趣味视频让华为的官微着实火了一把。画面上一只小小的仓鼠变身大胃王&#xff0c;不停地将坚果塞进嘴巴&#xff0c;吃货技能满分&#xff0c;让万千网友瞬间被萌倒&#xff0c;直呼“超可爱”。这只仓鼠的颊囊仿佛有无限的空间&#xff0c;再多的…

怀念我们的青春

周末闲来无事&#xff0c;想起来了以前的时光&#xff0c;很怀念......&#xff08;甩一文 &#xff09; 那一年在过年&#xff0c;闲来无事&#xff0c;上网搜了很多资料后&#xff0c;做了几个好玩的app&#xff0c;不过现在基本都失效了&#xff0c;只能看看界面了&#xff…

Nova

1、架构 Nova组件由Nova-API&#xff0c;Nova-scheduler,Nova-conductor,Nova-compute以及提供消息传递的消息队列&#xff08;message queue&#xff09;和数据裤模块&#xff08;database&#xff09;组成 Nova-API&#xff1a;主要提供了统一风格的REST-API接口&#xff0c…

炫出我的色彩 HUAWEI nova青春版流光水波纹闪亮来袭

3月24日&#xff0c;风靡年轻人群的nova家族再添新星&#xff0c;HUAWEI nova 青春版在上海正式发布。这款精品轻旗舰由95后当红偶像关晓彤代言&#xff0c;售价1999元&#xff0c;当天18:08将在华为商城、天猫华为官方旗舰店、京东、苏宁易购等各大电商平台&#xff0c;华为授…

Nova介绍

Nova介绍 Nova是OpenStack中的计算组织控制器&#xff0c;管理OpenStack云中实例的生命周期的所有活动&#xff0c;使Nova成为一个负责管理计算资源、网络、认证所需的可扩展性平台。 常用术语 KVM 内核虚拟化&#xff0c;OpenStack默认的Hypersvisor Qemu KVM的替补角色…