OpenStack新手指南:Nova基础知识

Nova基础知识第二部分 OpenStack 新手指南

Nova?

它是提供云计算服务的IaaS平台OpenStack的的主要架构控制器。在美国国家航空航天局(NASA)迈出了第一步。贡献给了OpenSource并成为OpenStack最重要组件。

它由多个组件构成,它们执行不同的任务,将最终用户的API请求转化为虚拟机服务。所有这些组件都运行在一个非阻塞的基于消息的体系结构中,并且可以从相同或不同的位置运行,只需访问相同的消息队列服务。

组件?

Nova将虚拟机的状态存储在中央数据库中。这对于小型部署来说是最佳选择。Nova正在向多个数据存储方向发展,以满足大规模的需求。

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

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

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

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

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

  • Authorization Manager(授权管理器):为用户、项目和角色使用授权的api。它与_OpenStackKeyStone_进行通信以获取详细信息。

  • WebUI_OpenStackHorizon与_Nova API进行通信。

  • Message BrokerNova的所有组件都使用AMQP协议以非阻塞回调的方式进行通信,该协议得到了RabbitMQ、Apache QPid的支持。作为消息队列(Message Queue),还有对ZeroMQ集成的支持。它类似于所有Nova组件共享和更新的中心任务列表。

  • ObjectStore:这是一个简单的基于文件的存储(如亚马逊的S3)的镜像。可以用OpenStackGlance来代替。

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

API风格

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

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

线程模型

使用了由 eventlet greenlet 库实现的绿色线程(Green Thread) 。这会导致OS(操作系统)的单进程线程I / O阻塞问题。虽然单线程很大程度上减少了竞争资源的条件,使用装饰者 @ lockutils.synchronized('lock\_name'在可疑场景中进一步消除竞争。

如果任何操作是长时间运行的,那么它应该具有所需的进程状态位置触发eventlet上下文切换的方法。如果有的话,下面的代码块将会切换到等待线程。如果没有其他线程在等待,将继续在当前线程没有任何运行。

from eventlet import greenthread greenthread.sleep(0)

MySQL查询使用阻止主进程线程的驱动程序。在“Diablo”发行版中,实现了线程池,但是由于引起bug比带好的好处相比更大,而被移除了。

Filtering Scheduler(过滤程序)

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

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

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

消息队列用法

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

Nova APIScheduler使用消息队列作为Invoker(调用者),而Network(网络)和Compute(计算)则充当工人。Invoker(调用者)模式通过rpc.callrpc.cast发送消息。Worker模式从队列中接收消息,并以适当的响应回应rpc.call

Nova使用 Kombu库与RabbitMQ连接。

Hooks (钩子)

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

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

Dev Bootstrap(开发引导)

准备开始贡献... 阅读(OpenStack维基百科HowToContribute)的详细信息

为了跟上Nova的脚步,系统需要有libvirt和一个虚拟机管理程序(Linux主机首选的xen / kvm)。

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

这将为您准备使用virtualenvnova codebase副本,现在任何你想运行在所需的代码库上的命令都有了。

$ ./tools/with_venv.sh

运行我的测试

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

$ ./run_tests.sh

术语

  • 服务器:在计算系统内部创建的虚拟机,需要Flavor和镜像细节。
  • Flavor:表示具有磁盘空间,内存和CPU时间优先级的独特硬件配置
  • 镜像:用于创建/重建服务器的系统镜像文件
  • 重启:软件服务器重新启动发送正常关机信号。硬件重启电源重置。
  • 重新构建:删除服务器上的所有数据,并用指定的镜像替换它。服务器的IP地址和ID保持不变。
  • 调整大小:将现有的服务器转换为不同的 flavor。所有调整大小需要明确确认,只有这样才能删除原始服务器。24小时后。可能会有延迟,之后有一个自动确认机制。

本文的版权归 神话_Tyrannosaurus 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏不二小段

配置远程访问Jupyter+腾讯云超划算活动上车

一年前写了一篇关于Anaconda的介绍,在里面大力推荐大家使用Jupyter写一些日常的代码。 https://zhuanlan.zhihu.com/p/25...

445110
来自专栏FreeBuf

注意了,使用XSS平台的你可能被“偷窥”

故君子之治人也,即以其人之道,还治其人之身。 Par1:你要了解的事 XSS平台: 玩渗透测试的人,对XSS平台应该不会陌生。 最简单的XSS平台,通常可以记录...

38680
来自专栏Jaycekon

Python-WXPY实现微信监控报警

概述:   本文主要分享一下博主在学习wxpy 的过程中开发的一个小程序。博主在最近有一个监控报警的需求需要完成,然后刚好在学习wxpy 这个东西,因此很巧妙的...

2.9K80
来自专栏青蛙要fly的专栏

Android技能树 — 网络小结(4)之socket/websocket/webservice

介于自己的网络方面知识烂的一塌糊涂,所以准备写相关网络的文章,但是考虑全部写在一篇太长了,所以分开写,希望大家能仔细看,最好可以指出我的错误,让我也能纠正。

11630
来自专栏FreeBuf

微软对外披露两个0day漏洞详情

微软近日对外披露了两个0day漏洞详情,其中一个漏洞存在Adobe阅读器中,可被利用导致任意代码执行;另一个漏洞则允许任意代码在Windows kernel内存...

8310
来自专栏向治洪

百度地图android studio导入开发插件

百度地图SDK v3.5.0开发包下载地址:http://lbsyun.baidu.com/sdk/download?selected=location 开...

1.1K80

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

[第二部分基础知识] OpenStack 新手指南 #Nova? 它是OpenStack提供云计算服务的IaaS的主要架构控制器。在美国国家航空航天局(NA...

26780
来自专栏用户2442861的专栏

使用ThinkPHP框架快速开发网站(多图)

http://blog.csdn.net/ruby97/article/details/7574851/

2.8K20
来自专栏社区的朋友们

TAF 必修课(六):容错

上一节简单提到了客户端在选取 Invoker 节点时,会对 Invoker 列表执行死活检查,屏蔽掉一定时间内异常的节点,从而达到容灾的目的。下面对 TAF 容...

42000
来自专栏前端儿

【转】http-equiv="X-UA-Compatible" 设置IE浏览器兼容模式详解

文件兼容性用于定义让IE如何编译你的网页。此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式。

35410

扫码关注云+社区

领取腾讯云代金券