文章目录
OpenStack架构介绍
OpenStack简介
OpenStack起源
- 2006年亚马逊推出AWS,正式开启云计算的新纪元
- 2010年7月美国国家航空航天局(NASA)与Rackspace合作,共同宣布OpenStack开放源码计划,由此开启了属于OpenStack的时代
- OpenStack从诞生之初对标AWS,一直在向AWS学习,同时开放接口去兼容各种AWS服务
- 跟随
- 兼容
- 促生
!tip
OpenStack的发展与云计算密不可分,众所周知,第一个提出云计算概念走向落地的厂商是亚马逊,这是由其公司当时业务模式驱动导致的。亚马逊作为全球最知名的电子商务网站,业务高峰时,支撑电子商务交易需要极大的算力,然而平时亚马逊不需要如此庞大的算力,亚马逊开始尝试将这些空闲的算力开放出来给用户使用。经过一段时间的发展,云计算这种模式被广泛认可是在2006年,亚马逊推出了弹性计算云EC2(Elastic Compute Cloud),EC2的弹性扩展能力吸引了很多厂商的关注。
美国国家航天航空局也一直在研究提供类似功能的服务,但是技术上遇到了挑战。
Rackspace当时是美国排名第二的云计算厂商,但规模仅为亚马逊的5%。
技术上遇到挑战的NASA和市场拓展上遇到挑战的Rackspace开始联手,决定将OpenStack开源,利用社区的力量来强化OpenStack的功能。于是在2010年双方共同开源了OpenStack项目。愿景是为数据中心建立一套云操作系统,大幅提升数据中心的运行效率。
AWS的功能十分强大,目前还在不断发展中,OpenStack从诞生之初就一直在向AWS学习,同时,OpenStack也提供开放接口去兼容各种AWS服务。
目前来看,OpenStack虽然没有AWS完善,但是相比之下,OpenStack是一个开源项目,并不收取版权费用。
OpenStack是什么?
- Deploy third party services such as
- Or use built in tools
- OpenStack是虚拟机、裸金属和容器的云基础架构
- OpenStack可控制整个数据中心的大型计算、存储和网络资源池
- 所有资源都通过API或Web界面进行管理

!tip
OpenStack是一种云操作系统,可控制整个数据中心内的大型计算、存储和网络资源池,所有资源都通过具有通用身份验证机制的API进行管理和配置。管理员也可通过Web界面控制,同时授权用户通过Web界面配置资源。
OpenStack能做什么?
- Deploy third party services such as
- Or use built in tools
- OpenStack通过一组相互关联的服务提供基础设施即服务 (IaaS)解决方案。每个服务都提供了一个应用程序编程接口 (API)来促进这种集成
- OpenStack项目是一个适用于所有类型云的开源云计算平台,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台
!tip
OpenStack既是一个社区,也是一个项目和一个开源软件,提供开放源码软件,建立公共和私有云,它提供了一个部署云的操作平台或工具集,其宗旨在于帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云,也为大云、小云提供可扩展的、灵活的云计算。
作为一个开源的云计算管理平台,OpenStack由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。
OpenStack工作原理概述
- OpenStack实际上由一系列叫作脚本的命令组成。这些脚本会被捆绑到名为项目的软件包中,这些软件包则用于传递创建云环境的任务
- 为了创建这些环境,OpenStack还会使用 2 种其他类型的软件:
- 虚拟化软件,用于创建从硬件中抽象出来的虚拟资源层
- 基础操作系统(OS),用于执行OpenStack脚本发出的命令
- OpenStack本身不会虚拟化资源,但会使用虚拟化资源来构建云
- OpenStack、虚拟化和基础操作系统,这 3 种技术协同工作服务用户
- 用户
- OpenStack
- 虚拟化
- 基础 OS
- 虚拟化
- OpenStack

开源OpenStack版本演进
- OpenStack每年两个大版本,一般在4月和10月中旬发布,版本命名从字母A-Z

