博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Openstack组件实现原理 — Nova 体系结构
阅读量:6942 次
发布时间:2019-06-27

本文共 1444 字,大约阅读时间需要 4 分钟。

目录

前文列表

Nova体系结构

这里写图片描述

Nova主要有API、Compute、Conductor、Scheduler四个核心服务组成,这些服务之间通过AMQP消息队列来进行通信。

Client:Nova Client能够让Tenant管理员或用户终端提交指令,是Openstack官方为了简化用户对RESTful API的使用所提供的API封装,Client能够将用户的请求转换为标准的HTTP请求。

API(nova-api service):nova-api service能够接收和响应Client的Compute API调用,所以API就是Client进入Nova的HTTP接口。

Compute(nova-compute service):nova-compute service是一个通过hypervisor APIs(虚拟化层API)来实现创建和终止虚拟机实例的守护进程,Compute通过和VMM的交互来运行虚拟机并管理虚拟机的生命周期。

Scheduler(nova-scheduler service):nova-scheduler service会从queue中接收一个虚拟机实例的请求,并确定该实例能够运行在哪一台Compute server中。Scheduler通过读取数据库的内容,从可用的池中选择最合适的Compute Node来创建新的虚拟机实例。

Conductor(nova-conductor):nova-conductor module能够协调nova-compute service和database之间的交互,Conductor为数据库访问提供了一层安全保障。

Queue:queue是Nova 服务组件之间传递信息的中心枢纽。通常使用AMQP(高级消息队列协议Advanced Message Queuing Protocol)的RabbitMQ消息队列来实现。

注意:因为Scheduler只能读取数据库内容,和API通过Policy机制来限制数据库的访问,所以Scheduler和API这两个服务都可以直接访问数据库。但是支持引入了Conductor服务之后,更加规范的方法是通过Conductor服务来对数据库进行操作。

虚拟机实例化流程

  • Step1:首先用户执行Nova Client提供的用于创建虚拟机的指令

  • Step2:nova-api service监听到来自于Nova Client的HTTP请求,并将这些请求转换为AMQP消息之后加入消息队列Queue

  • Step3:通过消息队列Queue调用nova-conductor service

  • Step4:nova-conductor service从Queue接收到虚拟机实例化请求消息后,进行一些准备工作(EG. 汇总HTTP请求中所需要实例化的虚拟机参数)

  • Step5:nova-conductor service通过Queue告诉nova-scheduler去选择一个合适的Compute Node来创建虚拟机,此时nova-scheduler会读取数据库的内容

  • Step6:nova-conductor从nova-scheduler得到了合适的Compute Node的信息后,在通过Queue来通知nova-compute service实现虚拟机的创建

送虚拟机实例化的过程可以看出,Nova中最重要的4个服务之间的通信都是通过Queue来实现的。这符合松耦合的实现方式。

你可能感兴趣的文章
CPU发生异常到生成Crash Log的过程
查看>>
Zookeeper教程:快速开始以及结合java实现分布式Barrier和Queue
查看>>
JavaScript 笔记02
查看>>
分享一个前端视频资料的搜索引擎很给力
查看>>
MQ 常见的使用场景
查看>>
Java JDK11基于嵌套的访问控制
查看>>
js经验分享 JavaScript反调试技巧
查看>>
解--头条的算法面试题-圆环开关灯
查看>>
JS中typeof与instanceof的区别
查看>>
Redis 服务器安装
查看>>
前端进击的巨人(七):走进面向对象,原型与原型链,继承方式
查看>>
java设计模式(五)--建造者模式(Builder)
查看>>
C语言:其他进制转换为十进制(方法二)
查看>>
cgroup测试存储设备IOPS分配
查看>>
Eclipse新版 syso无法自动补全的解决方法
查看>>
Sublime Es6教程1-环境搭建
查看>>
Nginx配置upstream实现负载均衡
查看>>
FFMPEG-AVFilter研究
查看>>
学习笔记DL004:标量、向量、矩阵、张量,矩阵、向量相乘,单位矩阵、逆矩阵...
查看>>
MapReduce(一)
查看>>