文章目录

  • Nova
  • Nova架构
  • Nava组件
    • nova-api
    • nova-compute
    • nova-conductor
    • nova-scheduler
    • nova-novncproxy
  • 创建虚拟机流程

Nova

Nova是OpenStack最核心的服务模块,负责管理和维护云计算环境的计算资源,负责整个云环境虚拟机生命周期的管理。

Nova自身并没有提供任何虚拟化能力,它提供计算服务,使用不同的虚拟化驱动来与底层支持的Hypervisor(虚拟机管理器)进行交互。

所有的计算实例(虚拟服务器)由Nova进行生命周期的调度管理(启动、挂起、停止、删除等),Nova还需要keystone、glance、neutron、cinder和swift等其他服务的支持,能与这些服务集成,实现如加密磁盘、裸金属计算实例等。

Nova架构

  • API:用于接收HTTP请求、转换命令、通过消息队列或HTTP与其他组件通信。

  • Conductor:处理需要协调(构建虚拟机或调整虚拟机大小)的请求,充当数据库代理或者处理对象转换。

  • Scheduler:用于决定哪台计算节点承载计算实例。

  • Compute:管理虚拟机管理器与虚拟机之间通信。

  • DB:用于数据存储的SQL数据库,通常是MariaDB。

Nava组件

nova-api

nova-api 作为 Nova 组件对外的唯一窗口,向客户暴露 Nova 能够提供的功能。 当客户需要执行虚机相关的操作,能且只能向 nova-api 发送 REST 请求。

设计 API 前端服务的好处在于: 1. 对外提供统一接口,隐藏实现细节 2. API 提供 REST 标准调用服务,便于与第三方系统集成 3. 可以通过运行多个 API 服务实例轻松实现 API 的高可用,比如运行多个 nova-api 进程

nova-compute

nova-compute 在计算节点上运行,负责管理节点上的实例。OpenStack 对实例的操作,最后都是交给 nova-compute 来完成。nova-compute 与 Hypervisor 一起实现 OpenStack 对实例生命周期的管理。

nova-compute 的功能可以分为两类:

  • 定时向 OpenStack 报告计算节点的状态

    每隔一段时间,nova-compute 就会报告当前计算节点的资源使用情况和 nova-compute 服务状态。这样OpenStack 就能得知每个计算节点的 vcpu、ram、disk 等信息。nova-scheduler 的很多 Filter 才能根据计算节点的资源使用情况进行过滤,选择符合 flavor 要求的计算节点。

  • 实现实例生命周期的管理

    OpenStack 对实例最主要的操作都是通过 nova-compute 实现的,包括实例的启动、关闭、重启、暂停、恢复、删除、调整实例大小、迁移、创建快照等。

nova-conductor

为计算节点提供数据库访问支持。

nova-compute服务和数据库之间的中间件。

  • 实现更高的系统安全性

    在 OpenStack 的早期版本中,nova-compute 可以直接访问数据库,但这样存在非常大的安全隐患。因为 nova-compute 这个服务是部署在计算节点上的,为了能够访问控制节点上的数据库,就必须在计算节点的 /etc/nova/nova.conf 中配置访问数据库的连接信息。如果任意一个计算节点被黑客入侵,都会导致部署在控制节点上的数据库面临极大风险。

    为了解决这个问题,从 G 版本开始,Nova 引入了一个新服务 nova-conductor,将 nova-compute 访问数据库的全部操作都放到 nova-conductor 中,而且 nova-conductor 是部署在控制节点上的。这样就避免了 nova-compute 直接访问数据库,增加了系统的安全性。

  • 实现更好的系统伸缩性

    nova-compute 与 nova-conductor 是通过消息中间件交互的。这种松散的架构允许配置多个 nova-conductor 实例。在一个大规模的 OpenStack 部署环境里,管理员可以通过增加 nova-conductor 的数量来应对日益增长的计算节点对数据库的访问。

nova-scheduler

将创建新虚拟机的请求分发到正确的节点。