!tip
OpenStack第一版代号为Austin,以Rackspace所在的美国德克萨斯州Texas首府命名,计划每隔几个月发布一个全新版本,并且以26个英文字母从A到Z顺序命名后面的版本代号。通常以举办OpenStack峰会所在地的某个城市或地区来命名。
2017年华为成功晋级为白金会员,成为亚洲首家OpenStack白金会员。
OpenStack基金会允许最多8家白金会员资格和24家黄金会员资格,目前已有AT&T、爱立信、华为、英特尔、Rackspace、红帽、SUSE和腾讯这8家白金会员,以及九州云、中国移动、中国联通、中国电信、思科、EasyStack、烽火、浪潮、新华三以及中兴通讯等黄金会员。
OpenStack设计理念
- 开放
- 开源
- 尽最大可能重用已有开源项目
- 灵活
- 架构可裁剪
- 大量使用插件化方式进行架构设计与实现
- 可扩展
- 由多个相互独立的项目组成
- 每个项目包含多个独立服务组件
- 无中心架构
- 无状态架构
!tip
开放:
源代码开放,设计与开发流程开放。
"不重复发明轮子","站在巨人的肩膀上"。
不使用任何不可替代的私有/商业组件。
灵活:
架构可裁剪,可以根据实际需要决定选取的组件范围。
大量采用驱动与插件机制。
通过配置项控制对系统功能特性进行便捷配置。
可扩展:
松耦合架构,组件间RESTful API通信,组件内消息总线通信。
无中心架构,核心组件无中心节点,有效避免单点故障。
无状态架构,各组件无本地持久化数据,所有持久化数据保存在数据库中。
OpenStack与虚拟化
- OpenStack不是虚拟化,OpenStack只是系统的控制面,不包括系统的数据面组件,如Hypervisor、存储和网络设备等
- 虚拟化是OpenStack底层的技术实现手段之一,但并非核心关注点
- OpenStack与虚拟化的关键区别:
- OpenStack
- 自身不提供虚拟化技术
- 调用多种技术实现多资源池管理
- 对外提供统一管理接口
- 虚拟化
- 环境隔离,资源复用
- 降低隔离损耗,提升运行效率
- 提供高级虚拟化特性
!tip
OpenStack优先关注控制面,OpenStack优先考虑如何将计算、存储、网络领域的各类资源抽象为资源池。在此基础上,对资源池内的各类逻辑对象实施控制操作,并将控制操作包装成面向用户的服务。数据面、管理面目前不是OpenStack的重点关注内容。
OpenStack与云计算
- OpenStack只是构建云计算的关键组件:
- 内核、骨干、框架、总线
- 为了构建云计算,我们还需要很多东西:

!tip
OpenStack是框架:以OpenStack为框架,将计算、存储、网络、管理、运营、运维等多个领域的软硬件产品组件整合在一起,共同组成面向业务场景的整体解决方案。
OpenStack主要关注的问题:框架本身的开放性,生态的繁荣与活跃;控制面的服务能力、高可靠、高性能、可扩展、易操作、易维护等。
Cloud BSS:Cloud Business Support System,云业务支撑系统。
Cloud OSS:Cloud Operation Support System ,云运营支撑系统。
综上两个对比,可以总结出云计算与虚拟化的关键区别:
云计算的特点是IT能力的服务化,按需使用,按量计费,多租户隔离等。
虚拟化的特点是环境隔离,资源复用,降低隔离损耗,提升运行效率,提供高级虚拟化特性等。
OpenStack架构
OpenStack架构概览

