您的位置:首页 > 运维架构

OpenStack官方文档研究笔记

2013-12-12 17:08 190 查看
标题 OpenStack官方文档研究笔记
摘要 虽然网上有许多介绍OpenStack的文章,但是总感觉写得不够详细,或者说存在一些较难理解的部分。OpenStack有较好的官方文档,但是有近262页,笔者(渔童_ISLUB享有版权)在阅读官方文档的时候做了一些笔记,对文档提出了一些自己的看法和理解,有助于大家迅速的了解OpenStack的内部结构和工作流程。

背景知识

1          ************1、开始使用OpenStack************

1.1         【简介】

OpenStack:适合于为私有云或者公有云搭建大规模云配置平台

1.2         【Why Cloud】:

有些东西不是对我们一直有用,我们追求按需分配云的5个必备特征:

1、自给自足:尽可能少的人员干预

2、网络访问:所有的机器可以相互通信

3、资源池:许多人公用

4、可迅速简单扩容:因为数据在不断增长

5、可以度量的服务:因为需要按量收费

 

1.3         【三种服务类型】

云计算根据用户需要提供三种不同的服务类型。

1、SaaS(Software as a Service):把在线软件作为一种服务,比如邮箱。

2、Paas(Platform as a Service):把平台作为一种服务,比如在线的java编译器等

3、Iaas(Infrastructure as a Service):把硬件设备作为一种服务,比如网络虚拟机。

 

1.4         【云的分类】

 1、私有云:单一的服务组织,可以在线也可脱机处理

2、公有云:为多个组织公用,一般有专门的云服务商提供

 

 

1.5         【What is OpenStack】

OpenStack is on a mission: to provide scalable, elastic cloud computing for both public and private clouds, large and small. At the heart of our mission is a pair of basic requirements:clouds must
be simple to implement and massively scalable.

OpenStack为私有云和公有云提供可扩展的弹性的云计算服务,这种服务云必须是简单部署并且扩展性强。

 

1.6         【OpenStack的部件构成】

1、Object Store(Swift)提供对象存储

2、Image(Glance)为虚拟机镜像提供目录和存储空间,这一项服务是可选的

3、Compute(Nova)根据需要提供虚拟服务器

4、Dashboard(Horizon)为所有OpenStack服务提供基于网页的用户界面

5、Identity(Keystone)提供授权,并且为同一个特定的OpenStack下云服务提供服务目录

6、Network(Quantum)可插拔网络服务,连接多个OpenStack之间的网络

7、Block Storage(Cinder)提供连续的块级存储

1.7         【概念上的体系结构】

 

1、Dashboard(Horizon)提供一个web页面

2、Compute(Nova)存储和检索虚拟磁盘(images)并且连接上存放在Image(Glance)上的元数据。

3、Network(Quantum)为Compute(Nova)提供虚拟网络

4、Block Storage(Cinder)为Nova提供存储卷

5、Image(Glance)可以存放真实的虚拟机磁盘文件在Object Store(Swift)6、所有的服务授权都是通过Identity(Keystone)

以上只是一个简化的体系结构图,实际上要比这复杂得多

1.8         【逻辑体系结构】

1、终端用户可以通过web界面(Horizon)或者直接通过每一个服务的API进行通信。

2、所有的服务都是通过一个共同的源进行授权认证,以保证安全和一致性

3、单个的服务通过他们之间公用的API进行通信(除非他们之间需要管理员权限)

1.9         【Dashboard(Horizon)介绍】

Horizon使用的是Django web应用程序为用户和管理员提供一个管理OpenStack服务的接口。

1、Horizon通常通过Apache中的mod_wsgi搭建。代码分为可重复使用的python模块(和不同的OpenStack API进行交互)和展示模块(方便定制)

2、一个数据库,因为这主要用来存放其他服务的数据,存放自己的数据很少。

3、Horizon服务需要用户自己定制,要保证能够和每一个服务的公用API能够通信。

1.10     【Compute(Nova)】

Nova是OpenStack中最为复杂和分布式的部件。大量的进程合作,把终端用户的API请求运行在虚拟机中。下面是这些进程和他们的函数:

1、nova-api 接收和相应终端用户计算API的调用。支持OpenStack API,EC2 API和一些特殊的管理API。Nova-api还用于初始化一些事件(运行实例),执行一些策略(quota检查)。

2、Nova-compute进程主要是一个工作daemon,通过超级管理员API,创建和终止虚拟机实例(instance)。简单概括工作流程就是从队列中接收任务,然后执行一些列的系统命令,最后得出结果并且更新数据库中的状态。

3、Nova-volume 管理计算机实例(instance)的持久卷的创建,安装和拆卸。可以支持iscsi或者Rados Block Device in Ceph。Cinder已经替代Nova-volume的功能。

