OpenStack的起源
2002年,美国著名的电商公司亚马逊(Amazon)向客户推出了一项包括存储空间、计算能力等资源服务的Web Service。这就是大名鼎鼎的AWS(Amazon Web Service)。它为大家提供“远程电脑”。你可以远程控制它,有硬盘,有CPU,有内存,你在上面配置你的各种服务,然后给你的用户使用,例如网站、FTP等,这个就是云计算的一种早期形式。
后来,到了2006年,亚马逊又推出了弹性计算云(Elastic Compute Cloud),也称 EC2 。EC2配置界面更简单,使用起来更方便,关键一点,它开始有了“弹性”!
同样是2006年,8月9日,Google首席执行官埃里克·施密特在搜索引擎大会上首次提出“云计算”(Cloud Computing)的概念。从此,云计算进入了高速发展阶段。
到了2010年,当时有一家名叫Rackspace的公司,他们一直在做和亚马逊一样的云主机和云储存服务,但是始终都干不过亚马逊,排名第二。他们一气之下,干脆就把它们的云储存服务给开源了。和他们一起开放源代码的,还有NASA(National Aeronautics and Space Administration 美国国家航空航天局)。NASA之前在云计算方面投入了大量的资金,但是后来发现这玩意好像是个无底洞,太烧钱了。而且,他们也似乎意识到这不是他们该干的事。所以,NASA和Rackspace一起,选择开放源代码。
Rackspace和NASA并不是简单地代码一丢完事,而是联手共同成立了一个开源项目。这个项目,就是OpenStack。
OpenStack的架构组成
OpenStack从一开始,就是为了云计算服务的。简单来说,它就是一个操作系统,一套软件,一套IaaS软件(Infrastructure as a Service,基础设施即服务)。
管理“基础设施资源”,便于用户调用和使用,是OpenStack的首要任务。
基础设施资源,主要包括三个方面:计算、存储、网络。说通俗点,就是CPU,硬盘,网卡。
OpenStack对资源进行管理,并且以服务的形式提供给上层应用或者用户去使用。OpenStack对资源进行管理,并且以服务的形式提供给上层应用或者用户去使用。通过它的众多组件去实现。
这个图里面的彩色方块,就是OpenStack最核心的组件。
- Horizon
Horizon是一个用以管理、控制OpenStack服务的Web控制面板。用户可以通过这个界面对OpenStack状态进行查看和管理。
- Nova
Nova是整个Openstack里面最核心的组件。当初Rackspace和NASA贡献代码时,NASA贡献的那部分就是Nova最早的代码(Rackspace贡献的代码是Swift)。OpenStack云实例生命期所需的各种动作都将由Nova进行处理和支撑,它负责管理整个云的计算资源、网络、授权及测度。
- Cinder
这是存储管理的组件。Cinder存储管理主要是指虚拟机的存储管理
- Glance
这是镜像管理。 目前Glance的镜像存储,支持本地存储,NFS,swift,sheepdog和Ceph,基本是够用了。
目前Glance的最大需求就是多个数据中心的镜像管理,如何复制,不过这个功能已经基本实现。还有就是租户私有的image管理,这些目前功能都已经实现。
- Neutron
这是网络管理的组件,也是重头戏,Openstack的未来,基本都要靠quantum。网络相关的内容,都会交给Quantum。不过Quantum的开发进度不是太如人意。Flosom规划实现功能,到Grizzly才实现。未来nova network的代码清理,估计到H版本都不见得可以实现。Quantum 后端可以是商业产品或者开源。开源产品支持Openvswitch,和linux bridge。网络设备厂商都在积极参与,让他们的产品支持Quantum。
网络组件nova-network的发展经历了nova-network->Quantum->Neutron,Openstack在2010年正式发布它的第一个版本Austin的时候,nova-network作为它的核心组件被包含其中,网络由nova-network来承担,后来逐渐分离出来,改名为Quantum. Quantum是随Openstack的Folsom版本正式发布的,其实它已经作为试用组件包含在之前的Essex版本中。在Grizzly里功能得到了增强。
- Keystone
Keystone为所有的OpenStack组件提供认证和访问策略服务,主要对(但不限于)Swift、Glance、Nova等进行认证与授权。
OpenStack的组件都有自己的功能定位。其实,每个组件都可以算是独立的一个程序(Software)。Open为开放之意,Stack则是堆砌,也就是许多Open的Softwares进行集合和堆砌。