首页 > 代码库 > openstack架构简单介绍J版(更新中)

openstack架构简单介绍J版(更新中)

title : OPENSTACK架构简单介绍

openstack的发展及历史

openstack是什么?

OpenStack是一个美国国家航空航天局和Rackspace合作研发的云端运算?软件,以Apache许可证授权。而且是一个自由软件和开放源码项目。
通俗点来讲,openstack就是一个用python编写的linux软件,openstack是一个开源云平台。

openstack能干嘛?

openstack最基础的功能就是产生云主机(vm虚拟机)。用这些虚拟机能够做你想做的非常多事。比如产生一台windows虚拟机,你能够用它写word文档、上网、qq聊天……它在功能上与物理机差点儿没有区别(桌面云);你也能够用它来作为server使用,在他上面搭建网站什么的(server)

openstack的长处

相似vmware workstation这种软件不也能够产生虚拟机吗,干嘛搞得这么麻烦。

1.vmware workstation要收费,费用并不低;而且相当有局限性
2.openstack免费并开源。想怎么搞就怎么搞,拓展性强。

干嘛要产生虚拟机呢,直接用物理机不好吗?

1.通常一台物理机或者一群物理机仅仅能实现一个功能。而安装openstack后这群物理机就能够做好多事,能够实现多种功能
2.物理机维护成本高。资源可调度性差,发生问题后补救较为困难,openstack则在这 三方面解决的比較好
……

openstack的历史(參考http://www.ibm.com/developerworks/cn/cloud/library/cl-openstack-overview/)

OpenStack 是由 Rackspace Cloud 和 NASA 在 2010 年发起的。集成了 NASA 的 Nebula 平台的代码与 Rackspace 的 Cloud Files 平台。第一个核心模块被称为 Compute and Object Storage(计算和对象存储),但更常见的是它们的项目名称。即 Nova 和 Swift。


OpenStack 使用了 YYYY.N 表示法。基于公布的年份以及当时公布的主版本号来指定其公布。比如。2011 (Bexar) 的第一次公布的版本号号为 2011.1,而下一次公布(Cactus)则被标志为 2011.2。次要版本号进一步扩展了点表示法(比如,2011.3.1)。


开发者常常依据代号来指定发行版本号,发行版是按字母顺序排列的。

Austin 是第一个主发行版,其次是 Bexar、Cactus 、Diablo、Essex、Folsom、Grizzly、Havana、Icehouse、Jonu、Kilo。

这些代号是通过 OpenStack 设计峰会上的民众投票选出的,一般使用峰会地点附近的地理实体名称。具体版本号变更情况请点击这里

opnstack模块

服务 项目名称 说明
Dashboard Horizon 提供了一个基于web的自服务门户,与OpenStack底层服务交互,诸如启动一个实例。分配IP地址以及配置訪问控制。
Compute Nova 在OpenStack环境中计算实例的生命周期管理。按需响应包括生成、调度、回收虚拟机等操作。

Networking Neutron 确保为其它OpenStack服务提供网络连接即服务,比方OpenStack计算。为用户提供API定义网络和使用。基于插件的架构其支持众多的网络提供商和技术。

Object Storage Swift 通过一个 RESTful,基于HTTP的应用程序接口存储和随意检索的非结构化数据对象。它拥有高容错机制,基于数据复制和可扩展架构。

它的实现并像是一个文件server须要挂载文件夹。

在此种方式下,它写入对象和文件到多个硬盘中,以确保数据是在集群内跨server的多份复制。

Block Storage Cinder 为运行实例而提供的持久性块存储。它的可插拔驱动架构的功能有助于创建和管理块存储设备。
Identity Keystone 为其它OpenStack服务提供认证和授权服务,为全部的OpenStack服务提供一个端点文件夹。

Image Glance 存储和检索虚拟机磁盘镜像,OpenStack计算会在实例部署时使用此服务。
Telemetry Ceilometer 为OpenStack云的计费、基准、扩展性以及统计等目的提供监測和计量。
Orchestration Heat 既能够使用本地HOT模板格式,亦可使用AWS CloudFormation模板格式,来编排多个综合的云应用,通过OpenStack本地REST API或者是CloudFormation相兼容的队列API。
Data processing Trove 提供可扩展和稳定的云数据库即服务的功能,可同一时候支持关系性和非关系性数据库引擎。

概念架构

服务架构

启动一个虚拟机实例会包括非常多服务之间的交互。

下图展示了一个普通的OpenStack环境的概念架构。

技术分享

网络架构(三节点网络架构)

技术分享

服务布局

技术分享

各节点之间的通信由网络负责,各组件之间的通信由rabbit消息队列负责

openstack各服务及组件之间的功能

Identity service (Keystone)

Keystone服务运行下面功能:

1.跟踪用户及其权限。


2.提供一个文件夹可用服务的API端点。

keystone 各组件概念:

1.用户:使用OpenStack云服务的用户、系统或者服务,身份服务验证用户提交的请求。用户须要登录。然后可能会分配令牌已訪问资源。多用户能够直接分配给特定的租户。而且表现就像他们包括在该租户内。
2.认证信息:确认用户身份的数据。比方username和password。username和API键。或者由身份服务提供的认证令牌
3.认证:确认用户身份的过程。

OpenStack身份服务通过验证用户提供的认证信息确认请求。当认证信息被验证后,OpenStack认证服务发给用户认证令牌,在兴许的请求中用户将使用该令牌。
4.令牌:文本形式的字母-数字字符串,使用该字符串訪问OpenStack的API和资源。令牌在有限的时间内是有效的,可能在不论什么时间被取消。
5.租户:分组或隔离资源的容器,租户也用于分组或隔离身份对象。基于服务操作者,租户可能映射为客户、账户、组织或项目
6.服务:一个OpenStack服务,比方Compute(nova),对象存储(Swift),镜像服务(glance)。服务提供了一个或多个端点(endpoint),在端点内用户能够訪问资源或者运行操作。


6.API端点:网络可訪问的地址,一般是URL地址,通过该地址能够訪问服务。假设正在使用扩展的模板,一个端点模板会被创建,该模板表示全部可用服务的模板。
7.角色:定义了运行特定操作的用户权限的集合。在身份服务中,发给用户的令牌包括角色的列表。被用户訪问的服务确定怎样解释用户拥有的角色和每一个角色能够訪问的操作和资源。
8.KeyStoneclient:OpenStack身份服务API的命令行接口。比方:运行keystone service-create和keystone endpoint-creat在OpenStack中注冊服务。

keystone服务拓扑

1.技术分享

2.这张图有点老,可是基本意思没什么差异技术分享

Image service (Glance)

glance功能

它提供了一个REST API,使您能够查询虚拟机镜像元数据和检索实际的镜像。

在简易的对象存储系统,你能够通过镜像服务在不同的地方存储虚拟机镜像。如OpenStack对象存储文件系统。
openstack镜像服务支持在它上面上运行的大量的周期性程序的缓存。通过应答服务可保持集群的可靠性和一致性。其它的定期的进程包括审查、更新和回收。

glance组件

1.glance-api 接收镜像API的调用。比如:镜像的发现,检索和存储
2.glance-registry 存储、处理和恢复镜像的元数据,元数据包括像大小,类型等
安全注意:这是一个glance内部私有服务,仅供glance服务使用,不要给其它用户授权
3.Database 存放镜像元数据。用户是能够依据个人喜好选择数据库的,多数的部署使用MySQL或SQLite。
4.Storage repository for image files 支持多类型的普通文件系统、对象存储、RADOS块设备、HTTP和亚马逊S3.请注意某些仓库仅仅能做仅仅读使用
技术分享
点这儿镜像服务具体介绍镜像服务讲的比較具体

Compute service (Nova)

compute代号为nova,他依据需求来提供虚拟机。比如虚拟机创建虚拟机热迁移。


先借一张图来说明虚拟机的创建流程
技术分享
这张图出自http://blog.csdn.net/xuriwuyun/article/details/16845601 在复习面试的时候也是看的这个博客。感谢

Networking service (Neutron)

Dashboard (Horizon)

Block Storage (Cinder)

Object Storage (Swift)

Orchestration (Heat)

Telemetry (Ceilometer)

Database (Trove)

Data processing service (Sahara)

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

openstack架构简单介绍J版(更新中)