第一部分 Part 1
基 础 篇
第1章 OpenStack简介
第2章 OpenStack的安装
Chapter 1 第1章
OpenStack简介
1.1 OpenStack概述
OpenStack是当今最流行的开源云平台管理项目,可以控制整个数据中心计算、存储和网络资源的大型资源池。从OpenStack的名字可以看出它大致的含义,Open顾名思义为开源软件,开放式的设计理念、开放式的开发模式、开放式的社区,Stack意为堆,可以理解为云计算是靠每一块小瓦砾堆砌而成。OpenStack并不是单独的一个软件,它由多个组件一起协作完成某些具体工作。OpenStack本身就是一个巨大的开源软件集合,集各种开源软件之大成。当你想寻找AWS EC2的替代品时,OpenStack将是一个不错的选择。
云计算的概念并不是很新。实际上,AWS EC2已经出现有7年左右。虽然OpenStack是如今最为流行的一种可用的开源云计算解决方案之一,但它不是最早的一个。它是在公共和私有领域开发的两种旧解决方案的综合。
OpenStack是一个非常年轻的开源项目,最初是由美国国家航空航天局(NASA)和Rackspace合作研发的项目,2010年7月以Apache 2.0许可证授权开源,源代码来自于NASA的Nebula云平台和Rackspace的分布式云存储(Swift)项目。NASA最初使用的是Eucalyptus云计算平台,当规模持续快速增长后,Eucalyptus已经不能满足NASA的云计算规模,而Eucalyptus是不完全开放源代码的(“开放核”模式)。NASA首席技术官Chris Kemp的研究小组为此专门建立了自己的计算引擎,新平台命名为Nova,并将其开源。在2010年NASA和Rackspace分别将Nova和Swift项目代码开源时,已经获得了25个企业和组织的支持。
OpenStack致力于一个开放式设计过程,每6个月开发社区就会举行一次设计峰会来收集需求并写入即将发布版本的规格中。设计峰会是完全对公众开放的,包括用户、开发者和上游项目。社区收集需求和制定经过批准的线路图,用于指导未来6个月的发展。
OpenStack使用Apache 2.0许可证,兼容GPLv3以及DFSG。
下面来了解一下OpenStack的优势和劣势。
OpenStack的优势:
解除厂商绑定。
具有可扩展性及很好的弹性,可定制化IaaS。
良好的社区氛围。
OpenStack的劣势:
入手难、学习曲线较高,在对整体把握不足的情况下,很难快速上手。
偏底层,需要根据实际应用场景进行二次开发。
现阶段的厂商支持较弱,商业设备的OpenStack驱动相对不够全面。
1.2 OpenStack的结构
OpenStack包含了许多组件。有些组件会首先出现在孵化项目中,待成熟以后进入下一个OpenStack发行版的核心服务中。同时也有部分项目是为了更好地支持OpenStack社区和项目开发管理,不包含在发行版代码中。
OpenStack的核心服务包括:
Nova计算服务(Compute as a Service)
Neutron网络服务(Networking as a Service)
Swift对象存储服务(Object Storage as a Service)
Cinder块存储服务(Block Storage as a Service)
OpenStack的公共服务包括:
Glance镜像服务(Image as a Service)
Keystone认证服务(Identity as a Service)
Horizon仪表盘服务(Dashboard as a Service)
OpenStack的依赖库项目包括:Oslo基础设施代码共享依赖库(Common Lab as a Service)。
OpenStack的孵化项目包括:
Ceilometer计费监控服务
Heat编排服务
Ironic物理设备服务(Bare Metal as a Service)
Marconi消息队列服务(Message Queue as a Service)
Savanna大数据处理(MapReduce as a Service)
Trove数据库服务(DataBase as a Service)
OpenStack的其他项目涉及:
Infrastructure OpenStack社区建设项目
Documentation OpenStack文档管理项目
TripleO OpenStack部署项目
DevStack OpenStack开发者项目
QA OpenStack质量管理项目
Release Cycle Management版本控制项目
这些OpenStack项目有一些共同点,比如:
OpenStack项目组件由多个子组件组成,子组件有各自的模块。
每个项目都会选举PTL(Project Technical Leader)。
每个项目都有单独的开发人员和设计团队。
每个项目都有具有优良设计的公共API,API基于RESTful,同时支持JSON和XML。
每个项目都有单独的数据库和隔离的持久层。
每个项目都可以单独部署,对外提供服务,也可以在一起协同完成某项工作。
每个项目都有各自的后端驱动,所有的驱动都可以以plugin方式加载。
每个项目都有各自的client项目,如Nova有nova-client作为其命令行调用RESTful的实现。
除了以上项目,OpenStack的其他项目或多或少也会需要Database(数据库)、Message Queue(消息队列)进行数据持久化、通信。