Revisiting OpenStack Architecture:Esssex Edition

在网上看到这篇文章,感觉非常好,本着学习的态度将文章翻译成中文。翻译过程比较仓促,其中还有很多地方不是很理解,也有很多翻译的不标准。。希望大家谅解。

其实主要为了加深学习的过程。同时建议大家去看原文。

原文地址:http://ken.pepple.info/openstack/2012/02/21/revisit-openstack-architecture-diablo/


    为了方便大家的理解,让我们首先简要回顾一下OpenStack项目的组成部分和历史。 该项目于2010年,由Rackspace和美国国家航空航天局联合成立,目前已经发布了四个版本,并将于四月发布第五个版本(Esses版、 2010.1)。最初,它由三个核心的服务组成:


    对象存储(swift):提供了对象储存服务。它允许你存储和检索文件(但是并不能向文件服务器一样挂载目录)。由几家公司基于swift提供商业存储服务,其中包括KT,Rackspace(swift的起源地)和我的公司Internap。实际上,这篇博客里面的图片就是由Internap Swift实现传输服务的。

    镜像(Glance):提供了虚拟磁盘镜像的目录和库。这些磁盘镜像都是被OpenStack Compute经常用到的。虽然这项服务的技术是可选的,但是任何规模的云项目都需要它。

    计算(Nova)   : 基于需求提供虚拟服务。类似于亚马逊的EC2服务,它也提供磁盘服务类似于弹性块服务(Elastic Block Services, EBS)。Internap基于nova提供商业计算服务,现在主要用在梅尔卡多自由报和美国宇航局内部(也是nova起源地)。

 

   为了促进核心项目状态,有两个即将推出的新项目:


    Dashboard(“Horizon”)为所有的OpenStack服务提供了一个模块化的基于页面的用户接口。

    Identify(“keystone”)为所有的OpenStack提供了认证和授权服务。它还提供了特定部署服务的目录。


    这些新的项目为原来的三个项目提供了额外的基础设施。

    

概念架构

    OpenStack项目作为一个整体设计成为一个提供大规模可伸缩的云操作系统。为了实现这一目标,每个组件服务被设计共同工作,以提供一个完整的基础设施服务(IaaS)。通过每个服务提供的公共应用程序接口(API),整合是非常方便的。同时这些API允许每个服务使用另一个服务,也可以将这个服务传递给其他服务,只要他们仍然保持着API。这些API和提供给云终端用户的API是相同的。

    概念上讲,可以想象成为这样的服务之间的关系:


    

    Horizon为其他的OpenStack服务提供了Web前端;

    Nova存储检索虚拟磁盘(images)和glance中相关的数据;

    Glance可以在Swift中存储实际虚拟磁盘文件;

    所有的服务最终都有Keystone授权。


    这是整个框架结构的程序化和简化,假设了正在同时使用常见配置中的所有服务。它也显示了经营者一面的云,然而它并没有显示消费者如何实际使用云。例如,许多计算用户会大量使用对象存储服务等。


逻辑结构

    可以想象,实际的逻辑结构要远远比上面的概念结构要复杂的多。正如所有面向服务的架构,任何试图说明服务通信组合的图表都会变得非常混乱。在下面的图中,只是显示了OpenStack云结构中最常见的部分的组合。


    这张图片和上面的描述一致:

    每个用户可以通过一个通用的web接口(Horizon)交互或者直接与每个服务的接口交互;

    所有的服务认证都会通过一个公共的资源(keystone的验证)

    个别服务之间彼此的交互都会通过他们公共的API(除非使用特权管理员命令)

    在下面的章节中,我们将深入每个服务的体系结构中去。


Dashboard

    Horizon是一个模块化的Web应用程序,它为用户和管理员提供了一个与OpenStack服务的接口。

    和大多数的web应用程序一样,它的结构非常简单:

    Horizon通常通过Apache的mod_wsgi进行部署。它的代码被分为两部分,一个是可重复使用的python逻辑模块(和OpenStack里面各种API进行交互),另一个是演示部分(使它可以很容易的定制为不同的网站)

    数据库,它主要依赖于其他服务的数据,它存储的自己的数据非常少。

    从网络架构的观点来看,这项服务需要用户和其他公共服务API一样可访问。如果你想使用管理员功能,它也需要连接到他们的管理员API终端(这应该是用户不可访问的)。

Compute

    对于Nova的结构没有太大的改变,他们加入了一些新的辅助服务例如EC2的兼容性和控制台服务。

    nova-api接收和响应终端用户计算和磁盘APi调用。它支持OpenStack API,亚马逊的EC2 API和特殊管理API(特权用户执行管理行为),它还启动大部分的业务流程行动(例如运行一个实例)以及执行一些政策(主要是配额检查)。在Essex版本中,nova-api已经被模块化,允许实施者只运行特定的API。

    nova-compute是最主要的守护进程,它可以通过hypervisor的API(XenAPI for XenServer/XCP, libvirt for KVM or QEMU, VMwareAPI for Wmware,etc)创建和终止虚拟机实例.它的整个过程非常的复杂,但是原理非常简单:在队列中接收行动,然后执行一系列的系统命令(例如创建KVM实例)来实现行动,同时更新数据库中的状态。

    nova-volume负责管理磁盘的创建、附加和分离(类似于亚马逊的弹性块存储功能)。它可以支持各种供应商产品,例如iscsi、Rados Block Device。

    nova-network和nova-compute、nova-volume非常相似,它主要在队列中接收网络相关的任务,然后执行任务对网络进行配置(例如设置网桥接口或者改变iptables规则等)

    nova-schedule进行在概念上应该是nova中非常简单的一块代码:在队列中接收一个虚拟机实例请求,然后决定在哪里运行(特别是计算服务在哪里运行)

    队列提供了守护进程之间传递消息的中央枢纽。他现在是有RabbitMQ实现的,但也可以是任何AMPQ的消息队列(例如Apache的Qpid)

    SQL数据库存储了云基础设施在创建和运行时的状态。它包括可使用的实例类型,正在运行的实例,可用的网络和项目等。理论上,OpenStack Nova可以支持任务基于SQL机制的数据库,但是目前正在广泛应用的数据库是sqlite3(仅用于测试和开发工作)、mysql和PostgreSQL。

    在过去的两个版本中,Nova增强了它的控制台服务。控制台服务允许用户可以通过代理服务器访问虚拟化实例。这就涉及了一对新的守护进程(nova-console和nova-consoleauth).

    Nova和所有的用户交互需要经过:keystone的认证、Glance的镜像和Horizon的web接口。然而,Glance的交互是非常有趣的。API进程可以可以上载和查询Glance,而nova-compute可以下载镜像使用并启动镜像。

Object Store

    swift的架构非常的分散,一方面为了阻止单点失败,同时可以实现横向扩展。它主要包括下面几个组件:

    Proxy Server: 它通过OpenStack Object API或者原始的HTTP接收传入的请求。它接受文件上传、数据认证和创建容器。此外,它需要将文件和容器列表上传到web浏览器中。proxy server可以利用可选的缓存(通常用memcache)来提高性能。

    Account servers管理对象储存定义的账户。

    Container servers管理容器(即文件夹)与对象存储服务之间的映射。

    Object servers管理存储节点上世纪的对象。

    还有大量的周期性进程,他们运行在大量数据存储上执行日常任务。最重要的是复制服务,它通过集群保证了一致性和可用性。其他的周期性服务包括核准、更新和收割。

    身份认证是通过配置WSGI中间件处理的(通常使用keystone)。

Image Store

    自从Catus版本之后,Glance的结构一直非常的稳定。结构中最大的变化就是增加了认证,主要是在Diablo版本中开始加入。作为一个快速提醒,Glance主要包括以下四个部分:

    glance-api接收镜像API调用包括镜像发现,镜像检索和镜像存储;

    glance-registry完成存储、处理和检索镜像相关的数据(大小、类型等)

    一个数据库来存储镜像数据。像Nova一样,可以根据自己的爱好选择数据库(通常使用mysql和sqlite);

    一个实际镜像文件存储库,在图中,我已经显示了最普通的配置(利用swift作为镜像存储库),这也是可配置的。除了swift,glance支持普通的文件系统,RADOS块设备,亚马逊S3和HTTP。要知道,这些选择是受限的,只能用于只读使用。

    在Glance中也运行着一些周期性的进程以支持缓存。这些服务中最重要的就是复制服务,它通过集群的方式保证了镜像的一致性和可用想,其他进程例如核准、更新和收割等。

    正如在图中看到的,Glance在整个基础云设置中起到一个中心角色的作用。它从终端用户和Nova组件中接收请求镜像的API服务,并可以再其中存储它的磁盘文件。

 Identity

    Keystone提供了一个单点用于集成OpenStack政策、目录、令牌和认证。

    Keystone处理API请求同时提供可配置的目录、政策、令牌和认证服务。

    每个keystone功能都有一个可插拔的后端,它允许使用不同的方式来使用特定的服务。大多数支持标准的后端,例如LDAP、SQL,以及Key Value Stores  (KVS).

    大多数人都使用目前的身份认证服务作为定制店。

Future Projects

    本文完成了OpenStack架构的介绍。然而,OpenStack并没有就此止步。下面的OpenStack版本将迎来另一个核心服务:

    网络(Quantum)为其他Openstack服务管理的其他接口设备提供网络连接服务。这项服务允许用户创建自己的网络然后连接到接口上。

    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值