OpenStack

OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。作为一个开源的云计算管理平台项目,由多个相关联的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。

OpenStack是一个旨在为公有云及私有云的建设与管理提供软件的开源项目。它目前的社区拥有超过130多家企业及1600多位开发者,这些机构与个人都将OpenStack作为基础设施即服务(IaaS)资源的通用前端。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。

1 OpenStack三大核心组件


OpenStack因有计算、网络、存储三大组件的支撑,OpenStack能够构建出多种灵活的企业级云计算应用平台。有了OpenStack平台通过对着三大组件的虚拟化,可以对用户隐藏底层基础设施的异构性及其实现的细节,达到业务的灵活性和便捷性以及可扩展性。

2 Openstack主要组件

OpenStack覆盖了网络、虚拟化、操作系统、服务器等各个方面。它是一个正在开发中的云计算平台项目,根据成熟及重要程度的不同,被分解成核心项目、孵化项目,以及支持项目和相关项目。主要项目包括计算、网络、对象存储、块存储、身份、镜像服务、门户、测量、部署编排、数据库服务等等,可以根据需要选择安装,组网结构也灵活多样。每个项目都有自己的委员会和项目技术主管,而且每个项目都不是一成不变的,孵化项目可以根据发展的成熟度和重要性,转变为核心项目。

下面列出了10个核心项目(即OpenStack核心服务)。

(1)计算服务(Compute Service):即Nova项目。一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置CPU、内存等信息规格。自Austin版本集成到项目中。

(2)对象存储(Object Storage):即Swift项目。一套用于在大规模可扩展系统中通过内置冗余及高容错机制实现对象存储的系统,允许进行存储或者检索文件。可为Glance提供镜像存储,为Cinder提供卷备份服务。自Austin版本集成到项目中

(3)镜像服务(Image Service):即Glance。一套虚拟机镜像查找及检索系统,支持多种虚拟机镜像格式(AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD、VMDK),有创建上传镜像、删除镜像、编辑镜像基本信息的功能。自Bexar版本集成到项目中。

(4)身份服务(Identity Service):即Keystone。为OpenStack其他服务提供身份验证、服务规则和服务令牌的功能,管理Domains、Projects、Users、Groups、Roles。自Essex版本集成到项目中。

(5)网络管理服务(Networking Service):即Neutron。提供云计算的网络虚拟化技术,为OpenStack其他服务提供网络连接服务。为用户提供接口,可以定义Network、Subnet、Router,配置DHCP、DNS、负载均衡、L3服务,网络支持GRE、VLAN。插件架构支持许多主流的网络厂家和技术,如OpenvSwitch。自Folsom版本集成到项目中。

(6)块存储(Block Storage):即Cinder。为运行实例提供稳定的数据块存储服务,它的插件驱动架构有利于块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷。自Folsom版本集成到项目中。

(7)仪表盘(Dashboard):即Horizon。OpenStack中各种服务的Web管理门户,用于简化用户对服务的操作,例如:启动实例、分配IP地址、配置访问控制等。自Essex版本集成到项目中。

(8)测量(Metering):即Ceilometer。像一个漏斗一样,能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑。自Havana版本集成到项目中。

(9)部署编排(Orchestration Service):即Heat。提供了一种通过模板定义的协同部署方式,实现云基础设施软件运行环境(计算、存储和网络资源)的自动化部署。自Havana版本集成到项目中。

(10)数据库服务(Database Service):即Trove。为用户在OpenStack的环境提供可扩展和可靠的关系和非关系数据库引擎服务。自Icehouse版本集成到项目中。

OpenStack版本名称首字母根据字母表顺序来的,从最开始的Austin(A)一直到目前最新的Pike(P)版本。其中最新版本中涉及到的项目有上百个,包括很多新项目,比如多后端支持、通用时间支持、存储复制、容器网络支持、增量备份、IPv6和分布式SNAT等等。关于其中的项目请参考官方网站https://www.openstack.org。

3 OpenStack主要组件的关系


OpenStack主要组件之间的关系如上图,这里做个简单的说明:

(1)用户通过Horizon进行介入访问,采用RESTful API方式

(2)通过Keystone进行授权和认证

(3)Nova为计算服务,负责通过libvirt对整个虚拟机生命周期进行管理

(4)Glance作为镜像服务对虚拟机镜像进行管理

(5)Swift为虚拟机提供对象存储,Cindor为虚拟机提供块存储

(6)组件之间的通信采用AMQP消息队列进行调用

(7)图中的网络服务组件Quantum服务在Havana版本更名为了Neutron,用以对各个节点提供网络服务

推荐阅读更多精彩内容