4、Nova-network用于从队列中接收网络任务,然后执行任务来管理网络(比如设置桥接或者修改iptable规则)。这个功能已经移植到Quantum,一个独立的OpenStack服务。Nova-network和Quantum有很多重复的功能(为什么要这样?)

5、Nova-schedule进程,从虚拟机实例请求队列中接收请求,然后决定在哪里执行。(具体讲就是那一台计算服务器host来执行)

6、队列为daemon之间传递的消息提供一个中心管理机制。目前使用RabbitMQ(一种消息管理队列),其他任何AMPQ消息队列都可以使用。

7、SQL数据库存放每一个云基础架构的编译和执行时的状态。包括可用的实例,正在用的实例,可以用的网络和工程。理论上讲,OpenStack Nova支持任何一种SQL-Alchemy支持的数据库,但是目前使用的是sqlite3,MySQL和PostgreSQL。

8、Nova提供Console服务,允许终端用户通过代理来访问他们虚拟实例(instance)的控制台。这个涉及到多个daemon(nova-console,nova-novncproxy 和 nova-consoleauth)

Nova和OpenStack很多其他服务进行交互,比如Keystone,Glance,Horizon。Glance的交互式核心。API进程可以上传和查询Glance,nova-compute则会根据需要下载镜像。

1.11     【Image Store】

Glance主要有四个部分:

1、Glance-api 接收image(镜像)的API调用,用于image的发现,恢复和存储。

2、Glance-registry (注册表)存放、处理和恢复image相关的元数据。

3、一个数据库,用于存放image的元数据。和Nova一样,用户可以选用自己偏爱的数据库(比如MySQL或者SQlite)

4、一个用于存放image文件的存储仓库(storage repository)。Swift就是image的存储仓库,但是这个也是可以配置的。除了Swift,Glance还支持普通的文件系统,RADOS块设备,Amazon S3 和HTTP。注意的是,这些选择都应该限制为只读(为什么?)

还有一些运行在Glance上的进程是为了支持Caching(缓存机制)。其中最重要的是replication(复制)服务,这是为了确保一致性和可用性。

在上面理论上的系统结构中可知,glance处于中心地位,它可以从终端用户或者Nova部件为image接收API请求,可以把磁盘文件存放在对象存储服务中(Swift)。

1.12     【Identity】

Keystone为OpenStack的策略(policy),目录(catalog),标示(token)和认证(authentication)提供一个整合。

1、keystone处理API请求,并且提供catalog,policy,token和identity的配置服务

2、每一个Keystone函数都有一个可插拔的后端,允许不同的方法来使用特定的服务。大部分支持标准的后端,比如LDAP或者SQL,还支持Key Value Stores(KVS)

大部分人通过使用这个作为他们目前认证服务的定制点。

 

1.13     【Network】

Quantum具有高可配置性,因为Quantum采用的是插件结构。插件结构能够适用于不同的网络配置和软件。简单的Linux网络插件如下

1、quantum-server 接收API请求,route他们到相应的quantum插件中执行。

2、Quantum 插件和代理执行实际的行动。比如安装和卸载端口,创建网络或子网和IP地址。常用的代理是L3(layer 3),DHCP和特定的插件代理。

3、大部分的Quantum安装都会使用一个消息队列来route(寻路) quantum-server和不同代理之间的信息。数据库也会为特定的插件存放网络状态。

Quantum会和Nova进行通信,Quantum会为instance提供网络和链接服务。

1.14     【Block Storage】

OpenStack Compute 中有关持久块存储的功能分离出来构成了Cinder。OpenStack 的块存储API允许操作卷,卷类型和卷快照。

1、cinder-api 接收API请求,把这些请求route到cinder-volume中进行处理

2、cinder-volume 读写Cinder数据库来保持状态,通过一个消息队列和其他进程进行交互,直接在块存储之上提供硬件或者软件。Cinder-volume可以通过驱动和不同的存储设备进行交互。

3、Cinder-scheduler,和nova-scheduler一样,选择合适的提供块存储的节点来创建卷(volume)。

4、Cinder的部署,也会使用一个消息队列来route(寻路) cinder进程之间的信息,数据库也会存放卷状态。

和Quantum一样,Cinder会和Nova相连接为instance(实例)提供卷

 

2          ********OpenStack Compute的详细介绍**********

OpenStack Compute(Nova)提供了一个构建云的工具,包括运行instance实例,管理网络,以及通过用户和工程控制云的接口。Nova提供的软件可以实现Iaas云计算平台,这很类似于Amazon的EC2和Rackspace的云服务器。Nova没有包含任何虚拟化软件,它只是定义了操作系统底层虚拟化机制的接口驱动,然后把这些功能通过网络API暴露(expose)出来。

2.1         【Hypervisors管理程序】

OpenStack Nova需要一个管理程序,并且Nova可以通过API服务器来控制这个管理程序。进程选择一个管理程序,通常是权衡优先级,并且根据预算,资源限制,必须支持的功能和所需的技术规格来做出决定。大部分都是通过KVM和基于Xen的管理程序。

