前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >新手指南OpenStack:Nova的基础知识

新手指南OpenStack:Nova的基础知识

作者头像
天空
发布于 2018-01-22 03:43:47
发布于 2018-01-22 03:43:47
2.5K0
举报

[第二部分基础知识] OpenStack 新手指南 #Nova? 它是OpenStack提供云计算服务的IaaS的主要架构控制器。在美国国家航空航天局(NASA)进入了初级阶段,并贡献给了OpenSource成为OpenStack的最重要组件。 它由多个组件构成,执行不同的任务,将最终用户的API请求转化为虚拟机服务。所有这些组件都运行在一个非阻塞的基于消息的体系结构中,并且可以从相同或不同的位置运行,只需访问相同的消息队列服务。 #组件? Nova将虚拟机的状态存储在中央数据库中。这对于小型部署来说是最佳选择。Nova正在向多个数据存储方向发展,以满足高规模的需求。

  • Nova API:支持OpenStack Compute API,Amazon EC2 API和强大的管理API(针对特权用户)。它用于启动大部分的编排活动和策略(如配额)。它通过HTTP进行通信,将请求转换为通过Message Broker和ObjectStore的HTTP进一步联系其他组件的命令。这是一个WSGI应用程序,用于路由和验证请求。

  • Nova Compute:worker守护进程从其Message Broker获取命令,并使用Hypervisor(虚拟机管理程序)的API执行虚拟机创建/删除任务。同时它也更新数据库中的任务状态。

  • Nova调度程序:决定为虚拟机请求分配哪些Nova计算主机。

  • 网络管理器:worker守护进程从其Message Broker中选择网络相关的任务,并执行这些任务。OpenStack的Quantum现在可以选择使用Grizzly版本,而不是nova-network。覆盖了维护IP转发,网桥和VLAN等任务。

  • 卷管理器:处理连接/分离持久性块存储卷到虚拟机(类似于亚马逊的EBS)。这个功能已经被提取到OpenStack的Cinder中,这是一个利用逻辑卷管理器的iSCSI解决方案。网络管理器不干涉Cinder的任务,但需要设置Cinder使用。

  • 授权管理器:为用户,项目和角色提供经授权的API使用的接口。详情请见它与OpenStack的KeyStone进行通信。

  • 网络产品界面设计OpenStack的Horizo​​n与用于仪表板接口的Nova API进行通信。

  • 消息代理:Nova的所有组件都使用AMQP协议以非阻塞回调的方式彼此通信,RabbitMQ支持Apache QPid。作为Message Queue,还有对ZeroMQ集成的支持。就像所有Nova组件共享和更新的中心任务列表一样。

  • 对象存储:这是一个简单的基于文件的存储(如亚马逊的S3)的图像。这可以用OpenStack的一瞥来代替。

  • 数据库:用于收集构建时间,运行虚拟机的状态。它详细介绍了可用的实例类型,可用的网络(如果nova-network)和项目。可以使用SQLAlchemy支持的任何数据库。它是所有Nova组件的中央信息中心。

#API风格

接口大多是RESTful。 路由(python重新实现Rails路由系统)包将URI映射到控制器类上的操作方法。

每个计算HTTP请求都需要特定的认证凭证。计算节点可以允许多个认证方案,提供者决定使用哪一个认证方案。

#线程模型

使用 eventletgreenlet库实现绿色线程设计。这会导致OS的单进程线程阻塞I / O问题。虽然单线程很大程度上减少了竞争条件,但是使用装饰者 @ lockutils.synchronized('lock_name')方法在可疑场景中进一步消除竞争,从而被保护。

如果任何操作是长时间运行的,则应该具有需求的进程状态位置触发eventlet上下文切换的方法。放置类似下面的代码片段将切换上下文到等待线程,如果有的话。如果没有其他线程在等待,将继续当前没有任何延迟的线程。

从eventlet导入 greenthread greenthread.sleep(0)

MySQL查询使用阻止主进程线程的驱动程序。在“Diablo”发行版中,一个线程池被实现,但是由于缺陷比优势大

而被移除。

#过滤程序