!tip
OpenStack被分解为服务,允许用户根据需要即插即用组件。OpenStack地图让用户可以"一目了然"地了解OpenStack环境,以了解这些服务适合的位置以及它们如何协同工作。
OpenStack逻辑架构
- 要设计、部署和配置OpenStack,管理员必须了解其逻辑架构
- 每个OpenStack服务内部是由多个进程组成。所有服务(Keystone除外)都至少有一个API进程,负责监听API请求,对请求进行预处理并将它们传递给服务的其他部分
- 每个OpenStack服务的进程之间的通信,使用AMQP消息代理。服务的状态存储在数据库中。在部署和配置OpenStack云时,管理员可以在多种消息代理和数据库解决方案中进行选择,例如RabbitMQ、MySQL、MariaDB和SQLite
- 用户可以通过Web用户界面、命令行客户端以及通过浏览器插件或curl等工具发出API请求来访问OpenStack
OpenStack生产环境部署架构示例

!tip
生产环境中,一般会有专门的OpenStack部署服务节点、控制节点、计算节点、网络节点和存储服务节点等。
生产环境的控制节点建议三台以上,其他节点按需求部署。
如果只是测试,OpenStack服务可以部署在单节点上。
OpenStack核心服务简介
界面管理服务Horizon
- HORIZON
- 提供基于Web的控制界面,使云管理员和用户能够管理各种OpenStack资源和服务
- 首次出现在OpenStack的"Essex"版本中
- 依赖Keystone认证服务
认证服务Keystone
- KEYSTONE
- 提供身份验证,服务发现和分布式多租户授权
- 支持LDAP、OAuth、OpenID Connect、SAML和SQL
- 首次出现在OpenStack的"Essex"版本中
- 为其他OpenStack服务提供认证支持
镜像服务Glance
- GLANCE
- 提供发现、注册和检索虚拟机镜像功能
- 提供的虚拟机实例镜像可以存放在不同地方,例如本地文件系统、Swift对象存储、Cinder块存储等
- 首次出现在OpenStack的"Bexar"版本中
- 依赖Keystone认证服务
计算服务Nova
- NOVA
- 提供大规模、可扩展、按需自助服务的计算资源
- 支持管理裸机,虚拟机和容器
- 首次出现在OpenStack的"Austin"版本中
- 依赖Keystone认证服务、Neutron网络服务和Glance镜像服务
块存储服务Cinder
- CINDER
- 提供块存储服务,为虚拟机实例提供持久化存储
- 调用不同存储接口驱动,将存储设备转化成块存储池,用户无需了解存储实际部署位置或设备类型
- 首次出现在OpenStack的"Folsom"版本中
- 依赖Keystone认证服务
对象存储服务Swift
- SWIFT
- 提供高度可用、分布式、最终一致的对象存储服务
- 可以高效、安全且廉价地存储大量数据
- 非常适合存储需要弹性扩展的非结构化数据
- 首次出现在OpenStack的"Austin"版本中
- 为其他OpenStack服务提供对象存储服务
网络服务Neutron
- NEUTRON
- 负责管理虚拟网络,专注于为OpenStack提供网络即服务
- 首次出现在OpenStack的"Folsom"版本中
- 依赖Keystone认证服务
编排服务Heat
- HEAT
- 为云应用程序编排OpenStack基础架构资源
- 提供OpenStack原生REST API和CloudFormation兼容的查询API
- 首次出现在OpenStack的"Havana"版本中
- 依赖Keystone认证服务
计量服务Ceilometer
- CEILOMETER
- Ceilometer项目是一项数据收集服务,提供跨当前OpenStack核心组件规范化和转换数据的能力
- Ceilometer的数据可为所有OpenStack核心组件提供客户计费、资源跟踪和警报功能
- 首次出现在OpenStack的"Havana"版本中
OpenStack各主要项目间交互示例
提问:创建一个VM需要些什么资源?
- 计算
- 存储
- 网络
- 镜像

!tip
在OpenStack中创建虚拟机实例,资源需求和物理PC类似。
OpenStack创建VM,服务间交互示例

资源跟踪和警报功能
- 首次出现在OpenStack的"Havana"版本中