OpenStack Compute(Nova)功能分析

2011-11-29 10:27:59 | 作者: QY003 | 36 次阅读

OpenStack Compute 提供给一个组织云的工具,其中的功能包括运行虚拟机实例, 管理网络以及通过用户和项目来控制对云的访问。OpenStack最基础的开源项目名字称为Nova,它提供的软件可以控制基础设施即服务(IaaS)云计算平台,和Amazon EC2和Rackspace云服务器有一定程度相似。OpenStack Compute 没有包含任何的虚拟化软件,相反它定义和运行在主机操作系统上的虚拟化机制交互的驱动程序,并通过基于Web的程序应用接口(API)来提供功能的使用。

功能分析Compute的组件和及其作用

OpenStack Compute是由几个主要的组件所组成的。

云控制器(cloud controller)包含了很多组件,API服务器(nova-api),计算服务器(nova-Compute),网络控制器(nova-network),调度器(nova-schedule),卷控制器(nova-volume),消息队列(queue),DashBoard。

API 服务器为云控制器扮演着web服务前端的角色。这个云框架的核心是API服务器。API服务器命令和控制hypervisor,存储还有网络,让用户可以实现云计算。API端点是一个基础的HTTP网页服务,通过使用多种API接口(Amazon,Rackspace和相关的模型)来提供认证,授权和基础命令和控制功能,增强了API和多种其他供应商已经存在的资源池的兼容性。

计算控制器(Compute controller)提供了计算服务器资源,其中包含计算服务。Compute控制器控制运行在宿主机上的计算实例。可以通过使用API的方式把命令分发到Compute控制器,进行以下的操作:

  • 运行实例
  • 结束实例
  • 重启实例
  • 接触卷
  • 断开卷
  • 获得控制台输出
  • 对象存储(Object Store)组件选择性提供存储服务。
  • 授权管理器(auth manager)提供认证和授权服务。
  • 卷控制器(volume controller)为Compute服务器提供了快速持久的块级别存储。卷工作处理器和iSCSI存储进行交互,管理基于LVM的实例卷,其中可以进行的操作包括:
  • 创建卷
  • 删除卷
  • 创建计算卷

卷可以在实例间传送,但是一次只能连接到一个实例。

网络控制器(network controller)提供了虚拟网络,使得Compute服务器和其他的Compute服务器以及外网进行交互。

网络控制器管理在宿主机上的网络资源。API服务器通过消息队列分发命令。这些命令之后会被网络控制器处理,特定的操作有:

•        分配固定IP地址

•        为项目配置VLAN

•        为计算节点配置网络

目前为止,Nova只支持Linux网桥网络使得虚拟接口可以通过物理接口链接到外部网络。网络控制器提供了虚拟网络来使得计算服务器之间互相交互以及和公共网络交互。

Nova支持3种类型的网络,实现成3种相对应的“网络管理”类型:

•        Flat网络管理模式

•        Flat DHCP网络管理模式

•        VLAN网络管理模式

这3种类型的网络管理模式可以在一个云系统里面共存。然而,如果没有为一个给定的项目选择它的网络管理类型,就不能在一个给定的Compute安装中配置多于一种类型的网络模式。

Nova有固定IP和浮动IP的概念。固定IP被分发到创建的实例,然后实例持有固定IP直到实例被显式地停机。浮动IP是一些可以和实例动态相连的IP地址。这些地址在任何时刻可以断开连接或者连接到另外的实例。用户可以为他们的项目保留一个浮动的IP地址。

•Flat模式

网络管理员指定一个子网。为虚拟机实例分配的IP地址都是从这个子网内面获取,然后在虚拟机启动时候注入虚拟机镜像。每个实例从有效地址池接收到一个固定的IP地址。网络管理员必须要配置好Linux网桥(名为br100),包括拥有网络的网络控制器还有拥有实例的云控制器。所有的系统实例都是和同一个网桥所相关的,网络管理员需要手动配置相连关系。注意:目前为止配置注入只能够Linux类型的操作系统正常工作,网络配置保存在/etc/network/interfaces路径。

•Flat DHCP模式

启动一个DHCP服务器,把从一个指定的子网中获得的IP地址传递到虚拟机实例,此外网络管理员还需手动配置网桥。为虚拟机实例所分配的IP地址都是从网络管理员指定的子网中所获得的。就像Flat模式一样,所有的实例都在计算节点中和一个网桥相关。除此以外需要一个DHCP服务器运行来配置实例。在这个模式里面,Compute做了更多一些的配置,尝试和以太网设备(默认为eth0)建立网桥。Compute也会运行dusmasq作为DHCP服务器监听这个网桥。之后实例做一次dhcpdiscover操作来接收他们的固定IP。

