OpenStack Nova
OpenStack Nova
简介
OpenStack 中的 Nova 负责维护和管理云环境的计算资源
Nova 在现有 Linux 服务器上作为一组守护线程来提供服务
Nova 由多个服务器进程组成,每个进程执行不同的功能
面向用户的界面是 REST API ,而 Nova 组件内部通过 RPC 消息传递机制进行通信
需要以下额外的服务来实现基本功能:
- Keystone :为所有的 OpenStack 服务提供认证 (identity and authentication)
- Glance :提供计算镜像仓库 (compute image repository),所有的计算实例均由计算镜像启动
- Neutron :负责配置计算实例在启动时连接到的虚拟或物理网络
- Placement :跟踪云中可用资源的清单,并帮助选择创建虚拟机时资源的提供者
Nova 包含以下组件:
API
nova-api 作为 Nova 组件对外的唯一窗口,向客户暴露 Nova 能够提供的功能。当客户需要执行虚拟机相关的操作时,能且只能向 nova-api 发送 REST 请求
nova-api service
接收和响应 end user 的 API 调用
nova-api-metadata service
接收来自实例的源数据请求
通常只在安装有 nova-network 服务的多主机模式下使用
compute core
nova-compute service
管理虚机的核心服务,通过调用 Hypervisor API 实现虚机生命周期管理
nova-scheduler service
虚拟机调度服务,从队列中获取虚拟机实例请求,并确定它在哪个计算节点上运行
nova-conductor module
调解 nova-compute service 和 database 之间的交互,使得 nova-compute service 不会对云数据库直接访问
不要把它部署在运行 nova-compute service 的节点上
console interface
nova-console
用户可以通过多种方式访问虚机的控制台:
nova-novncproxy,基于 Web 浏览器的 VNC 访问
nova-spicehtml5proxy,基于 HTML5 浏览器的 SPICE 访问
nova-xvpnvncproxy,基于 Java 客户端的 VNC 访问
nova-consoleauth daemon
负责对访问虚拟机控制台请求提供 Token 认证
必须运行此服务才能使控制台代理生效
Database
SQL database
存储云基础架构大多数构建时和运行时的状态,包括:
- 可用的实例类型 (Available instance types)
- 正在使用的实例 (Instances in use)
- 可用的网络 (Available networks)
- 项目 (Projects)
Message queue
The queue
用于在守护进程之间传递消息
典型的 Nova 部署
Nova 的关键组件和它们之间传递信息的方式