通过OpenStack Nova,我们可以在不同的区域(zone)中使用多个管理程序来建立云。能够使用的虚拟化标准包括:

KVM-----Kernel-based Virtual Machine基于内核的虚拟机

LXC------Linux Containers(通过libvirt)

QEMU---Quik EMUlator

UML-----User Mode Linux

VMWare ESX/ESXi 4.1 update 1

Xen------Xen, Citrix XenServer and Xen Cloud Platform(XCP)

 

2.2         【User and Tenants(Projects)】

OpenStack Compute系统设计于为很多不同的用户提供服务,这些用户共享一个系统,使用基于角色的访问分配。不同的角色可以有不同的访问权限,这些权限都是管理员通过policy.json文件来进行配置的。用户能够访问的镜像有租用人(tenant)决定,但是每个用户都会有一个用户名和密码。用户对instance访问权限由键值对(key pairs)来保证,而对硬件资源的占有量是由租用人租用的资源大小来决定的。

 

说明:早期的OpenStack使用”Project”来代替”Tenant”的概念,因此,有些命令工具使用project_id来获取一个tenant的ID。

原版的EC2 API只支持使用users这个概念,但是OpenStack Compute中加入了tenants这个概念。Tenants是一个独立的资源容器,形成了计算服务中主要的组织结构。用户可以通过project_id就能获取tenant名。如果API请求中没有指定tenant,Compute会使用和user具有相同ID的tenant作为指定的tenant。

对于tenants,可以对以下内容进行定额限制:

1、可能创建的volume数目

2、所有卷的总容量(单位GB)

3、将要launch的instance数目

4、分配的处理器的核的数目

5、公开访问的IP地址

 

 

2.3         【images and Instances】

这一节将要对“什么是image和instance”和“云中的一个典型虚拟机系统的生命周期描述”进行更深层次的探讨。有很多种方法可以用于配置OpenStack云的细节和安装云中的虚拟机系统。

Image是为虚拟机文件系统提供模板的磁盘镜像。Glance是用于存放和管理镜像的。

Instance是一个运行在物理计算结点的独立的虚拟机。Nova用于管理这些Instance。很多不同的instance可能从相同的镜像中启动。每一个Instance都是基本Image的一个拷贝,所以Instance的运行时间的改变不会影响到基本Image镜像的时间。运行中的instance的快照将会根据当前特定实例的磁盘状态创建一个新的Image。

当启动一个Instance时,必须选择一组虚拟资源(Flavor)。Flavor定义了一个实例拥有多少个CPU,RAM的容量以及短暂的硬盘容量。管理员可以定制flavor的一系列参数。

额外的资源,比如持久卷和公用IP地址,可以从运行中的instance中增加或者删除。

下面的例子显示了一个OpenStack云搭建的典型虚拟系统,用于展示上面提到的观念。

 

2.3.1          【初始化状态】

2.3.2          【运行一个实例】

2.3.3          【结束状态】

 

2.4         【系统结构】

OpenStack Compute包括一系列主要部件:

1、一个云控制器:它包含很多部件,展示了全局的状态并且和其他所有的部件通信。

2、一个API服务器:为云控制器提供网络服务前端。云控制器提供计算服务资源和典型的计算服务。对象存储部件提供存储服务。

3、一个认证管理器:提供授权认证服务。使用keystone来区别不同权限的服务。

4、一个卷控制器:为每一个计算服务器提供快捷永久的块级存储

5、一个网络控制器:提供虚拟网络,使得计算结点直接可以进行通信,也可以和公有网络进行通信。

OpenStack是建立在一个无共享,基于信息的架构之上。你可以运行大部分部件在多个服务器上,包括一个计算控制器,卷控制器,网络控制器以及对象存储(或者镜像服务)。一个云控制器通过HTTP(Hyper Text Transfer Protocol)和内部的对象存储通信,但是它通过AMQP(Advanced Message Queue Protocol)。为了避免每一个部件在等待响应的时候相互阻塞,OpenStack Compute使用异步调用机制,当收到响应的时候会触发一个回调函数。

为了实现在同一个部件的多个拷贝上实现无共享特性,OpenStack Compute 把所有的云系统状态都保存在同一个数据库中。

【快存储和OpenStack Compute】

OpenStack提供了两种块存储。一个是短暂存储和持久存储卷。短暂存储只是存在于每一个实例的生命周期中,

3          ****OpenStack配置安装(个人总结,未参考官方文档)***

3.1        
OpenStack的安装方法(Debian脚本)

3.2        
Ubuntu 12.04 (或11.10) 一键部署安装OpenStack云计算平台(OneStack脚本安装)

3.3         Ubuntu 10.04 Openstack云平台搭建方法(goldfish脚本安装)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: