OpenStack

ywmack 2014-02-25

一、OpenStack简介

    OpenStack 是由 Rackspace 和 NASA 共同开发的云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as a Service, IaaS)。OpenStack 包含两个主要模块:Nova 和 Swift,前者是 NASA 开发的虚拟服务器部署和业务计算模块;后者是 Rackspack 开发的分布式云存储模块,两者可以一起用,也可以分开单独用。OpenStack 是开源项目,除了有 Rackspace 和 NASA 的大力支持外,后面还有包括 Dell, Citrix, Cisco, Canonical 这些重量级公司的贡献和支持,发展速度非常快,有取代另一个业界领先开源云平台 Eucalyptus 的态势。

OpenStack

图1 OpenStack 基础架构

    OpenStack包含了一组由社区维护的开源项目,主要项目有Compute(Nova), Object Storage(Swift),Image Service(Glance)。 

    Nova提供虚拟计算服务,Swift提供存储服务,Glance提供虚拟机镜像的注册、分发服务。

    三个项目的基本关系如下图3所示:

OpenStack

    OpenStack Compute,为云组织的控制器,它提供一个工具来部署云,包括运行实例、管理网络以及控制用户和其他项目对云的访问(the cloud through users and projects)。它底层的开源项目名称是Nova,其提供的软件能控制IaaS云计算平台,类似于Amazon EC2和Rackspace Cloud Servers。OpenStack Compute又包含Web前端、计算服务、存储服务、身份认证服务、存储块设备(卷)服务、网络服务、任务调度等多个模块。OpenStack Compute的不同模块之间不共享任何信息,通过消息传递进行通讯。因此,不同的模块可以运行在不同的服务器上,也可以运行在同一台服务器上。

    OpenStack Object Storage,是一个可扩展的对象存储系统。对象存储支持多种应用,比如复制和存档数据,图像或视频服务,存储次级静态数据,开发数据存储整合的新应用,存储容量难以估计的数据,为Web应用创建基于云的弹性存储。 OpenStack Object Store可以利用通用服务器搭建可扩展的海量数据仓库,并且通过冗余来保证数据的安全性。同一份数据的在多台服务器上都有副本,将出现故障的服务器从集 群中撤除不会影响数据的完整性,加入新的服务器后系统会自动地在新的服务器上为相应的文件创建新的副本。从功能上讲,OpenStack Object Store同时具备Eucalyptus中的Walrus服务和弹性块设备(SC)服务。不过OpenStack Object Store不是一个文件系统,不能够保证数据的实时性。从这个方面来考虑,OpenStack Object Store更适合用于存储需要长期保存的静态数据,例如操作系统映像文件和多媒体数据。

OpenStack 
图2 OpenStack Object Store

    OpenStack Image Service,是一个虚拟机镜像的存储、查询和检索系统,服务包括的RESTful API允许用户通过HTTP请求查询VM镜像元数据,以及检索实际的镜像。VM镜像有四种配置方式:简单的文件系统,类似OpenStack Object Storage的对象存储系统,直接用Amazon's Simple Storage Solution (S3) 存储,用带有Object Store的S3间接访问S3。

二、OpenStack Compute(Nova)的软件架构  

    下图是Nova的软件架构,每个nova-xxx组件是由python代码编写的守护进程,每个进程之间通过队列(Queue)和数据库(nova database)来交换信息,执行各种请求。而用户通过nova-api暴露的web service来同其他组件进行进行交互。Glance是相对独立的基础架构,nova通过glance-api来和它交互。

OpenStack

    OpenStack Compute软件架构中,组件中的绝大多数可分为两种自定义编写的Python守护进程(custom written python daemons)。

    a)接收和协调API调用的WSGI应用(nova-api, glance-api, etc)

    b)执行部署任务的Worker守护进程(nova-compute, nova-network, nova-schedule, etc.)

    然而,软件架构中有两个重要的部分,既不是自定义编写,也不是基于Python,它们是消息队列和数据库。二者简化了复杂任务(通过消息传递和信息共享的任务)的异步部署。

三、Nova各个组件的作用 

1.nova-api是Nova的中心。它为所有外部调用提供服务,除了提供OpenStack本身的API规范外,他还提供了兼容EC2的部分API,所以也可以用EC2的管理工具对nova进行日常管理。 

2.nova-compute负责对虚拟机实例进行创建、终止、迁移、Resize的操作。工作原理可以简单描述为:从队列中接收请求,通过相关的系统命令执行他们,再更新数据库的状态。 

3.nova-volume管理映射到虚拟机实例的卷的创建、附加和取消。 

4.nova-network从队列中接收网络任务,然后执行任务控制虚拟机的网络,比如创建桥接网络或改变iptables的规则。 

5.nova-scheduler 提供调度,来决定在哪台资源空闲的机器上启动新的虚拟机实例 

6.Queue为守护进程传递消息。只要支持AMQP协议的任何Message Queue Sever都可以,当前官方推荐用RabbitMQ。 

7.SQL database存储云基础架构中的各种数据。包括了虚拟机实例数据,网络数据等。 

8.user dashboard是一个可选的项目。它提供了一个web界面来给普通用户或者管理者来管理、配置他们的计算资源。

四、Nova的硬件架构 

    Nova采用无共享、基于消息的架构,我们能安装每个nova-xxx组件在单独的服务器上,这样可以根据不同目的进行不同的配置安装 

单结点:一台服务器运行所有的nova-xxx组件,同时也驱动虚拟实例。这种配置只为尝试Nova,或者为了开发目的进行安装。

      OpenStack  

1 控制节点+N个计算节点:一个控制结点运行除nova-compute外的所有nova-services,然后其他compute结点运行nova- compute。所有的计算节点需要和控制节点进行镜像交互,网络交互,控制节点是整个架构的瓶颈,这种配置主要用于概念证明或实验环境。 

OpenStack

多节点:增加节点单独运行nova-volume,同时在计算节点上运行nova-network,并且根据不同的网络硬件架构选择DHCP或者VLan模式,让控制网络和公共网络的流量分离。 

OpenStack

五、OpenStack能够做什么 

OpenStack能帮我们建立自己的IaaS,提供类似Amazon Web Service的服务给用户: 

普通用户可以通过它注册云服务,查看运行和计费情况 
开发和运维人员可以创建和存储他们应用的自定义镜像,并通过这些镜像启动、监控和终止实例 
平台的管理人员能够配置和操作网络,存储等基础架构 
OpenStack
运用范围:
    OpenStack是IaaS(基础设施即服务)?软件,让任何人都可以自行建立和提供云端运算服务。 
    此外,OpenStack也用作建立防火墙内的“私有云”(Private Cloud),提供机构或企业内各部门共享资源。

相关推荐