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 各个子服务如何协同工作

  1. 客户 (可以是 OpenStack 最终用户,也可以是其他程序) 向 API (nova-api) 发送请求:“创建一个虚拟机”
  2. API 对请求做一些必要处理后,向 Messaging (RabbitMQ) 发送了一条消息:“让 Scheduler 创建一个虚拟机”
  3. Scheduler (nova-scheduler) 从 Messaging 获取到 API 发给它的消息,然后执行调度算法,从若干计算节点中选出节点 A
  4. Scheduler 向 Messaging 发送了一条消息:“在计算节点 A 上创建这个虚机”
  5. 计算节点 A 的 Compute (nova-compute) 从 Messaging 中获取到 Scheduler 发给它的消息,然后在本节点的 Hypervisor 上启动虚机
  6. 在虚机创建的过程中,Compute 如果需要查询或更新数据库信息,会通过 Messaging 向 Conductor (nova-conductor )发送消息,Conductor 负责数据库访问

OpenStack Nova的更多相关文章

  1. OpenStack nova VM migration (live and cold) call flow

    OpenStack nova compute supports two flavors of Virtual Machine (VM) migration: Cold migration -- mig ...

  2. 如何删除 OpenStack Nova 僵尸实例

    转自:http://www.vpsee.com/2011/11/how-to-delete-a-openstack-nova-zombie-instance/ 前天强制重启一台 OpenStack N ...

  3. OpenStack Nova 制作 Windows 镜像

    OpenStack Nova 制作 Windows 镜像   windows虚拟机ubuntuimage防火墙云计算 本贴转自http://www.vpsee.com 上次 VPSee 给 OpenS ...

  4. 深挖Openstack Nova - Scheduler调度策略

    深挖Openstack Nova - Scheduler调度策略   一.  Scheduler的作用就是在创建实例(instance)时,为实例选择出合适的主机(host).这个过程分两步:过滤(F ...

  5. OpenStack Nova Release(Rocky to Train)

    目录 文章目录 目录 前言 演进方向 Cellv2 更新 Rocky Support disabling a cell Stein Handling a down cell Train Count q ...

  6. OpenStack Nova 高性能虚拟机之 CPU 绑定

    目录 文章目录 目录 前文列表 KVM KVM 的功能列表 KVM 工具集 KVM 虚拟机的本质是什么 vCPU 的调度与性能问题 Nova 支持的 vCPU 绑定 vcpu\_pin\_set 配置 ...

  7. OpenStack Nova 高性能虚拟机之 NUMA 架构亲和

    目录 文章目录 目录 写在前面 计算平台体系结构 SMP 对称多处理结构 NUMA 非统一内存访问结构 MPP 大规模并行处理结构 Linux 上的 NUMA 基本对象概念 NUMA 调度策略 获取宿 ...

  8. Openstack Nova 源码分析 — 使用 VCDriver 创建 VMware Instance

    目录 目录 前言 流程图 nova-compute vCenter 前言 在上一篇Openstack Nova 源码分析 - Create instances (nova-conductor阶段)中, ...

  9. Openstack Nova 源码分析 — Create instances (nova-conductor阶段)

    目录 目录 前言 Instance Flavor Instance Status Virt Driver Resource Tracker nova-conductor Create Instance ...

随机推荐

  1. Java后台+数据库+Java web前端——记账本

    下面是本人实现的网页版(设计思路见上一篇https://www.cnblogs.com/sengzhao666/p/10445984.html) 代码如下: 运行截图: 首页: 创建: 账本删除:(先 ...

  2. centos 启动一个tcp服务程序

    需要先yum安装: yum install nc 启动服务: nc -l 80

  3. Python复杂对象转JSON

    Python复杂对象转JSON在Python对于简单的对象转json还是比较简单的,如下: import json d = {'a': 'aaa', 'b': ['b1', 'b2', 'b3'], ...

  4. CentOS系统安装Python3

    准备: CentOS 6.4系统 Python-3.6.5.tgz 下载地址: 官网:https://www.python.org/downloads/release/python-365/ 镜像:h ...

  5. WPF中绘图(含调用GDI+)

    private void DrawStuff() { // //if (buffer == null) //{ // buffer = new RenderTargetBitmap((int)Back ...

  6. ABP中文网的一些BUG

    之前一些翻译了的文档没有及时更新.比如 IAsyncCrudAppService接口在很久之前的版本就已经改为了ICrudAppService,如果是在官网下载的最新实例中IAsyncCrudAppS ...

  7. Python【day 10】函数进阶-动态函数

    形参小结 1.位置参数2.默认值参数3.动态参数 1.*args 位置参数的动态传参. 系统会自动的把所有的位置参数聚合成元组 2.**kwargs 关键字参数的动态传参. 系统会自动的把所有的关键字 ...

  8. 机器学习实战:基于Scikit-Learn和TensorFlow 第5章 支持向量机 学习笔记(硬间隔)

    数据挖掘作业,需要实现支持向量机进行分类,记录学习记录 环境:win10,Python 3.7.0 SVM的基本思想:在类别之间拟合可能的最宽的间距,也叫作最大间隔分类 书上提供的源代码绘制了两个图, ...

  9. i春秋暑期训练营丨渗透测试工程师开课啦

    每个人的夏天 都有专属的解锁方式 或来一次难忘的旅行 或躺在家里吹着空调吃西瓜 又或者是和小伙伴参加暑期训练营 i春秋暑期渗透测试工程师 报名通道已全部开启 为了保证课程质量,采取小班教学,每班仅限3 ...

  10. WPF 枚举使用

    1.model class JX_Unit { public enum SumUnit { KW = 1, L = 2, Kt = 3, } } 2.viewModel public string w ...