一: nova 的体系架构


不同组件的作用:


下面以创建虚拟机为例,分析Nova的不同关键子模块之间的调用关系。因为启动一个新的instance涉及到很多openstacknova里面的 组件共同协作。

1、通过调用nova-api创建虚拟机接口,nova-api对参数进行解析以及初步合法性校验,调用compute-api创建虚拟机VM接口,compute-api根据虚拟机参数(CPU,内存,磁盘,网络,安全组等)信息,访问 数据库创建数据模型虚拟机实例记录(创建1个虚拟机实例)

2、接下来需要调用具体的物理机实现 虚拟机部署,在这里就会涉及调度模块novascheduler,compute- api通过RPC的方式将创建虚拟机的基础信息封装成消息发送至消息中间件指定消息队列“scheduler”。

3.nova-scheduler订阅了消息队列“scheduler”的内容,接受到创建虚拟机的消息后,进行过滤,根据请求的虚拟资源,即flavor的信息。scheduler会找到一个可用的主机,如果没有找到就设置虚拟机的状态设置成ERROR选择一台物理 主机部署,如果有主机,如物理主机A。nova-scheduler将虚拟机基本信息,所属物理主机信息发送至消息中间件指定消息队列“compute.物理机A”

4.物理机A上nova-compute守护进程订阅消息队列“compute.物理机A”,接到消息后,根据虚拟机基本信息开始创建虚拟机

5.nova-compute调用network-api分配网络ip

6.nova-network接收到消息就,从fixedIP表( 数据库)里拿出一个可用IP,nova-network根据私网资源池,结合DHCP,实现IP分配和IP地址绑定

7.nova-compute通过调用volume-api实现存储划分,最后调用底层虚拟化Hypervisor技术,部署 虚拟机
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