OpenStack的起源
2002年,美国著名的电商公司亚马逊(Amazon)干了一件“不务正业”的事。他们向客户推出了一项全新的业务——包括存储空间、计算能力等资源服务的Web Service。这就是大名鼎鼎的AWS(Amazon Web Service)。
说白了,这个Web Service服务,就是为大家提供“远程电脑”。你可以远程控制它,有硬盘,有CPU,有内存啥的。你在上面配置你的各种服务,然后给你的用户使用,例如网站、FTP等。
后来,到了2006年,亚马逊又推出了弹性计算云(Elastic Compute Cloud),也称 EC2 。
EC2配置界面更简单,使用起来更方便,关键一点,它开始有了“弹性”!
同样是2006年,8月9日,Google首席执行官埃里克·施密特在搜索引擎大会上首次提出“云计算”(Cloud Computing)的概念。从此,云计算进入了高速发展阶段。
到了2010年,当时有一家名叫Rackspace的公司,他们一直在做和亚马逊一样的云主机和云储存服务,但是始终都干不过亚马逊,排名第二。他们一气之下,干脆就把它们的云储存服务给开源了。
啥叫开源(Open Source)?开源就是开放源代码,把程序的代码公开了,给所有人免费查看和使用。
和他们一起开放源代码的,还有一个家伙,就是——NASA(美国国家航空航天局)
NASA之前在云计算方面投入了大量的资金,但是后来发现这玩意好像是个无底洞,太烧钱了。所以,NASA和Rackspace一起,选择开放源代码。
Rackspace和NASA联手共同成立了一个开源项目。这个项目,就是OpenStack。
OpenStack的版本
开源项目的玩法,和企业内部研发是完全不一样的,开源项目中,地球上所有人都可以为这个项目贡献自己的力量,也可以使用这个项目的开发成果。也就是说,“人人为我,我为人人”。
但是,为了保证项目能规范、有序地推进下去,还是需要有人“牵头”和“打杂”的。
OpenStack作为一个开源项目,它是由开源社区来负责推进和维护的。
这个社区也并不是一盘散沙,它有自己的组织形态。
首先,有一个OpenStack基金会,下面设立了董事会、技术委员会、用户委员会。基金会享有话语权,进行目标和发展的引导。
基金会成员有三种形式,铂金会员、金牌会员、独立个体,我们所知的华为、红帽就是铂金会员,提供资金与资源
openstack给每个版本都单独取了一个名字,版本号的第一个字母,从A开始,然后B、C、D… ,每个名字都是从当次设计峰会所在城市中选一个地名,作为该版本的名字。
例如,第一个版本Austin,就是根据Rackspace公司所在地(也是第一次峰会所在地)——美国德克萨斯州的首府“奥斯丁”确定的。
OpenStack的架构
前面说了,OpenStack从一开始,就是为了云计算服务的。简单来说,它就是一个操作系统,一套软件,一套IaaS软件。
什么是IaaS?Infrastructure as a Service,基础设施即服务。“云计算”很复杂?其实,一个小故事你就能看懂... (qq.com)
管理“基础设施资源”,便于用户调用和使用,是OpenStack的首要任务。
基础设施资源,主要包括三个方面:计算、存储、网络。说通俗点,就是CPU,硬盘,网卡。
OpenStack对资源进行管理,并且以服务的形式提供给上层应用或者用户去使用。
例如前面我们所说的“弹性”。正是因为资源能够被灵活调用,所以用户使用资源时,这个云平台可以根据用户的需要,动态增加和删减资源,不用中断用户的使用,更无需全新申请。这就是“弹性”。
那么,它到底是如何实现的呢?答案是——通过它的众多组件。
全局组件:
-
Keystone:管理全局认证和授权的组件;
-
Ceilometer:监控集群的状态,监控集群虚拟机的使用量;
-
Horizon:控制台可以控制OpenStack架构内部的所有功能;
辅助组件:
-
Ironic:裸金属管理和控制基础硬件资源;
-
Trove:管理数据库的服务,管理关系型数据库和非关系型数据库,可以存储虚拟机和各组件调用的数据,以及各种日志;
-
Heat 和 Sahara:做数据的分析,编排和处理,精细化的管理;
核心组件:为虚拟机/实例提供服务
-
Nova:负责虚拟机实例的生命周期管理、网络管理、存储卷管理、用户管理以及其他的相关云平台管理功能,支持虚拟机核心资源的横向扩展,支持虚拟机数量的横向扩展(将资源提供给虚拟机);
-
Neutron:实现实例与实例之间以及实例与外部网络之间的通信;
-
Cinder:提供对Volume从创建到删除整个生命周期的管理;
-
Glance:提供发现、注册和下载的镜像服务,虚拟机镜像的集中式仓库;通过虚拟机镜像创建虚拟机,对镜像进行精细化管理,提供管理镜像的服务(快照),修改镜像的元数据;
-
Swift:使用普通硬件来构建冗余的、可扩展的分布式对象存储集群,存储容量可达PB级。
Swift属于对象存储,用于永久类型的静态数据的长期存储(如虚拟机镜像、图片存储、邮件存储和存档备份)
也就是说,OpenStack的组件都有自己的功能定位。其实,每个组件都可以算是独立的一个程序
OpenStack为私有云和公有云提供可扩展的弹性的云计算服务,这种服务云必须是简单部署并且扩展性强。
1、模块松耦合
2、组件配置较为灵活
3、二次开发容易
Open为开放之意,Stack则是堆砌,也就是许多Open的Softwares进行集合和堆砌。