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. Serializable接口的意义和用法

    本人软件工程大三妹子一枚,以下为个人观点仅供参考: 最近在云课堂学习springmvc+mybatis项目时,发现老师在实体类中引用了serializable这个接口,如下:   import jav ...

  2. Docker 下开发安装hyperf

    Docker 下开发hyperf # 下载并运行 hyperf/hyperf 镜像,并将镜像内的项目目录绑定到宿主机的 /tmp/skeleton 目录 docker run -v /tmp/skel ...

  3. python I/O复用

    select是阻塞式的方法

  4. //某父元素(.class)底下相同class的第二的取值

    //某父元素(.class)底下相同class的第二的取值 var v = $('.cell-right').find(".startime").eq(1).val();

  5. 【转】测试开发工程师必备软硬能力&高级测试开发工程师需要具备什么能力?

    对于测试的基本知识,可以查看软件测试相关书籍 对于在公司成为一位优秀的测试开发工程师,我觉得下面这篇文章涉及到的是我们需要的,稍微进行改动https://blog.csdn.net/sinat_210 ...

  6. c++和java的一些debug方法

    就上面那个绿色的小瓢虫,点了就进了debug模式. 好尴尬啊,就说一句话. 而且,要加断点,不然就一下debug完了.

  7. Linux用户和权限——权限管理

    Linux用户和权限——权限管理 摘要:本文主要介绍了Linux系统中权限的分类,以及对权限的管理. 用户的三种身份 所有者 由于Linux是个多人多工的系统,因此可能常常会有多人同时使用这部主机来进 ...

  8. SpringBoot打可执行war包

    1. 主程序类: @SpringBootApplication public class Application extends SpringBootServletInitializer { @Ove ...

  9. 入职一个月后 对.net的感想

    我本来应该找Java工程师的岗位的,因种种原因进入了.net开发工程师.然后,我进入了一扇新世界的大门. 1.语法不同,思想相同. 刚入职那几天,每天都好蒙,.net代码语法啥的都和Java不一样,a ...

  10. SPC软控件提供商NWA的产品在各行业的应用(石油天然气行业)

    Northwest Analytical (NWA)是全球领先的“工业4.0”制造分析SPC软件控件提供商.产品(包含: NWA Quality Analyst , NWA Focus EMI 和 N ...