简而言之,它是'nova-scheduler'用来选择有价值的nova-compute主机来生成新的必需虚拟机的机制。它准备一个未经过滤的主机的字典,并衡量其创建所需的虚拟机请求的成本,然后它选择成本最低的主机。

主机根据虚拟机的配置选项加权。

由于每个请求计算权重,所以对于客户来说,更好的做法是一起要求大量的所需实例。

#消息队列用法

Nova组件使用 RPC通过使用PubSub的 Message Broker进行 通信。Nova实现了rpc.call(请求/响应,API作为消费者)和rpc.cast(一种方式,API充当发布者)。

Nova API和Scheduler使用消息队列作为Invoker,而Network和Compute充当工作者。调用者模式通过rpc.call或rpc.cast发送消息。Worker模式从队列中接收消息,并以适当的响应回应rpc.call。

Nova 与RabbitMQ连接时使用 Kombu库 。

#钩子

使开发人员能够通过向Nova代码中添加命名钩子来扩展Nova功能,作为装饰器将会延迟加载插件代码匹配钩子名称(使用setuptools入口点,这是一个扩展机制)。钩子的类定义应该有前置和后置的方法。

当稳定性是一个可变因素时,不要使用钩子,内部API可能会改变。

#开发引导

开始贡献...详细阅读 (OpenStack维基HowToContribute)。

为了与Nova车轮一起滚动,系统将需要libvirt和其中一个管理程序(Linux主机首选的xen / kvm)。

$ git clone git://github.com/openstack/nova.git $ cd nova $ python ./tools/install_venv.py

这将准备好您的副本nova codebase所需的virtualenv,现在任何命令你想运行在所需的代码库

$ ./tools/with_venv.sh

#运行我的测试

来运行nose测试和pep8 checker,当你完成virtualenv设置(或者这将首先在这里启动)...在'nova'代码库

$ ./run_tests.sh

#术语

  • 服务器:在计算系统内部创建的虚拟机,需要Flavor和图像细节。
  • Flavor:表示具有磁盘空间,内存和CPU时间优先级的独特硬件配置
  • 镜像:用于创建/重建服务器的系统映像文件
  • 重新启动:软件服务器重新启动发送正常关机信号。硬重新启动电源重置。
  • 重建:删除服务器上的所有数据,并用指定的图像替换它。服务器的IP地址和ID保持不变。
  • 调整大小:将现有的服务器转换为不同的Flavor。所有调整大小需要明确确认,只有原始服务器才能被删除。24小时后的延迟会有一个自动确认。
评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
万字长文带你OpenStack从入门到放弃
作者:linhaifeng4573 来源:见文末 一 openstack由来 openstack最早由美国国家航空航天局NASA研发的Nova和Rackspace研发的swift组成。后来以apache许可证授权,旨在为公共及私有云平台建设。openstack主要用来为企业内部实现类似于Amazon EC2和S3的云基础架构服务(Iaas).每6个月更新一次,基本与ubuntu同步,命名是以A-Z作为首字母来的。 二 openstack项目与组件(服务名是项目名的别名) 核心项目
小小科
2018/06/20
1.8K0
OpenStack运维之安装Nova服务
  Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源。OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的。
