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 ...
随机推荐
- 数据仓库005 - 复习Linux shell命令 - crontab调度 sh脚本 后台执行 软连接
一.crontab调度 对于linux 自带crontab而言, xxx.sh的一般编写格式以#!/bin/bash 解释器开头,可在脚本中加入: date 但是,shell脚本执行 需要 ...
- what is variable?
what is variable? variable:pytorch中的变量,存储tensor,数值会不断变动 在 Torch 中的 Variable 就是一个存放会变化的值的地理位置. 里面的值会不 ...
- centos 文本文件编码转换
iconv -f utf-8 -t gbk shtel_single_utf8.mlf > shtel_single_gbk.mlf
- redis 阻塞原因
1.内因: A.api或数据结构使用不合理: 如:对一个包含上万元素的hash结构执行hgetall操作,数据量大且命令复杂度O(n),必然阻塞 B.慢查询:前面有介绍 C.大对象: 执行./redi ...
- virsh console配置
If you're trying to get to the console, you can either use virt-viewer for the graphical console or ...
- 练手WPF(四)——贪吃蛇小游戏的简易实现(上)
一. 游戏界面首先,按照惯例,编辑MainWindow.xaml,先将游戏界面制作好.非常简单:(1)主游戏区依然使用我们熟悉的Canvas控件,大小为640X480像素,设定每小格子为20px,所以 ...
- Delphi - 16进制取反 Not
//Not直接实现十六进制取反var I, J : word; begin I := $96E5; J := Not I; ShowMessage(Format('%x',[J])); end; 作者 ...
- charles代理设置与数据劫持
1.安装charles,点击帮助——ssl代理——在移动设备或远程浏览器上安装charles root证书,看到如下界面: 2.在手机保证和电脑连接同一个wifi的前提下,开启手机代理,输入服务器地址 ...
- Alpha七天冲刺
一. 原计划冲刺甘特图 二. 七天冲刺博客 1. https://www.cnblogs.com/liujiamei/p/11870107.html 2. https://www.cnblogs.co ...
- HeadFirst设计模式---观察者
表达公式 注册者 + 订阅者 = 观察者模式 设计气象站 气象站接口 /** ** 布告板 ** @author lollipop ** @since 2019/11/24 **/ public in ...