Openstack-nove

  • 一、nova介绍:
  • 二. Nova 架构
    • 1.API
    • 2.Compute Core
    • 3.Console Interface
    • 4.Database
    • 5.Message Queue
  • 三.Nova 组件如何协同工作
    • 1.Nova 物理部署方案
    • 2.从虚机创建流程看 nova-* 子服务如何协同工作

一、nova介绍:

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

用途与功能 :

  1. 实例生命周期管理
  2. 管理计算资源
  3. 网络和认证管理
  4. REST 风格的 API
  5. 异步的一致性通信
    6)Hypervisor 透明:支持Xen,XenServer/XCP,KVM, UML, VMware vSphere and Hyper-V

在上图中可以看到,Nova 处于 Openstak 架构的中心,其他组件都为 Nova 提供支持: Glance 为 VM 提供 image Cinder 和 Swift 分别为 VM 提供块存储和对象存储 Neutron 为 VM 提供网络连接。

二. Nova 架构

Nova 的架构比较复杂,包含很多组件。 这些组件以子服务(后台 deamon 进程)的形式运行,可以分为以下几类:

1.API

nova-api
是整个 Nova 组件的门户,接收和响应客户的 API 调用。所有对 Nova 的请求都首先由 nova-api 处理。nova-api 向外界暴露若干 HTTP REST API 接口 在 keystone 中我们可以查询 nova-api 的 endponits。

客户端就可以将请求发送到 endponits 指定的地址,向 nova-api 请求操作。 当然,作为最终用户的我们不会直接发送 Rest AP I请求。 OpenStack CLI,Dashboard 和其他需要跟 Nova 交换的组件会使用这些 API。

Nova-api 对接收到的 HTTP API 请求会做如下处理:

  1. 检查客户端传入的参数是否合法有效
  2. 调用 Nova 其他子服务的处理客户端 HTTP 请求
  3. 格式化 Nova 其他子服务返回的结果并返回给客户端

nova-api 接收哪些请求?
简单的说,只要是跟虚拟机生命周期相关的操作,nova-api 都可以响应。 大部分操作都可以在 Dashboard 上找到。打开Instance管理界面

除了提供 OpenStack 自己的API,nova-api 还支持 Amazon EC2 API。 也就是说,如果客户以前使用 Amazon EC2,并且用 EC2 的 API 开发了些工具来管理虚机,那么如果现在要换成 OpenStack,这些工具可以无缝迁移到 OpenStack,因为 nova-api 兼容 EC2 API,无需做任何修改。

2.Compute Core

1.nova-scheduler:
虚机调度服务,负责决定在哪个计算节点上运行虚机。 创建 Instance 时,用户会提出资源需求,例如 CPU、内存、磁盘各需要多少。OpenStack 将这些需求定义在 flavor 中,用户只需要指定用哪个 flavor 就可以了。

可用的 flavor 在 System->Flavors 中管理。
下面介绍 nova-scheduler 是如何实现调度的。在 /etc/nova/nova.conf 中,nova 通过 d river=filter_scheduler 这 个参数来配置 nova-scheduler。

driver=filter_scheduler

Filter scheduler 是 nova-scheduler 默认的调度器,调度过程分为两步:

  1. 通过过滤器(filter)选择满足条件的计算节点(运行 nova-compute)
  2. 通过权重计算(weighting)选择在最优(权重值最大)的计算节点上创建 Instance。

Nova 允许使用第三方 scheduler,配置 scheduler_driver 即可。 这又一次体现了OpenStack的开放性。Scheduler 可以使用多个 filter 依次进行过滤,过滤之后的节点再通过计算权重选出最适合的节点。

2.nova-compute:
nova-compute 是管理虚机的核心服务,在计算节点上运行。通过调用Hypervisor API实现节点上的 instance的生命周期管理。 OpenStack 对 instance 的操作,最后都是交给 nova-compute 来完成的。 nova-compute 与 Hypervisor 一起实现 OpenStack 对 instance 生命周期的管理。

通过Drive1r架构支持多种Hypervisor
Hyp
前面大家已经看到 Nova 由很多子服务组成,我们也知道 OpenStack 是一个分布式系统,可以部署到若干节点上,那么接下来大家可能就会问:Nova 的这些服务在物理上应该如何部署呢?

对于 Nova,这些服务会部署在两类节点上:计算节点和控制节点。

计算节点上安装了 Hypervisor,上面运行虚拟机。 由此可知:

  1. 只有 nova-compute 需要放在计算节点上。
  2. 其他子服务则是放在控制节点上的。

下面我们可以看看实验环境的具体部署情况。 通过在计算节点和控制节点上运行
ps -elf | grep nova 来查看运行的 nova 子服务

计算节点compute只运行了nova-compute子服务

3.nova—conductor
nova-compute 经常需要更新数据库,比如更新和获取虚机的状态。 出于安全性和伸缩性的考虑,nova-compute 并不会直接访问数据库,而是将这个任务委托给 nova-conductor。

3.Console Interface

nova-console: 用户可以通过多种方式访问虚机的控制台:
nova-novncproxy: 基于 Web 浏览器的 VNC 访问
nova-spicehtml5proxy: 基于 HTML5 浏览器的 SPICE 访问
nova-xvpnvncproxy: 基于 Java 客户端的 VNC 访问
nova-consoleauth: 负责对访问虚机控制台请求提供 Token 认证
nova-cert: 提供 x509 证书支持

4.Database

Nova 会有一些数据需要存放到数据库中,一般使用 MySQL。数据库安装在控制节点上。 Nova 使用命名为 “nova” 的数据库。

5.Message Queue

在前面我们了解到 Nova 包含众多的子服务,这些子服务之间需要相互协调和通信。为解耦各个子服务,Nova 通过 Message Queue 作为子服务的信息中转站。 所以在架构图上我们看到了子服务之间没有直接的连线,是通过 Message Queue 联系的。

三.Nova 组件如何协同工作

1.Nova 物理部署方案

前面大家已经看到 Nova 由很多子服务组成,我们也知道 OpenStack 是一个分布式系统,可以部署到若干节点上,那么接下来大家可能就会问:Nova 的这些服务在物理上应该如何部署呢?

对于 Nova,这些服务会部署在两类节点上:计算节点和控制节点。

计算节点上安装了 Hypervisor,上面运行虚拟机。 由此可知:

  1. 只有 nova-compute 需要放在计算节点上。
  2. 其他子服务则是放在控制节点上的。

下面我们可以看看实验环境的具体部署情况。 通过在计算节点和控制节点上运行
ps -elf | grep nova 来查看运行的 nova 子服务

计算节点compute只运行了nova-compute子服务

控制节点controller运行了若干nova-*子服务

RabbitMQ 和 MySQL 也是放在控制节点上的。可能细心的同学已经发现我们的控制节点上也运行了 nova-compute。 这实际上也就意味着 devstack-controller 既是一个控制节点,同时也是一个计算节点,也可以在上面运行虚机

这也向我们展示了 OpenStack 这种分布式架构部署上的灵活性: 可以将所有服务都放在一台物理机上,作为一个 All-in-One 的测试环境; 也可以将服务部署在多台物理机上,获得更好的性能和高可用。

另外,也可以用 nova service-list 查看 nova-* 子服务都分布在哪些节点上

2.从虚机创建流程看 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-nove相关推荐

  1. OpenStack——nove组件部署

    OpenStack--nove组件部署 一.部署Placement 1.创建数据库实例和用户 2.创建placement服务用户和API的endpoint 3.安装placement服务 4.导入数据 ...

  2. OpenStack计算节点nove启动报错

    OpenStack计算节点nove启动时提示如下错误: [root@c2 ~]# systemctl restart openstack-nova-compute.service Job for op ...

  3. OpenStack组件

    OpenStack的架构及组件(Havana) 服务 项目名 描述 控制台 Horizon 用户通过该服务与OpenStack的各服务进行交互,如启动虚机实例.分配IP地址.设置访问控制等: 计算 N ...

  4. OpenStack常见命令与问题集合

    常用命令 # 查看可用实例类型 openstack flavor list# 查看可用启动镜像 openstack image list# 查看可用网络 openstack network list# ...

  5. 关于云计算--openstack

    22.1 了解云计算 人类基于千年的物种衍变基础,在这个世纪终于有了爆发式的科技成果,尤其这二十年内互联网的发展,更像是一种催化剂,让原本已经热闹的地球更加的沸腾,互联网经济泡沫破灭后的科技研发却变得 ...

  6. open stack——Nove计算服务

    open stack--Nove 一.Nove计算服务 二.Nova系统架构 三.Nova组件介绍 1.API 2.Scheduler 调度器的类型 过滤器调度器调度过程 调度器与DB数据库 过滤器 ...

  7. OpenStack保姆级别安装教程

    安装步骤 OpenStack简介 准备工作 安装NTP服务 安装yum库(所有节点) 提前设置一下环境变量 安装MySQL 安装RabbitMQ 安装Menmcached: 安装etcd: 安装Ope ...

  8. Openstack实验笔记

    Openstack实验笔记 制作人:全心全意 Openstack:提供可靠的云部署方案及良好的扩展性 Openstack简单的说就是云操作系统,或者说是云管理平台,自身并不提供云服务,只是提供部署和管 ...

  9. 云计算服务模型和openstack架构常用模块介绍

    云计算的服务模型 云计算有IaaS(Infrastructure as a Service,基础架构即服务),PaaS(Platform as a Service,平台即服务),SaaS(Softwa ...

  10. openstack——Glance镜像服务

    openstack--Glance 一.Glance镜像服务 1.镜像 2.镜像服务 3.Images API的版本 4.镜像格式 5.镜像状态 6.访问权限 二.Glance架构详解 1.架构图 三 ...

最新文章

  1. 如何规划 ElasticSearch 集群规模和容量?
  2. 【Python】青少年蓝桥杯_每日一题_3.19_约分
  3. java,php,asp,asp.net,ror等几种Web技术对比(第一版本)
  4. Gitlab禁用Gravatar头像
  5. [蓝桥杯2015初赛]移动距离
  6. 字符串重复字符统计c语言,[讨论]精简字符串重复字符程序
  7. Lattice的JTAG编程烧录
  8. clover写入efi_Clover EFI bootloader for Mac(四叶草启动引导工具)
  9. 声网Agora 孙雨润:下一代实时传输体系结构的升级与应用
  10. 台式机Ubuntu20.04系统下安装Tenda U12 无线网卡驱动
  11. 程序员玩游戏之四--娱网棋牌大连打滚子记牌器
  12. 已解决WARNING: There was an error checking the latest version of pip.
  13. H5经纬度百度定位不准问题
  14. Unity5.1 新的网络引擎UNET(十五) Networking 引用--中
  15. 一篇博客教会你写序列化工具
  16. java公社博客_Java面向对象开发学习笔记(二)
  17. SEM测试成像原理与消像散
  18. NFC读写芯片15693协议CLRC663国产替代DP1363F兼容详细对比资料
  19. 安卓手机定时启动钉钉_玩转钉钉自动打卡,从此告别迟到早退
  20. 『每日AI』致敬宇宙大师丨霍金和他的预言

热门文章

  1. 链表的有序集合(java)
  2. 什么是联想能力?如何提高联想能力?
  3. 7.0.高等数学四-隐函数存在定理
  4. 五险一金 | 养老保险的认识
  5. 获取32位的uuid方法
  6. 衰减3dB是什么意思
  7. 高校教室多媒体设备报修管理系统
  8. git pull设置用户名密码
  9. 自建CA给内部网站颁发SSL证书
  10. NVIDIA GeFprce GTX 1080 Ti NVIDIA图形驱动程序版本466.77下载和安装