在两个Flat模式里面,网络节点没有扮演默认网关的角色。实例都被分配了公共的IP地址。Compute节点持有每个项目和实例都会创建的iptables/ebtalbes实体,来抵抗IP/MAC地址欺骗或者是ARP欺骗。

•VLAN网络模式

OpenStack Compute的默认模式。在这个模式里面,Compute为每个项目创建了VLAN和网桥。为了实现多台机器的安装,VLAN网络模式需要一个支持VLAN标签(IEEE 802.1Q)的路由器。每个项目获得一些只能从VLAN内部访问的私有IP地址。为了实现用户获得项目的实例,需要创建一个特殊的×××实例(代码名为cloudpipe)。Compute为用户生成了证明书和key,使得用户可以访问×××,同时Compute自动启动×××。它为每个项目的所有实例提供一个私有网络段,这个私有网络段都是可以通过因特网的×××访问的。在这个模式里面,每个项目获得它自己的VLAN,Linux网桥还有子网。被网络管理员所指定的子网都会在需要的时候动态地分配给一个项目。DHCP服务器为所有的VLAN所启动,从被分配到项目的子网中获取IP地址并传输到虚拟机实例。所有属于某个项目的实例都会连接到同一个VLAN。OpenStack Compute在必要的时候会创建Linux网桥和VLAN。

调度器(scheduler)选择最合适的Compute控制器来放置一个实例,实现负载均衡。

消息机制 OpenStack Compute 是建立在无共享(shared-nothing)的,基于消息(messaging-based)架构上的。在多服务器上运行所有的主要组件包括Compute 控制器,卷控制器,网络控制器以及对象存储。云控制器通过HTTP协议和内部对象存储通信。但是云控制器和调度器,网络控制器以及卷控制器是通过AMQP协议(Advanced Message Queue protocol),即高级消息队列协议来通信。为了避免在等待响应的时候造成每个组件阻塞,OpenStack Compute使用了异步调用,当响应被接收时候会触发回调。为了取得同样组件的多份拷贝的无共享属性,OpenStack Compute 在分布式数据存储上保存了整个云系统的状态。对系统的更新会被写入到存储里面,必要时会使用原子性的事务来进行这个操作。对状态的请求会从存储里面读出。在有限的例子,读取的结果在很短的时间之内缓存到控制器里面。

一个典型的消息传递事件从API服务器接受来自用户的请求开始。这个API服务器授权这个用户,保证用户是被允许发起相关的命令。在请求中所涉及到的对象的有效性被评估,如果评估有效,为了相关的工作处理器,这请求会被路由到消息引擎。工作处理器在它们各自角色或者主机名的基础上监听这个队列。当监听产生了工作请求,工作处理器接收这个任务并开始执行。完成之后,响应会分发到队列里面。队列会被API服务器接收和转述到发起请求的用户。在整个过程中数据库实体会根据需求被查询,增加或者消除。

基于网页的控制台DashBoard

在OpenStack Compute安装时搭配OpenStack DashBoard and Django-Nova 项目提供的基于网页的控制台,可以使用DashBoard接口。Django提供了和OpenStack Compute云控制器基于网页的交互。为了创建一个更有鲁棒性的和为产出准备的安装,需要用Apache网页服务器和MySQL/Postgres数据库进行配置。

支持虚拟机热迁移

支持集群安装(使用Puppet)

使用Puppet进行集群自动安装的方法在下面的配置下经过测试:

•        多服务器上安装nova-Compute组件

•        操作系统:ubuntu10.04或者ubuntu10.10

•        多网络模式(Vlan模式,Flat模式)

支持EC2 API 

EC2 API 提供了客户迁移,允许用户继续使用熟悉的EC2 API来管理他们的解决方案直到他们学会利用本地的具有高性能的OpenStack API。

转载于:https://blog.51cto.com/1030705/731354