当创建实例时,用户会提出资源需求,例如 CPU、内存、磁盘各需要多少。OpenStack 将这些需求定义在 flavor 中,用户只需要指定用哪个 flavor 就可以了。nova-scheduler 会按照 flavor 去选择合适的计算节点。

FilterScheduler调度过程分为两步:

  • 通过过滤(filtering)选择满足条件的计算节点。
  • 通过权重计算(weighting)选择在最优(权重值最大)的计算节点上创建实例。

nova-novncproxy

为浏览器提供VNC代理,允许VNC控制台访问虚拟机。

创建虚拟机流程

#mermaid-svg-Ep6iPCsToVXxyu0W {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Ep6iPCsToVXxyu0W .error-icon{fill:#552222;}#mermaid-svg-Ep6iPCsToVXxyu0W .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Ep6iPCsToVXxyu0W .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-Ep6iPCsToVXxyu0W .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Ep6iPCsToVXxyu0W .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Ep6iPCsToVXxyu0W .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Ep6iPCsToVXxyu0W .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Ep6iPCsToVXxyu0W .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Ep6iPCsToVXxyu0W .marker.cross{stroke:#333333;}#mermaid-svg-Ep6iPCsToVXxyu0W svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Ep6iPCsToVXxyu0W .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-Ep6iPCsToVXxyu0W text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-Ep6iPCsToVXxyu0W .actor-line{stroke:grey;}#mermaid-svg-Ep6iPCsToVXxyu0W .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-Ep6iPCsToVXxyu0W .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-Ep6iPCsToVXxyu0W #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-Ep6iPCsToVXxyu0W .sequenceNumber{fill:white;}#mermaid-svg-Ep6iPCsToVXxyu0W #sequencenumber{fill:#333;}#mermaid-svg-Ep6iPCsToVXxyu0W #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-Ep6iPCsToVXxyu0W .messageText{fill:#333;stroke:#333;}#mermaid-svg-Ep6iPCsToVXxyu0W .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-Ep6iPCsToVXxyu0W .labelText,#mermaid-svg-Ep6iPCsToVXxyu0W .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-Ep6iPCsToVXxyu0W .loopText,#mermaid-svg-Ep6iPCsToVXxyu0W .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-Ep6iPCsToVXxyu0W .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-Ep6iPCsToVXxyu0W .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-Ep6iPCsToVXxyu0W .noteText,#mermaid-svg-Ep6iPCsToVXxyu0W .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-Ep6iPCsToVXxyu0W .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-Ep6iPCsToVXxyu0W .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-Ep6iPCsToVXxyu0W .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-Ep6iPCsToVXxyu0W .actorPopupMenu{position:absolute;}#mermaid-svg-Ep6iPCsToVXxyu0W .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-Ep6iPCsToVXxyu0W .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-Ep6iPCsToVXxyu0W .actor-man circle,#mermaid-svg-Ep6iPCsToVXxyu0W line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-Ep6iPCsToVXxyu0W :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}AdminKeystonenova_apinova_schedulernova_computenova_conductorglanceneutronCinderhypervisor创建VM申请获得token创建VM请求 + token验证token通过验证创建VM数据库记录请求创建虚拟机计算出符合虚拟机创建的主机更新相应虚拟机的物理机信息请求创建VM获取虚拟机信息返回虚拟机信息请求VM所需镜像+token返回VM镜像信息请求VM所需网络+token返回VM网络信息请求VM所需存储+token返回VM存储信息创建VMAdminKeystonenova_apinova_schedulernova_computenova_conductorglanceneutronCinderhypervisor

