OpenStack官方文档研究笔记

来源:互联网 发布:5g 知乎 编辑:程序博客网 时间:2024/05/18 00:28
标题 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脚本安装)

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 天然植物纤维面料发黄怎么办 阴阳师吸血姬血太厚了怎么办 电话被骗了钱怎么办 镇魔曲元宝被扣怎么办 镇魔曲以前的角色怎么办 镇魔曲手游转职后装备怎么办 镇魔曲个性标签任务怎么办 教师资格证申请表打不开怎么办 怎么办appstore换到日本 电脑内存太小怎么办 win10声音卡顿怎么办 录音播放卡顿怎么办 笔记本电脑玩dnf卡怎么办 龙之谷约惠码被删了怎么办 天涯明月刀马没有了怎么办 icloud照片无法同步怎么办 ipad不能下载app怎么办 ipad屏幕孔进水怎么办 ipad无法验证登录怎么办 dnf电脑配置低怎么办 淘宝直播粉丝不够怎么办 电脑页面显示不全怎么办 脸上发痒长痘怎么办 扣扣魔性表情泡泡消失怎么办 脚起小泡泡很痒怎么办 孕妇脚痒起水泡怎么办 孕妇手脚起湿疹怎么办 嘴巴破皮了怎么办 小便刺痛阴唇红肿怎么办 集成墙面挂照片怎么办 苹果电脑网页游戏打不开怎么办 苹果6plus发热怎么办 玩手游手机太卡怎么办 苹果七发烫厉害怎么办 苹果手机延迟高怎么办 王者荣耀总是卡怎么办 王者荣耀卡屏怎么办 王者荣耀网络延迟怎么办 荣耀8手机卡了怎么办 荣耀v10有点卡怎么办 荣耀10有点卡怎么办