openstack-nova

这篇具有很好参考价值的文章主要介绍了openstack-nova。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Nova介绍

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

用途与功能:

  • 实例生命周期管理:虚拟机从创建的动作开始,直到被删除,真个过程都是Nova负责调度的。
  • 管理计算资源:   cpu、内存等。
  • 网络和认证管理
  • REST风格的API
  • 异步的一致性通信
  • Hypervisor透明:   支持Xen、XenServer/XCP,  kvm等

架构:

openstack nova,openstack,云计算

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

nova-api

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

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

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

  1. 检查客户端传入的参数是否合法有效。
  2.  格式化Nova其他子服务返回的结果并返回给客户端。 

Nova-api 接收哪些请求?

        简单的说,只要是跟虚拟机生命周期相关的操作,nova-api都可以响应。大部分操作都可以在Dashboard上找到。打开Instance管理界面能看到,先登陆到openstack的管理后台,点击“实例”,能看到当前管理的kvm实例,在动作下拉列表能看到一组操作,这些操作都能通过调用nova-api来实现。

openstack nova,openstack,云计算

 Nova-scheduler

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

openstack是一个大的集群架构,  它下面管理很多kvm虚拟化节点,这些节点叫做“计算节点”。

我们在openstack后台可以配置实例类型(flavor),也就是一个什么样的配置是一条记录,也就是要配置一组“实例的模板”,当用户需要一个具体配置的虚机时,可以从这个实例类型列表中匹配。

openstack nova,openstack,云计算

下面介绍nova-scheduler是如何实现调度的。在/etc/nova/nova.conf中,nova通过driver=filter_scheduler这个参数来配置nova-scheduler。

driver=filter_scheduler

Filter scheduler

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

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

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

openstack nova,openstack,云计算

集群中有6个计算节点,根据用户选择的实例模板配置,筛选支持的计算节点,比如筛选出了4个。怎么获取最优的那一个节点呢?获取资源剩余做多的计算节点,用于启动虚拟机。

当Filter scheduler需要执行调度操作时,会让filter对计算节点进行判断,filter返回True或False。经过前面一堆filter的过滤,nova-scheduler选出了能够部署instance的计算节点。

如果有多个计算节点通过了过滤,那么最终选择哪个节点呢?

Scheduler会对每个计算节点打分,得分最高的获胜。打分的过程就是weight,翻译过来就是计算权重值,那么scheduler是根据什么来计算权重值呢?

目前nova-scheduler的默认实现是根据计算节点空闲的内存量计算权重值:空闲内存越多,权重越大,instance将被部署到当前空闲内存最多的计算节点上。

Nova-compute

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

通过Driver架构支持多种Hypervisor。Hypervisor是计算节点上跑的虚拟化管理程序,虚机管理最底层的程序。不同虚拟化技术提供自己的Hypervisor。常用的Hypervisor有KVM, Xen,VMWare等。nova-compute为这些Hypervisor定义了统一的接口,Hypervisor只需要实现这些接口,就可以Driver的形式即插即用到OpenStack系统中。下面是Nova Driver的架构示意图。

 文章来源地址https://www.toymoban.com/news/detail-780159.html

openstack nova,openstack,云计算

openstack nova,openstack,云计算

上图中的yunwei4机器是一个计算节点,上面部署了nova-compute服务,kvm虚拟机。我们可以创建虚拟机,但是我们不是通过在上面直接执行kvm的命令,而是通过nova-computer。它会调用kvm提供的api去管理instance。

nova-conductor

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

openstack nova,openstack,云计算 

nova-console: 用户可以通过多种方式访问虚机的控制台;

nova-novncproxy: 基于Web浏览器的VNC访问;

nova-spicehtml5proxy: 基于HTML5浏览器的SPICE访问;

nova-xvpnvncproxy:基于java客户端的VNC访问;

nova-consoleauth: 负责对访问虚机控制请求提供Token认证;

nova-cert: 提供x509证书支持;

Database

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

Message Queue

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

openstack nova,openstack,云计算 

 OpenStack默认是用RabbitMQ作为Message Queue。MQ是OpenStack的核心基础组件,我们后面也会详细介绍。

 

二、Nova组件如何协同工作

openstack nova,openstack,云计算

  1. 客户(可以是OpenStack最终客户,也可以是其他程序)向API(nova-api)发送请求:“帮我创建一个虚机”。
  2. API对请求做一些必要处理后,向Messaging(RabbitMQ)发送了一条消息:“让Scheduler创建一个虚机”。
  3. Schedule(nova-schedule)从Messaging获取到API发给它的消息,然后执行调度算法,从若干计算节点中选出节点A。
  4. Schedule向Messaging发送了一条消息: "在计算节点A上创建这个虚机"。
  5. 计算节点A的Compute(nova-compute)从Messaging中获取到Scheduler发给它的消息,然后在本节点的Hypervisor上启动虚机。
  6. 在虚机创建的过程中,Compute如果需要查询或更新数据库信息,会通过Messaging向Conductor(nova-conductor)发送消息,Conductor负责数据库访问。

以上是创建虚机最核心的步骤,这几个步骤向我们展示了nova~* 子服务之间的协作的方式,也体现了OpenStack整个系统的分布式设计思想,掌握了这种思想对我们深入理解Openstack会非常有帮助。

 

三、nova安装配置

创建mysql数据库,一共三个, nova-api、nova、nova-cell0.

创建三个mysql用户并分配权限,能访问上面三个库。

