目录

前文列表

Openstack组件部署 — Overview和前期环境准备

Openstack组建部署 — Environment of Controller Node

Openstack组件部署 — Keystone功能介绍与认证实现流程

Openstack组件部署 — Keystone Install & Create service entity and API endpoints

Openstack组件部署 — keystone(domain, projects, users, and roles)

Openstack组件实现原理 — Keystone认证功能

Openstack组建部署 — Glance Install

Openstack组件实现原理 — Glance架构(V1/V2)

Openstack组件部署 — Nova overview

Openstack组件部署 — Nova_安装和配置Controller Node

Openstack组件部署 — Nova_Install and configure a compute node

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来实现的。这符合松耦合的实现方式。

Openstack组件实现原理 — Nova 体系结构的更多相关文章

  1. Openstack组件实现原理 — OpenVswitch/Gre/vlan

    目录 目录 前文提要 Neutron 管理的网络相关实体 OpenVswitchOVS OVS 的架构 VLan GRE 隧道 Compute Node 中的 Instance 通过 GRE 访问 P ...

  2. Openstack组件实现原理 — Keystone认证功能

    目录 目录 前言 Keystone安装列表 Keystone架构 Keystone的管理对象 一个理解Keystone管理对象功能的例子 Keystone管理对象之间的关系 Keystone V3的新 ...

  3. Openstack组件实现原理 — Glance架构(V1/V2)

    目录 目录 Glance 安装列表 Glance Image service Image service 的组件 Glance-Api Glance-Registry Glance-db Image ...

  4. Openstack组件部署 — Networking service_Compute Node

    目录 目录 前文列表 安装组件 配置通用组件 配置自服务网络选项 配置Linux 桥接代理 配置Nova使用网络 完成安装 验证操作Execute following commands on Cont ...

  5. Openstack组件部署 — Networking service_安装并配置Controller Node

    目录 目录 前文列表 前提条件 网络环境 完成下面的步骤以创建数据库 创建service credentials服务凭证 创建Neutron的API Endpoints 配置自服务网络 安装网络组件 ...

  6. Openstack组件部署 — Netwotking service组件介绍与网络基本概念

    目录 目录 前文列表 Openstack Networking serivce 基本的Neutron概念 Neutron的抽象对象 网络networks 子网subnets 路由器routers 端口 ...

  7. Openstack组件部署 — Nova_Install and configure a compute node

    目录 目录 前文列表 Prerequisites 先决条件 Install and configure a compute node Install the packages Edit the etc ...

  8. Openstack组件部署 — Nova_安装和配置Controller Node

    目录 目录 前文列表 Prerequisites 先决条件 To create the databases To create the service credentials Create the C ...

  9. OpenStack组件——Nova计算资源管理

    1.nova介绍 Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的. ...

随机推荐

  1. Android Studio的Gradle错误解决方法

    因为喜欢尝鲜,试了一下google的Android studio,但是在创建工程时,出现了尝试连接service.gradle.org错误的问题,查了一下,在StackOverFlow找到以下答案: ...

  2. Django中ORM对数据库的增删改查操作

         前言 什么是ORM?  ORM(对象关系映射)指用面向对象的方法处理数据库中的创建表以及数据的增删改查等操作. 简而言之,就是将数据库的一张表当作一个类,数据库中的每一条记录当作一个对象.在 ...

  3. Vue的安装和使用详解(一)

    Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与 ...

  4. HTML5: HTML5 表单元素

    ylbtech-HTML5: HTML5 表单元素 1.返回顶部 1. HTML5 表单元素 HTML5 新的表单元素 HTML5 有以下新的表单元素: <datalist> <ke ...

  5. 2017《Java学习》第二次作业 计科1502任秀兴

    学习git总结 安装git 1. 安装完成后执行命令git --version查看版本 2.执行命令git config --global user.nam "你的用户名",执行命 ...

  6. 03 java语言基础逻辑运算符

    03.01_Java语言基础(逻辑运算符的基本用法) A:逻辑运算符有哪些 &,|,^,! &&,|| B:案例演示 逻辑运算符的基本用法 注意事项: a:逻辑运算符一般用于连 ...

  7. Struts1.3——使用MyEclipse集成工具开发Struts

    前面两篇通过手工写代码,手工配置struts-config.xml文件的方法来开发了一个最简单的struts项目,通过手工的方式旨在学习底层原理细节.当熟悉了以后,我们就不需要再通过纯手工的方式来开发 ...

  8. pandas 使用出现的问题汇总

    问题1:<bound method NDFrame.head of 刚开始还以为是自己的数据集有问题,怎么显示不对呢! 解决: 仔细观察,是自己给的输出有问题,data.head什么鬼??? 正 ...

  9. JOGL教程

    本章介绍了OpenGL,Java OpenGL绑定(GL4java,LWJGL,JOGL)和JOGL比其他的OpenGL的优点. Java支持OpenGL(JOGL)是近期在Java OpenGL图形 ...

  10. shell-#!

    当shell执行一个程序时,会要求UNIX内核启动一个新的进程,以便在该进程里执行所指定的程序. 当系统只有一个shell时,退回到/bin/sh 的机制非常方便,但现行的UNIX系统都会拥有好几个s ...