王先森sec
2023/04/24
1.4K0
OpenStack运维之安装Nova服务
云计算---openstack创建虚拟机过程
虚拟机创建过程: (1)界面或命令行通过RESTful API向keystone获取认证信息。 (2)keystone通过用户请求认证信息,并生成auth-token返回给对应的认证请求。 (3)界面或命令行通过RESTful API向nova-api发送一个boot instance的请求(携带auth-token)。 (4)nova-api接受请求后向keystone发送认证请求,查看token是否为有效用户和token。 (5)keystone验证token是否有效,如有效则返回有效的认证和对应的角色(注:有些操作需要有角色权限才能操作)。 (6)通过认证后nova-api和数据库通讯。 (7)初始化新建虚拟机的数据库记录。 (8)nova-api通过rpc.call向nova-scheduler请求是否有创建虚拟机的资源(Host ID)。 (9)nova-scheduler进程侦听消息队列,获取nova-api的请求。 (10)nova-scheduler通过查询nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需要的主机。 (11)对于有符合虚拟机创建的主机,nova-scheduler更新数据库中虚拟机对应的物理主机信息。 (12)nova-scheduler通过rpc.cast向nova-compute发送对应的创建虚拟机请求的消息。 (13)nova-compute会从对应的消息队列中获取创建虚拟机请求的消息。 (14)nova-compute通过rpc.call向nova-conductor请求获取虚拟机消息。(Flavor) (15)nova-conductor从消息队队列中拿到nova-compute请求消息。 (16)nova-conductor根据消息查询虚拟机对应的信息。 (17)nova-conductor从数据库中获得虚拟机对应信息。 (18)nova-conductor把虚拟机信息通过消息的方式发送到消息队列中。 (19)nova-compute从对应的消息队列中获取虚拟机信息消息。 (20)nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求glance-api获取创建虚拟机所需要镜像。 (21)glance-api向keystone认证token是否有效,并返回验证结果。 (22)token验证通过,nova-compute获得虚拟机镜像信息(URL)。 (23)nova-compute通过keystone的RESTfull API拿到认证k的token,并通过HTTP请求neutron-server获取创建虚拟机所需要的网络信息。 (24)neutron-server向keystone认证token是否有效,并返回验证结果。 (25)token验证通过,nova-compute获得虚拟机网络信息。 (26)nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求cinder-api获取创建虚拟机所需要的持久化存储信息。 (27)cinder-api向keystone认证token是否有效,并返回验证结果。 (28)token验证通过,nova-compute获得虚拟机持久化存储信息。 (29)nova-compute根据instance的信息调用配置的虚拟化驱动来创建虚拟机。
yaohong
2019/09/11
1.4K0
云计算---openstack创建虚拟机过程
016.OpenStack及云计算(面试)常见问题
云计算是一种采用按量付费的模式,基于虚拟化技术,将相应计算资源(如网络、存储等)池化后,提供便捷的、高可用的、高扩展性的、按需的服务(如计算、存储、应用程序和其他 IT 资源)。
木二
2019/07/01
7.1K0
OpenStack开源虚拟化平台(一)
  OpenStack既是一个社区,也是一个项目和一个开源软件,提供了一个部署云的操作平台或工具集。用OpenStack易于构建虚拟计算或存储服务的云,既可以为公有云、私有云,也可以为大云、小云提供可扩展、灵活的云计算。
