OpenStack是一个开源的
云计算管理平台项目,是一系列软件开源项目的组合。由
NASA(美国国家航空航天局)和
Rackspace合作研发并发起,以Apache许可证(
Apache软件基金会发布的一个自由
软件许可证)授权。
简介
Openstack是一个
云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作。Openstack是一个旨在为公共及
私有云的建设与管理提供软件的
开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与个人将 Openstack作为
基础设施即服务资源的通用前端。Openstack项目的首要任务是简化云的部署过程并为其带来良好的
可扩展性。本文希望通过提供必要的指导信息,帮助大家利用 Openstack前端来设置及管理自己的
公共云或私有云。
Openstack是由
Rackspace和NASA
共同开发的
云计算平台,帮助服务商和企业内部实现类似于 Amazon ec2和S3的云基础架构服务( Infrastructure as a Service)。 Openstack包括两个主要模块:Nova和 Swift。前者是NASA开发的
虚拟服务器部署和业务计算模块;后者是 Backpack开发的分布式
云存储模块,两者可以一起用,也可以分开单独用。 Openstack是开源项目,除了有 Rackspace和NASA的大力支持外,后面还有包括Dell、 Citrix、 Cisco
Canonical这些重量级公司的贡献和支持,
发展速度非常快,有取代另一个业界领先开源云台
Eucalyptus的态势。
发展历程
Openstack项目虽然诞生时间不长,但其发展之迅速,在云计算领域的影响力扩展,使得这个年轻的项目成为业内所有人都不得不关注的焦点。
2010年 Openstack项目成立。该项目由美国国家航空航天局(
NASA)和
Rackspace合作研发,
Apache许可证开源。目前为止共有以下版本:
(1) Austin——Openstack发布的第一个版本,这是第一个开源的云计算平台。
(2) Bexar——Openstack发布的第二个版本,添加了
IPv6的支持、影像传递技术,以及
Hyper-V和Xen等
虚拟服务器功能。
(3) Catus——Openstack发布的第三个版本,添加了虚拟化功能、自动化功能以及一个服务目录。
(4) Diablo——Openstack发布的第四个版本,增加了新的图形化
用户界面和统一身份识别
管理系统。
(5) Essex——Openstack发布的第五个版本,完善了 Keystone认证,删除了对 Windows Hyper-V支持的相关代码。
(6) Folsom——2012年9月 Open Stack发布的第六版。 Folsom包括了 Nova swift、 Horizon Keystone、 Glance原有的五个子项目之外,又多增 Quantum和 Cinder两项。 Quantum支持了数个现有的
虚拟网络套件,如 Open vSwitch、Ryu
网络操作系统( Network Operation System,NOS)等,也包括了 Cisco、 Nicira和
NEC等厂商提供的虚拟网络套件等, Quantun可以让Open Stack的IaS平台能采用
软件定义网络( Software Defined network,
SDN)的技术,如
OpenFlow。Cinder则加强了区块( Block)与磁盘区( Volume)的储存能力。
(7)Grizly——2013年4月Open Stack基金会发布的第七个版本。
Grizzly新增近230个新功能,涉及计算、存储、网络和
共享服务等方面。例如 Open Stack计算虚拟化-计算使用“Cells”管理分布式集群,使用“NoDB”主机架构,以减少对中央数据库的依赖。
(8) Havana——2013年10月 Open Stack基金会发布的第八个版本。 Havana除了增加Open Stack Metering( Ceilometer)和 Open Stack Orchestration(Heat)两个新组件外,还完成了400多个特性计划,修补了3000多补丁。
(9) Icehouse——2014年4月 Open Stack基金会发布的第九个版本。新版本提高了项目的稳定性与成熟度,提升
用户体验的一致性,特别是针对存储方面。联合身份验证将允许用户通过相同认证信息同时访问 Open Stack私有云与共有云。新项目 Trove( DB as a service)现在已经成为版本中的组成部分,它允许用户在 Open Stack环境中管理
关系数据库服务。
(10)Juno——2014年10月 OpenStack基金会发布的第十个版本。新增包括围绕
Hadoop和 Spark集群管理和监控的自动化服务和支持
软件开发、
大数据分析和大规模
应用架构在内的342个
功能点,标志着 Open Stack正向大范围支持的成熟云平台快速前进。自 Openstack项目成立以来,超过200个公司加入了该项目,其中包括
AT&T、
AMD、 Cisco、Dell、
IBM、 Intel、 Red hat等。目前参与 Openstack项目的开发人员有17000,来自139个国家,这一数字还在不断增长中。来自咨询机构 Forrester的分析表示, OpenStack已经逐步成为事实上( de facto)的基础架构云(IaaS)标准。
发展趋势
尽管 Open Stack从诞生到现在已经变得日渐成熟,基本上已经能够满足
云计算用户的大部分的需求。但随着云计算技术的发展, Open Stack必然也需要不断地完善。Open Stack已经逐渐成为市场上主流的一个
云计算平台解决方案。结合业界的一般观点和调查中关于 Open Stack用户的意见, Open Stack需要完善的部分大体上可以归纳为以下几个方面:
(1)增强动态迁移:虽然 Open Stack的Nova组件支持动态迁移,但实质上 Open Stack尚未实现真正意义上的动态迁移。在 Open Stack中因为没有共存储只能做块迁移,共享迁移只能在有
共享存储的情况下才被使用。
(2)
数据安全:
安全问题一直是整个
云计算行业的问题,尽管 Open Stack中存在对用户身份信息的验证等
安全措施,甚至划分出可以单独或合并表征安全信任等级的域,但随着
用户需求的变化和发展,安全问题仍然不可小觑。
(3)计费和
数据监控:随着 Open Stack在公有
云平台中的进一步部署,计费和监控成为公有云运营中的一个重要环节。云平台的管理者和
云计算服务的提供者必然会进一步开发Open Stack的
商业价值。尽管 Open Stack中已经有 Ceilometer计量组件,通过它提供的API接口可以实现收集云计算里面的基本数据和
其他信息,但这项工程目前尚处于完善和
测试阶段,还需要大量的技术人员予以维护和支持。
工作流程
Open Stack的各个服务之间通过统一的
REST风格的
API调用,实现系统的
松耦合。它内部组件的
工作过程是一个有序的整体。诸如计算
资源分配、控制调度、
网络通信等都通过
AMQP实现。 Open Stack的上层用户是程序员、一般用户和 Horizon界面等模块。这三者都是采用 Open Stack各个组件提供的API接口进行交互,而它们之间则是通过AMQP进行互相调用,它们共同利用底层的
虚拟资源为上层用户和程序提供
云计算服务。
管理流程
OpenStack既然是一个开源的
云平台项目,它的主要任务是给用户提供
IaaS服务。
QEMU
QEMU是一个纯软件的计算机硬件
仿真器。通过单独运行QEMU来模拟物理计算机,具有非常灵活和可移植的特点,利用它能够达到使用软件取代硬件的效果。
一般情况下,OpenStack可以部署在
Ubuntu的
Linux操作系统上,为了进一步提高QEMU的
运行效率,往往会增加一个
KVM硬件加速模块。KVM内嵌在Linux操作系统内核之中,能够直接参与计算机硬件的调度,这一点是QEMU所不具备的。一般的QEMU程序的执行必然要经过程序从
用户态向内核态的转变,这必然会在一定程度上降低效率。所以QEMU虽然能够通过转换对硬件进行访问,但在OpenStack中往往采用KVM进行辅助,使得OpenStack的性能表现得更为良好。
但需要说明的是KVM需要良好的硬件支持,有些硬件本身如果不支持虚拟化的时候,KVM则不能使用。
Libvirt
Libvirt是一个开源的、支持
Linux下虚拟化工具的
函数库。实质上它就是为构建虚拟化管理工具的
API函数。Libvirt是为了能够更方便地管理平台虚拟化技术而设计的
开放源代码的
应用程序接口,它不仅提供了对虚拟化
客户机的管理,也提供了对虚拟化网络和存储的管理。
最初的 Libvirt是只针对
Xen而设计的一系列管理和调度Xen下的虚拟化资源的API函数,目前高版本的 Libvirt可以支持多种虚拟化方案,包括KVM、QEMU、Xen、
VMware、
VirtualBox等在内的平台虚拟化方案,又支持 Openvz、LXC等 Linux容器虚拟化系统,还支持用户态Linux(UML)的虚拟化,它能够对虚拟化方案中的Hypervisor进行适配,让底层 Hypervisor对上层
用户空间的管理工具可以做到完全透明。
核心项目
OpenStack覆盖了网络、虚拟化、操作系统、服务器等各个方面。它是一个正在开发中的云计算平台项目,根据成熟及重要程度的不同,被分解成核心项目、孵化项目,以及支持项目和相关项目。每个项目都有自己的委员会和项目
技术主管,而且每个项目都不是一成不变的,孵化项目可以根据发展的
成熟度和重要性,转变为核心项目。截止到Icehouse版本,下面列出了10个核心项目(即OpenStack服务)。
1、计算(Compute):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、网络&地址管理(Network):Neutron。提供
云计算的网络
虚拟化技术,为OpenStack其他服务提供
网络连接服务。为用户提供接口,可以定义Network、
Subnet、
Router,配置
DHCP、DNS、
负载均衡、L3服务,网络支持
GRE、
VLAN。插件架构支持许多主流的网络厂家和技术,如OpenvSwitch。自Folsom版本集成到项目中。
6、
块存储 (Block Storage):Cinder。为运行实例提供稳定的
数据块存储服务,它的插件驱动架构有利于
块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷。自Folsom版本集成到项目中。
7、UI 界面 (
Dashboard):Horizon。OpenStack中各种服务的Web管理门户,用于简化用户对服务的操作,例如:启动实例、分配
IP地址、配置
访问控制等。自Essex版本集成到项目中。
8、测量 (Metering):Ceilometer。像一个漏斗一样,能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑。自Havana版本集成到项目中。
9、部署编排 (Orchestration):Heat。提供了一种通过模板定义的协同部署方式,实现云基础设施
软件运行环境(计算、存储和
网络资源)的
自动化部署。自Havana版本集成到项目中。
10、数据库服务(Database Service):Trove。为用户在OpenStack的环境提供可扩展和可靠的关系和非关系
数据库引擎服务。自Icehouse版本集成到项目中。