openstack创建一个用户叫nova。给nova用户添加service项目中的角色admin

创建一个nova服务。

openstack nova,openstack,云计算

 创建nova服务端点endpoint,端口8778,要三个,分别是public、internal、admin

openstack nova,openstack,云计算

openstack创建一个用户叫placement。给用户添加service项目中的角色admin 。

创建服务叫placement。

给placement服务创建服务端点,端口8778,要三个,分别是public、internal、admin

当nova和placement配置好了以后,可以安装nova了。

openstack nova,openstack,云计算

修改配置文件 /etc/nova  ,具体看官方文档说明。

启动nova相关的五个服务。

我们分为控制节点和计算节点。一个节点可以即是控制节点又是计算节点,公用nov.conf。

计算节点要配置vnc控制台地址,要确保机器上有kvm等虚拟化。

 

到了这里,关于openstack-nova的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenStack+Ceph集群 计算节点执行nova list提示ERROR (CommandError): You must provide a user name/id

    排错的时候在计算节点执行了 nova list 查看实例情况 结果提示 看来是没有配置keystone鉴权信息的原因 执行 可以打印信息了,虽然还是ERROR的…

    2024年02月11日
    浏览(36)
  • openstack-nova

    Nova是Openstack最核心的服务,负责维护和管理云环境的 计算资源 。OpenStack作为Iaas的云操作系统,虚拟机生命周期管理就是通过Nova来实现的。 用途与功能: 实例生命周期管理:虚拟机从创建的动作开始,直到被删除,真个过程都是Nova负责调度的。 管理计算资源:   cpu、内存

    2024年02月03日
    浏览(30)
  • openstack nova 源码分析

    从 github 下载 Victoria 版本的 Nova 源码 nova/ 文件夹下的目录 最新版的源码如下: nova/ 文件夹下的 python 文件: setup.cfg 配置文件,[entry_points] 小节指定了 nova 各个组件入口 2. nova-api nova-api 对外提供 RESTful API,没有对内的 RPC 。 nova/api/ 目录结构 openstack 目录中包含 WSGI 基础架构的

    2024年02月08日
    浏览(29)
  • OpenStack — Nova

    Nova是OpenStack最核心的服务模块,负责管理和维护云计算环境的计算资源,负责整个云环境虚拟机生命周期的管理。 Nova自身并没有提供任何虚拟化能力,它提供计算服务,使用不同的虚拟化驱动来与底层支持的Hypervisor(虚拟机管理器)进行交互。 所有的计算实例(虚拟服务器

    2023年04月17日
    浏览(22)
  • openstack 之 nova架构,源码剖析

            nova是openstack最核心的服务,负责维护和管理云环境的计算资源。因此,云主机的整个生命周期都是由nova负责的。         负责接收和相应客户的API调用。         nova-schedule         负责决定在哪个计算节点运行虚拟机。         nova-compute         通过调用Hype

    2024年02月09日
    浏览(27)
  • openstack 之 nova调度过程及源码分析

    目录 一.nova-scheduler基本介绍 1.1 基本配置 1.2 调度过程  二. nova-scheduler调度过程源码剖析 2.1 /nova/scheduler/filter_scheduler.py/FilterSchduler/_schedule(): 2.2 /nova/scheduler/filter_scheduler.py/FilterSchduler/_get_sorted_hosts(): 2.3 /nova/scheduler/host_manager.py/HostManager/get_filtered_hosts(): 2.4 /nova/filters.py/

    2024年02月01日
    浏览(37)
  • openstack详解(十八)——Nova服务启动与服务创建

    今天继续给大家介绍Linux运维相关知识,本文主要内容是Nova服务启动与服务创建。 在上文openstack详解(十七)——openstack Nova其他配置中,我们完成了Nova整体的配置文件,接下来,我们就可以启动Nova服务了,Nova服务的启动,需要执行以下命令: 这些命令,分别表示启动No

    2024年02月02日
    浏览(33)
  • OpenStack手动分布式部署Nova【Queens版】

    目录 Nove简介: 1、登录数据库配置(在controller执行)   1.1登录数据库   1.2数据库里创建nova-api   1.3数据库登录授权   1.4创建nova用户   1.5添加admin用户为nova用户   1.6创建nova服务端点   1.7创建compute API 服务端点   1.8创建一个placement服务用户    1.9添加placement用户为项目服

    2023年04月08日
    浏览(23)
  • OpenStack介绍说明、OpenStack架构说明、OpenStack核心服务详细说明【keystone,nova,cinder,neutron...】、OpenStack创建VM,服务间交互示例

    2006年亚马逊推出AWS,正式开启云计算的新纪元 2010年7月美国国家航空航天局(NASA)与Rackspace合作,共同宣布OpenStack开放源码计划,由此开启了属于OpenStack的时代 OpenStack从诞生之初对标AWS,一直在向AWS学习,同时开放接口去兼容各种AWS服务 OpenStack是什么? OpenStack是一种云操

    2024年01月15日
    浏览(42)
  • 48掌握私有云平台 OpenStack 的基本服务和使用方法,包括 Nova、Glance

    Nova 是 OpenStack 的计算组件,用于管理和调度计算资源。它可以管理虚拟机实例、安全组、弹性 IP、浮动 IP 等资源。 nova-api nova-api 是 Nova 的 API 服务,它接收来自用户和其他服务的 API 请求,并将它们转换为后台计算资源管理系统的操作。 nova-scheduler nova-scheduler 是 Nova 的调度

    2024年02月07日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包