OpenStack Compute(Nova)功能分析相关推荐

  1. OpenStack 之Nova添加扩展API流程,附带资源的查找功能

    例子中涉及到SQLAlchemy 得相关操作,可以参考 上一随笔 Openstack 中规定,扩展openstack得api有两种方式 创建新的WSGI 资源 扩展原有得WSGI资源得控制器(我得理解 ...

  2. 关于在openstack执行nova get-vnc-console命令,无法得到vnc url并提示服务器超时的问题描述...

    情景描述: 在一台openstack的控制节点上执行nova get-vnc-console UUID novnc命令,无法输出带有token的NoVNC url地址,添加debug选项再次运行该命令 ...

  3. openstack compute service list报错(HTTP 503)

    [root@controller ~]# openstack compute service list Unknown Error (HTTP 503) (Request-ID: req-b4bedf ...

  4. OpenStack之Nova分析——Nova API服务

    Nova是OpenStack中最核心的组件,可以说OpenStack中的其它组件都是为Nova服务的.所以Nova也是OpenStack最复杂的组件.Nova服务由多个子服务组成,这些子服务通过RPC ...

  5. OpenStack之Nova(T版)

    目录 一.概述 二.Nova系统架构 一.API 二.Scheduler 一.选择计算节点 二.调度器类型 三.过滤器 三.compute 四.conductor 五.PlacementAPl 六.c ...

  6. openstack 安装 Nova

    openstack Q版 服务器系统centos7 控制端IP:192.168.50.31 计算端IP:192.168.50.32 Nova 下面所有操作全在控制端 # 登录 mysql -u roo ...

  7. 部署openstack,nova hypervisor-list 未发现计算节点

    在部署openstack过程中, 但是查看计算节点列表正常,openstack compute service list nova hypervisor-list 未发现计算节点 nova-statu ...

  8. Openstack 03 - Nova Compute

    1.前言 很早之前就开始着手写Openstack 系列的博客了,在写了总体架构和Keystone之后,准备写Nova,但是每次写到一半,自己心里就觉得不踏实,因为似乎我并没有真正理解Nova,或者说根 ...

  9. openstack 用nova API 指定 compute node 创建 instance

    感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免,欢迎指正! 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  10. OpenStack 的Nova组件详解

    Open Stack Compute Infrastructure (Nova) Nova是OpenStack云中的计算组织控制器.支持OpenStack云中实例(instances)生命周期的所有活 ...

最新文章

  1. 磁盘空间神秘消失事件
  2. java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id null
  3. 《FPGA全程进阶---实战演练》第一章之如何学习FPGA
  4. 二分查找:在有序数组中搜索大于等于x的数的最小下标
  5. Java7并发编程指南——第二章:线程同步基础
  6. Libco是一个C/C++协程库,在微信服务中广泛使用
  7. DNS服务启动时卡在:Generating /etc/rndc.key:
  8. HoloLens1开发(一):第一个程序发布与部署
  9. C语言学习系列(六)存储类
  10. php 中echo用法,php中echo()函数的用法(附代码)
  11. vscode如何设置大小写转换的快捷键
  12. 个人保研经历以及经验分享
  13. 《网络神采4》技术大揭密之:DedeCMS存储过程
  14. 快速分割多个视频,生成每个视频的m3u8
  15. 计算机网络4小时速成:应用层,cs模型,p2p模型,DNS域名系统,文件传输协议FTP,电子邮件SMTP,万维网HTTP,动态主机配置协议DHCP
  16. 1到n中减少了一个数,顺序被打乱,找出缺失的数
  17. oracle 建分区索引_Oracle的分区表和Local索引创建与维护
  18. 【bzoj 3339】Rmq Problem 【bzoj 3585】mex(可持久化线段树)
  19. 如何查看电脑最大支持多少GB内存
  20. 利用 Dynamo 制作简易的变截面钢箱梁

热门文章

  1. c语言发票的编码,关于增值税发票中商品税收分类编码对应的简称
  2. Android 跨进程双向通信(Messenger与AIDL)详解
  3. 外包征集令:一个Android TV酒店项目
  4. java的基本语法(一)
  5. 数据结构编程题及解析c语言版,数据结构习题集答案(C语言版).pdf_c语言数据结构题目,c语言数据结构答案-C/C++文档类资源...
  6. 学计算机专业选择设计为类需要艺考,想学设计必须参加艺考吗?设计学类专业,新高考选科怎么选?...
  7. linux硬盘掉了,出了大问题,硬盘空间大量丢失
  8. 编写一个matlab矩阵函数,MATLAB矩阵 及图像函数
  9. java空指针找不到,跪空指针异常,所有的传入参数都判断了非空,实在找不到哪里没有赋值了...
  10. 简单的php文件_超简单的php文件上传程序