通信方式
API 服务器处理 REST 请求,通常涉及数据库读/写,可选地将 RPC 消息发送到其他 Nova 服务,以及生成对 REST 调用的响应。
RPC 消息传递是通过 oslo.messaging 库完成的,这是一个消息队列之上的抽象
大多数主要的 nova 组件可以在多个服务器上运行,并且有一个正在侦听 RPC 消息的管理器。 一个例外是 nova-compute,其中一个进程在它正在管理的虚拟机 hypervisor 上运行(除了使用 VMware 或 Ironic 驱动程序时)。 管理员还可以选择定期执行任务。
数据库
Nova 还使用在所有组件之间(逻辑上)共享的中央数据库。 但是为了确保升级后的控制平面仍然可以与运行先前版本的 nova-compute 进行通信,可以通过对象层访问数据库。因此 nova-compute 代理通过 RPC 将 DB 请求发送到名为 nova-conductor 的中央管理器,而不是直接向数据库发送请求
创建虚拟机的流程
通过创建一个虚拟机的核心流程可以更好地理解 Nova 各个子服务如何协同工作
- 客户 (可以是 OpenStack 最终用户,也可以是其他程序) 向 API (nova-api) 发送请求:“创建一个虚拟机”
- API 对请求做一些必要处理后,向 Messaging (RabbitMQ) 发送了一条消息:“让 Scheduler 创建一个虚拟机”
- Scheduler (nova-scheduler) 从 Messaging 获取到 API 发给它的消息,然后执行调度算法,从若干计算节点中选出节点 A
- Scheduler 向 Messaging 发送了一条消息:“在计算节点 A 上创建这个虚机”
- 计算节点 A 的 Compute (nova-compute) 从 Messaging 中获取到 Scheduler 发给它的消息,然后在本节点的 Hypervisor 上启动虚机
- 在虚机创建的过程中,Compute 如果需要查询或更新数据库信息,会通过 Messaging 向 Conductor (nova-conductor )发送消息,Conductor 负责数据库访问
OpenStack Nova的更多相关文章
- OpenStack nova VM migration (live and cold) call flow
OpenStack nova compute supports two flavors of Virtual Machine (VM) migration: Cold migration -- mig ...
- 如何删除 OpenStack Nova 僵尸实例
转自:http://www.vpsee.com/2011/11/how-to-delete-a-openstack-nova-zombie-instance/ 前天强制重启一台 OpenStack N ...
- OpenStack Nova 制作 Windows 镜像
OpenStack Nova 制作 Windows 镜像 windows虚拟机ubuntuimage防火墙云计算 本贴转自http://www.vpsee.com 上次 VPSee 给 OpenS ...
- 深挖Openstack Nova - Scheduler调度策略
深挖Openstack Nova - Scheduler调度策略 一. Scheduler的作用就是在创建实例(instance)时,为实例选择出合适的主机(host).这个过程分两步:过滤(F ...
- OpenStack Nova Release(Rocky to Train)
目录 文章目录 目录 前言 演进方向 Cellv2 更新 Rocky Support disabling a cell Stein Handling a down cell Train Count q ...
- OpenStack Nova 高性能虚拟机之 CPU 绑定
目录 文章目录 目录 前文列表 KVM KVM 的功能列表 KVM 工具集 KVM 虚拟机的本质是什么 vCPU 的调度与性能问题 Nova 支持的 vCPU 绑定 vcpu\_pin\_set 配置 ...
- OpenStack Nova 高性能虚拟机之 NUMA 架构亲和
目录 文章目录 目录 写在前面 计算平台体系结构 SMP 对称多处理结构 NUMA 非统一内存访问结构 MPP 大规模并行处理结构 Linux 上的 NUMA 基本对象概念 NUMA 调度策略 获取宿 ...
- Openstack Nova 源码分析 — 使用 VCDriver 创建 VMware Instance
目录 目录 前言 流程图 nova-compute vCenter 前言 在上一篇Openstack Nova 源码分析 - Create instances (nova-conductor阶段)中, ...
- Openstack Nova 源码分析 — Create instances (nova-conductor阶段)
目录 目录 前言 Instance Flavor Instance Status Virt Driver Resource Tracker nova-conductor Create Instance ...
随机推荐
- Java后台+数据库+Java web前端——记账本
下面是本人实现的网页版(设计思路见上一篇https://www.cnblogs.com/sengzhao666/p/10445984.html) 代码如下: 运行截图: 首页: 创建: 账本删除:(先 ...
- centos 启动一个tcp服务程序
需要先yum安装: yum install nc 启动服务: nc -l 80
- Python复杂对象转JSON
Python复杂对象转JSON在Python对于简单的对象转json还是比较简单的,如下: import json d = {'a': 'aaa', 'b': ['b1', 'b2', 'b3'], ...
- CentOS系统安装Python3
准备: CentOS 6.4系统 Python-3.6.5.tgz 下载地址: 官网:https://www.python.org/downloads/release/python-365/ 镜像:h ...
- WPF中绘图(含调用GDI+)
private void DrawStuff() { // //if (buffer == null) //{ // buffer = new RenderTargetBitmap((int)Back ...
- ABP中文网的一些BUG
之前一些翻译了的文档没有及时更新.比如 IAsyncCrudAppService接口在很久之前的版本就已经改为了ICrudAppService,如果是在官网下载的最新实例中IAsyncCrudAppS ...
- Python【day 10】函数进阶-动态函数
形参小结 1.位置参数2.默认值参数3.动态参数 1.*args 位置参数的动态传参. 系统会自动的把所有的位置参数聚合成元组 2.**kwargs 关键字参数的动态传参. 系统会自动的把所有的关键字 ...
- 机器学习实战:基于Scikit-Learn和TensorFlow 第5章 支持向量机 学习笔记(硬间隔)
数据挖掘作业,需要实现支持向量机进行分类,记录学习记录 环境:win10,Python 3.7.0 SVM的基本思想:在类别之间拟合可能的最宽的间距,也叫作最大间隔分类 书上提供的源代码绘制了两个图, ...
- i春秋暑期训练营丨渗透测试工程师开课啦
每个人的夏天 都有专属的解锁方式 或来一次难忘的旅行 或躺在家里吹着空调吃西瓜 又或者是和小伙伴参加暑期训练营 i春秋暑期渗透测试工程师 报名通道已全部开启 为了保证课程质量,采取小班教学,每班仅限3 ...
- WPF 枚举使用
1.model class JX_Unit { public enum SumUnit { KW = 1, L = 2, Kt = 3, } } 2.viewModel public string w ...