Francek Chen
2025/01/23
2590
OpenStack开源虚拟化平台(一)
OpenStack常规知识点总结
1.OpenStack的介绍: OpenStack既是一个社区,也是一个项目和一个开源软件,提供开放源码软件,建立公共和私有云,它提供了一个部署云的操作平台或工具集, 其宗旨在于:帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云,也为大云、小云提供可扩展的、灵活的云计算。 OpenStackd开源项目由社区维护,包括OpenStack计算(代号为Nova),OpenStack对象存储(代号为Swift),并OpenStack镜像服务(代号Glance)的集合。 OpenStack提供了一个操作平台,或工具包,用于编排云。
院长技术
2020/06/13
2.8K0
OpenStack构架知识梳理
OpenStack既是一个社区,也是一个项目和一个开源软件,提供开放源码软件,建立公共和私有云,它提供了一个部署云的操作平台或工具集,其宗旨在于:帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云,也为大云、小云提供可扩展的、灵活的云计算。 OpenStackd开源项目由社区维护,包括OpenStack计算(代号为Nova),OpenStack对象存储(代号为Swift),并OpenStack镜像服务(代号Glance)的集合。 OpenStack提供了一个操作平台,或工具包,用于编排云。 下面列出Op
洗尽了浮华
2018/01/22
2.5K0
OpenStack构架知识梳理
CentOS7.0+OpenStack+kvm云平台部署—配置Nova
[root@openstack ~]# yum -y installopenstack-nova
菲宇
2019/06/11
8920
从消息队列看OpenStack
点击上方“腾讯云TStack”关注我们 获取最in云端资讯和海量技术干货 本文作者:鹏 飞 专注于OpenStack计算、Python。 热爱大海、雪山。 以往介绍openstack的文章通常都是从各个组件的整体角度来进行介绍,并没有深入的介绍组件内部服务究竟是如何通信的。 本文这次将换一个角度,从消息队列的角度来看openstack。文章将以pike版本中的nova组件为例进行介绍,由于openstack中所有组件内部服务的通信方式都是一致的,因此下面的内容也同样适用于其它组件,如neutro
腾讯云TStack
2020/12/18
1.9K0
玩转企业云计算平台系列(五):Openstack 计算服务 Nova
前面介绍了 Openstack 入门、基础环境部署、Keystone 、Glance等相关的知识点,今天我将详细的为大家介绍 Openstack 计算服务 Nova相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发分享朋友圈支持一波!!!
民工哥
2023/12/29
1.1K0
玩转企业云计算平台系列(五):Openstack 计算服务 Nova
RabbitMQ 概念和应用详解
RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,可用于在分布式系统中存储转发消息,主要有以下的技术亮点:
BUG弄潮儿
2021/09/14
6400
RabbitMQ 概念和应用详解
FusionSphere Openstack 虚拟机创建流程
组件:nova-api负责接受和响应终端用户有关虚拟机和云硬盘的请求,nova-api是整个nova 的入口。它接受用户请求,将指令发送至消息队列,由相应的服务执行相关的指令消息。
Ponnie
2021/02/24
1.7K0
openstack架构解析
OpenStack 是一个面向 IaaS 层的开源项目,用于实现公有云和私有云的部署及管理,是一个云计算的管理平台. 需要弄明白一点,openstack是虚拟化资源的管理平台.不实现具体的资源虚拟化技术细节.
字母哥博客
2020/09/23
3K0
openstack架构解析
OpenStack初学者指南:基础知识
OpenStack? OpenStack 是一个开源云计算平台,可用于构建公共云和私有云。可以编排各种技术组件以提供构建支持任何用例和规模的云服务的能力。 曾几何时,RackSpace进入了云服务行业
神话_Tyrannosaurus
2018/01/02
2K0
OpenStack初学者指南:基础知识
openstack安装(20)
使用OpenStack计算服务来托管和管理云计算系统。OpenStack计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由Python实现。
陈不成i
2021/05/06
6820
OpenStack常用命令-持续更新
Apache http服务状态查询 命令语句 systemctl status httpd.service
院长技术
2020/06/15
2.1K0
网易OpenStack部署运维实战
糖豆贴心提醒,本文阅读时间8分钟 OpenStack简介 OpenStack 是一个开源的 IaaS 实现,它由一些相互关联的子项目组成,主要包括计算、存储、网络。 由于以 Apache 协议发布,自 2010 年项目成立以来,超过 200 个公司加入了 OpenStack 项目,其中包括 AT&T、AMD、Cisco、Dell、IBM、Intel、Red Hat 等。 目前参与 OpenStack 项目的开发人员有 17,000+,来自 139 个国家,这一数字还在不断增长中。 OpenStack
小小科
2018/05/02
2.1K0
网易OpenStack部署运维实战
OpenStack云计算之路-Mitaka 版本
1.1 云计算简介 云计算(英语:cloud computing ),是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备。 云计算是继1980年代
惨绿少年
2018/03/30
6.3K0
从数据库分析OpenStack创建虚机流程
治大国若烹小鲜,学OpenStack亦是如此。每一个深入学习OpenStack的人都会从虚拟机创建流程开始自己的OpenStack代码分析之旅,因为它贯穿核心组件,覆盖了大部分OpenStack通用技术。食材的做法有煎、炒、烹、炸,把虚拟机创建流程比作食材,本文就给它换个做法,给读者呈现不同的口味。
SDNLAB
2018/08/16
2.3K0
从数据库分析OpenStack创建虚机流程
OpenStack服务的启动机制
基本所有的openstack服务都依赖 evenlet 完成各种并发任务,它的进程可分为两类: 1、 WSGIService: 接收和处理 http 请求,依赖eventlet.wsgi 的 wsgi server 处理 http 请求,比如nova-api 2、 Service: 接收和处理 rpc 请求,如 nova-operation等 无论是 WSGIService 还是 Service 类型的进程,每当接收到一个请求(http 或 rpc),都会在线程池中分配一个协程处理该请求
tunsuy
2022/10/27
5790
相关推荐
万字长文带你OpenStack从入门到放弃
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档