OpenStack — Nova相关推荐

  1. [网摘学习]在Ubuntu上安装和配置OpenStack Nova之二

    再收藏一份Openstack的文章,这两天的操作与此相同.但其中出现的问题还需要查找原因.待个人继续学习研究. 原文参考:http://www.linuxde.net/2011/11/1599.htm ...

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

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

  3. OpenStack Nova核心组件和RabbitMQ通信流程分析

    前言 云计算从资源提供类型可以分为 IaaS(基础设施即服务) PaaS(平台即服务)和 SaaS(软件即服务)三层. IaaS和PaaS相辅相成,目前云计算商业领域的各大公有云厂商一般都会提供Iaa ...

  4. OpenStack Nova hacking和读书笔记

    OpenStack Nova 设计与实现 1. Nova OpenStack采用一种无共享的.基于消息队列的架构,解耦的各模块组合在一起构成了一个统一的IaaS云. Nova是OpenStack生态中 ...

  5. openstack nova 分析笔记

    原文地址:https://blog.csdn.net/u010827484/article/details/82627646 Openstack Nova 分析笔记

  6. 云系列---Openstack Nova组件 | 参数说明 | 详细讲解

    Openstack Nova组件 一.Nova 概念 二.Nova 系统架构 三.Nova 组件详讲 1.API 讲解 2.Scheduler 讲解 调度器类型 过滤调度器调度过程 过滤器类型 Sch ...

  7. 在Ubuntu上安装和配置OpenStack Nova

    OpenStack 是由 Rackspace 和 NASA 共同开发的云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as ...

  8. openstack详解(十七)——openstack Nova其他配置

    今天继续给大家介绍Linux运维相关知识,本文主要内容是openstack Nova其他配置. 一.Nova Keystone配置 在上文openstack详解(十六)--openstack Nova ...

  9. openstack详解(十五)——openstack Nova节点基本原理

    今天继续给大家介绍Linux运维相关知识,本文主要内容是openstack Nova节点基本原理. 一.Openstack Nova节点简介 Nova是openstack中最早出现的模块之一,主要是为 ...

  10. openstack详解(十六)——openstack Nova安装与数据库配置

    今天继续给大家介绍Linux运维相关知识,本文主要内容是openstack Nova安装与配置. 一.Nova节点安装 Nova节点的安装是在Keystone节点成功安装的基础上进行的.Keyston ...

最新文章

  1. 你为什么“啃不动”你手中的技术书?
  2. ucosII移植要修改的文件
  3. 【技术培训】招收Jeecg门徒 ---javaweb初级入门班
  4. Markdown--编辑表格与矩阵
  5. 缩略图修复_如何解决SOLIDWORKS不显示缩略图预览的方法?
  6. php操作mysql数据库的扩展有哪些_PHP mysql 扩展库 操作mysql数据库步骤
  7. Mac下ndk交叉编译arm平台程序
  8. 【渝粤教育】广东开放大学 集体谈判与集体合同 形成性考核 (30)
  9. 如何在ECLIPSE中使用MVN CLEAN INSTALL
  10. linux socket监听端口,Linux-socket使用
  11. 教你用illustrator画十二色环
  12. 用几何画板演示高尔顿钉板动画
  13. marlin固件烧录教程_marlin固件中文(marlin固件下载)【配置教程】
  14. 黑客小C小游戏(DEVC++)时不时会更新
  15. opencv实现两张图片叠加
  16. NIT考试感想与复习unity基础
  17. 脱了裤子放屁之std::string
  18. Debezium系列之:使用Debezium接入SQL Server数据库数据到Kafka集群的详细技术文档
  19. 《操作系统真象还原》源代码
  20. “澳本聪”是怎么从网红一步步变成“众矢之的”?

热门文章

  1. 消除数据信息碎片化 打通大数据应用“最后一公里”
  2. 计算机岗位需要具备什么技能点
  3. 软考 信息系统管理工程师和系统集成项目管理工程师有什么区别?
  4. 92年出生的大龄程序员
  5. translation翻译插件下载及翻译失败解决
  6. SQL-正序倒序查询
  7. E: The repository ‘http://ppa.launchpad.net/appimagelauncher-team/stable/ubuntu bionic Release‘ does
  8. [运维]cAdvisor 使用教程
  9. 极客时间学习笔记☞《苏杰的产品创新课》(三)
  10. Unity制作扫雷游戏