介绍
历史与愿景
OpenStackTM是一个开源的基础设施即服务(IaaS)平台。OpenStack是由Rackspace和NASA共同努力发起的,其创立于2010年。它是用来管理大量的计算机、存储以及数据中心内的网络资源,所有的管理通过一个集中式的仪表板。
OpenStack是世界上开源社区里增长最快的一个项目,有超过18000的个人贡献者和430家参与企业。它是由OpenStack基础会组织,该基金会推进OpenStack的发展、发布及采用。基金会的个人会员是免费的,企业会员付费并分为两个等级,白金和黄金。基金会由董事会指导,董事会由个人和企业代表参加。
根据OpenStack Pulse 2014来自451的研究,基于OpenStack的市场收入到2016年预计将达到13亿美元,2018年将超过30亿。OpenStack正在迅速成为私有云部署平台的选择。
OPENSTACK软件
OpenStack平台是几个项目的集合,这几个项目共同提供了管理计算机、存储以及数据中心中网络资源的能力。OpenStack还提供了一系列API和集中的仪表板来管理云资源。OpenStack被设计运行在商用硬件上。针对想要在特定的企业级硬件上运行的客户,有特定的驱动程序提供。
OpenStack遵循一个一年两次的开发及发布的周期,在春末提供一个发布,秋季第二。版本的代号按字母顺序排列,最新的发布名叫Juno (以“J”开头代表第十次发布)。目前,Kilo版本是主要开发版本,其计划在2015年四月发布。Liberty版本将随后2015年十一月份发布。
每次发布后,OpenStack社区会召集并审查新发布的云计算软件,并开始计划的下一个版本(设计峰会)。接下来的两次OpenStack峰会将在加拿大温哥华和日本东京举行。
采用趋势
OpenStack采用主要反复斟酌其创新能力,自动化和开放的技术这三大驱动因素来选择。IT行业显示出广泛地吸收和采纳正在与日俱增,在学术研究,电信,金融,媒体等中更是如此。OpenStack在全球许多地区被广泛采用,越来越多的OpenStack的部署从测试环境迁移到生产环境中去。
各种组织机构在OpenStack云上运行各种各样的工作负载,前两位是Web服务和QA测试。OpenStack的用户报告显示越来越多的企业应用正在部署。
组件概览
集成项目
OpenStack系统是服务的集合,这些服务作为集成的部分会定期一到两年左右发布。所有的OpenStack软件适用于Apache License。
计算
OpenStack 计算服务(Compute service) (Nova)提供按需供应的和可管理的虚拟机。它支持多种类型的虚拟机包括KVM,XenServer, VMware ESXi和Microsoft Hyper-V。另外,它还支持Linux容器例如LXC。
存储
OpenStack 存储服务(Storage service)提供两种对象存储和块存储。对象存储支持水平扩展(scale-out)和分布式非结构化的数据(distributed non-structured data);块存储为虚拟实例(虚拟机)提供虚拟存储。
对象(Object) : OpenStack 对象存储(Object Storage) (Swift) 提供了高性价比,可API访问,分布式,冗余,可作为水平扩展存储文档和数据备份的功能。
块(Block) : OpenStack 块存储(Block storage) (Cinder) 支持创建,附加和分离块设备到虚拟服务。它被完全集成在OpenStack计算组件中,可以通过Dashboard(管理面板)被管理,同时,通过特殊的驱动,它还支持与企业级存储平台集成,诸如Nimble,Solidfire或者 EMC。另外,它还支持卷快照功能。
网络
OpenStack 网络服务(Networking service) (Neutron)提供一个可插拔的,由API驱动的,IP地址的网络管理平台。它提供了多种网络模式(Flat, VLAN,VXLAN),静态IP,DHCP。它通过有效的软件定义网络平台例如 OpenFlow 来获得高级网络能力。
共享服务
除了计算,存储,网络三大基本组件,OpenStack 已经有很多服务,他们相互集成众多组件彼此很好地扩展系统,为用户提供一个统一的体验。
认证
OpenStack 认证服务(Identity service) (Keystone)提供认证及认证功能。它提供一个集中的用户目录,并映射他们到其可以访问的服务上。它还可以集成扩展后端的目录服务,例如LDAP。
镜像
OpenStack 镜像服务(Image service) (Glance)为磁盘和服务器镜像提供可API访问的发现,注册和传送服务。镜像服务可以把镜像存储在各种各样的后端,包括存储在OpenStack的对象存储Swift上。OpenStack镜像服务适配多种格式的镜像,包括Raw,VHD,VMDK和VDI。
监测
OpenStack 监测服务(Telemetry service) (Ceilometer) 提供OpenStack对服务间使用概况监测,性能数据监测以及警报功能。
编排
OpenStack 编排(Orchestration service) (Heat)提供自动化的,基于模板的基础架构部署能力。与监测服务一样,它对所选择的功能,能提供自动化伸缩的功能。
数据库
OpenStack 数据库服务(Trove) 提供了 OpenStack 云基础设施数据库即服务(DBaaS)的能力。
控制面板
OpenStack 控制面板(Horizon)提供了集中化的图形用户接口来访问,提供和管理云资源。第三方服务比如计费和监控能够很容易地和 OpenStack 控制面板集成。OpenStack 服务也可以通过 API 访问。
数据处理
OpenStack 数据处理服务 (Sahara) 提供了一个可伸缩的数据处理堆栈和相关的管理接口。
最新项目
OpenStack 有更多能够选择与其他 OpenStack 服务集成的服务。这些项目中的一些包括应用程序目录(Murano),裸机服务 (Ironic),容器服务 (Magnum),部署服务 (TripleO),DNS即服务(Designate),密钥管理 (Barbican),消息服务 (Zaqar),共享文件系统 (Manila)等。
逻辑概述
关于 OpenStack 架构的逻辑视图,请查阅此链接。
传递机制
OpenStack软件目前以两种方式交付给客户:1.作为一个通常被称为‘分配’的集合包。一类特殊的分配是捆绑在一起的特定的硬件,被叫做“设备”。2.作为服务:目前,对于OpenStack来说通过分配来传递是默认的传递机制。除了像Debian和Fedora非商业的分配外,许多厂商提供专门的分配,通常添加增值服务。
分配
OenStack分配捆绑OpenStack服务作为包来被下载;这些包可以从不同的平台获取(Ubuntu, GentOS, Debian等)。OpenStack软件是一个连续基础更新的软件,并且可以从通常称为箱子的地方下载。这些持续更新的版本是不稳定的:每年只有两个版本是稳定的。一个是可以随时下载最新的稳定版本而不是不断构建的包。
第三方分配
参与的生产商也向他们的客户提供OpenStack的分配。生产商提供了一下几个优势:增值服务、专属服务或者与其他的生产商整合。下面是一下著名的第三方分配:
1.Mirantis OpenStack: Mirantis OpenStack是一个源自Mirantis的OpenStack,是最大的OpenStack系统的综合商(SI)之一。他们通常被称为一个纯粹的OpenStack的厂商,这充分体现了他们作为一个供应商的哲学并且开源的特性。
2.红帽子企业的Linux OpenStack平台: 红帽子企业的Linux OpenStack平台是一个源自红帽子的安全、企业级云平台,这促使了红帽子的Linux和红帽子企业的虚拟化平台的优势。
3.惠普Helion OpenStack: HP Helion OpenStack是一个源自惠普的可升级的、安全的OpenStack分配,很多增值服务都与惠普提供的其他服务整合的很好。惠普也提供一个免费下载的操作:HP Helion OpenStack 社区版并伴有小规模的私有云支持。
4.IBM 云管理:IBMOpenStack云管理是一个IBM基于OpenStack的云管理软件。
5.其他:你会发现更多的OpenStack分配,包括Nebula,一个云控制器。Piston OpenStack,Rackspace 私有云软件,Ubuntu OpenStack等等。
作为一种服务:
很多提供商通过“作为一种服务”的传递机制来提供OpenStack云,其中OpenStack云是按需定制的而且在托管的环境下。客户获得单一的被租用OpenStack云并有一下优势:包含API接口、无部署和操作的开销。
对于那些想在一个专用的、隔离的环境下,但是不想子操作和其它基础设施上开支的客户来说,OpenStack云即服务是一个诱人的选择。
1.Blue Box:Blue Box,一个在西雅图启动的风险投资(A系列、B系列),是最早提供托管的OpenStack私有云即服务(Pcaas)的提供商之一。Blue Box在Forrester Wave:托管私有云解决方案, Q4 2014上被评为“佼佼者”.Blue Box发起了OpenStack西雅图用户会并积极地贡献于OpenStack社区,特别是围绕OpenStack的工作小组。他们最近开始提供服务,在你自己的数据中心管理的OpenStack私有云,由Blue Box专家全面管理。
2.Metacloud(被思科收购):Metacloud ,现在是思科的一部分,OpenStack云即服务的又一提供者。他们开始时提供Cloud-in-a-box还有基于OpenStack的私有云应用,并且表示将提供托管的私有云。他们的顾客OpenStack分配也同样因为他们的超用户体验(UX)而出名。
环境
公共云
了解关于OpenStack云操作的最容易的方法是尝试基于OpenStack公共云服务提供商之一。这里是一些公共云服务提供商。你可以进一步了解 这里.
Rackspace公共云
Rackspace公共云是基于OpenStack公共云最大的服务提供商。Rackspace是OpenStack的共同创立者之一,也是OpenStack项目和文档的强大的贡献者。
惠普HELION公共云
惠普Helion公共云,基于OpenStack的惠普公共云服务,提供计算和存储资源。
本地
假如你想要在本地环境开始, 你可以很容易的使用DevStack入门– 一个容易安装,一体化的配置。
DEVSTACK
DevStack 是一种简单的方法来安装最小化配置的OpenStack测试云。目前可用于Ubuntu,Fedora和CentOS/RHEL 平台。
托管
托管OpenStack云是一种开始OpenStack的简单选择。例如,当你注册成为一个提供商,如Blue Box,你就可以让你的私有云在几个小时内启动。这个现实一个活跃资源的Blue Box账户控制面板的快照:
关键术语
访问密钥/安全密钥
组合使用来访问和与一个计算实例通讯。安全密钥用于加密每次请求。
可用区域
云范围内用于对虚拟机提供容错的一组隔离的虚拟层。
块存储
存储类型,目的是提供挂在到虚拟机上的持久化存储,它支持卷,卷快照和卷类型管理。
容器(对象)
在对象存储中组织和存储对象。
容器(LXC)
Linux容器是在单个Linux宿主上运行多个相互隔离的Linux系统的操作系统级别的虚拟环境。Openstack容器服务(Magnum)提供应用容器的管理功能。
固定/静态IP
相同VM(虚拟机)每次启动的时候关联的IP地址。这可用于管理VM,但用户通常不能访问它。
配置
虚拟机镜像的一组参数,包括CPU占用率,内存大小,存储空间大小,等等。
浮动IP
与虚拟机实例关联的公开的IP地址,这样该实例每次启动的时候其公开的IP地址都相同。
镜像
需要用它来创建或者重建服务器的某个特定的操作系统的文件集合。Openstack支持多种镜像格式(AMI,VMDK,VHD,QEMU)
网络
在实体之间提供第2层网络连接的虚拟网络。
对象
对象是存储在对象存储中的任意类型的数据,它可以是任意格式的数据——文件、音乐、视频,或者二进制数据。
对象存储
存储类型,它终于支持一致的、冗余的和非结构化的数据的存储。
项目/租户
逻辑用户组,通常也称为租户。
配额
以项目为单位设置的计算和存储资源的限额。
角色
一个角色拥有一个权限集。某角色的用户继承角色的所有权限。
安全组
应用于计算实例的一组过滤规则。
服务
提供用户通过其访问和控制资源的某个Openstack服务。
快照
存储卷或者镜像在某个时间点的拷贝。
用户
项目/租户消费云资源的一份子。
卷
基于磁盘的数据存储,通常表现为支持扩展属性的iSCSI设备。这种存储可能是持久的或短暂的(重启后丢失)。
快速启动命令
OpenStack也提供了一个命令行工具 (OpenStack客户端工具)来访问、提供和管理云资源。本节提供一些常见场景下如何使用OpenStack客户端工具的范例。安装客户端的时候请参考相关说明。同时,确保使用一个包含必须的凭证的openrc文件来认证。
密钥管理
创建和上传SSH密钥
SSH密钥用于SSH登录到Openstack启动的示例中。新启动示例的时候,Openstack有一个内置的方法将一个SSH密钥对的公开部分插入到保存已认证的密钥的文件中。计算服务可以为你创建密钥的私有部分,或者你也可以上传已经存在的密钥对的公共部分。
上传已经存在的密钥对的公共部分
$ nova keypair-add --public-key ~/.ssh/id_rsa.pub <keypairname>
使用创建的密钥启动实例
为了启动一个实例,一组最小信息是必须的:镜像、配置和名称。大多数OpenStack环境也要提供可用的网络设备。
启动实例
$ nova boot --image <image_name> --flavor <flavor_name> --nic net-id=<network_id> --key-name <keypairname> <server_name>
你可以用下面的命令找到所需的信息,如镜像、配置和网络。
发现可用镜像
$ glance image-list
发现可用配置
$ nova flavor-list
发现可用网络
$ neutron network-list
服务器管理
列出所有实例
$ nova list
按状态列出实例
$ nova list --status build $ nova list --status active $ nova list --status error
设置示例元数据
实例元数据对示例排序和分类是很有用的。元数据是按每实例存储的自由形式的键值对key=value。
$ nova meta <server> set key=value [key=value]
重新构建服务器
重新构建服务器比初始化构建需要的参数少。这可能是重置状态和启动的简单方法。
$ nova rebuild <server> <image>
显示服务器日志
OpenStack具有现实日志的能力。
$ nova console-log <server>
分配浮动IP并附加到某个虚拟机上
浮动IP创建一个公开可达的IP和从它到一个已配置实例的直接连接。这个不需要真的存在于这个实例上;相反,它提供了一个类似NAT的关联。首先,必须从一个现有的浮动IP池中分配一个IP,然后将它附加到某个实例上。
发现可用的浮动IP池
$ neutron floatingip-list
分配浮动IP
$ nova floating-ip-create <floating ip pool>
将浮动IP与服务器实例关联
$ nova add-floating-ip <server> <floating-p>
安全组更新安全组
安全组类似于一群系统的防火墙。你可以提供引用其他组或者CIDR区间的访问规则。这些组可以附加到一个实例上提供对该示例的访问规则。
为SSH登录创建一个安全组
$ nova secgroup-create <name> <description>
创建一个入站SSH规则
$ nova secgroup-add-rule --proto tcp --dst-port 22 <group_name>
添加安全组到服务器实例
$ nova add-secgroup <server> <group_name>
镜像管理创建正在运行的服务器的镜像
服务器镜像允许创建以后可以重用的预配置的镜像。它们可以用于启动新的服务器实例,并在列出镜像的时候会显示出来。
$ nova image-create <server> <image>
创建镜像
从一个现存的镜像或者URL创建一个新的镜像。可选参数包括镜像ID、磁盘格式、项目、从那个卷创建,等等。
$ glance image-create –name <image>
列出镜像
$ glance image-list
删除镜像
$ glance image-delete <image>
块存储
创建一个块存储卷
快存储卷是一个非直接连接运行中实例的块设备。它可以在某个时刻附加一个实例,但是假如该实例本身出现异常或者停止运行,该块也会一直运行。 OpenStack 卷通常是指一个允许使用 easy-to-use API 来交互的 SAN 接口。
$ cinder create – -dislplay-name <name> <size_in_GB>
附加块存储卷到服务器实例
当块存储卷附加到服务器的时候,它可以依靠系统自动分配一个实例到新卷的设备 ID 中,当然,你也可以选择指定 ID。一旦卷被附加到服务器上,假如它是一个新的卷,那么需要在使用之前格式化。之后使用卷则不需要格式化。
$ nova volume-attach <server> <volume> <device>
对象存储
创建一个对象存储容器
OpenStack 对象存储不是一个传统的文件系统,而是一个静态数据类的分布式存储系统,例如,虚拟设备镜像,图片存储,邮件存储,备份以及存档。它并没有中央“大脑”或主节点控制提供了更大的可伸缩性,冗余性和耐用性。事实上,对于它来说,数据代表对象,而对象存储在容器当中。
$ swift post <container_name> $ swift post <container_name> <file_path>
从容器下载对象
$ swift download <container_name> <object_name>
身份和访问控制
创建用户
云管理员可以仅用一个用户创建新用户。可选参数包括项目ID、email和密码。
$ keystone user-create <name>
列出用户
可以列出所有用户,可以选择用具体的项目过滤(用项目名称或者ID过滤)。
$ keystone user-list [--tenant <tenant>]
删除用户
$ keystone user-delete <name>
创建角色
$ keystone role-create <name>
删除角色
$ keystone role-delete <role>
列出角色
$ keystone role-list
添加角色到租户
$ keystone user-role-add --user --role <role> [--tenant <tenant>]
创建租户
$ keystone tenant-create <name>
列出租户
$ keystone tenant-list
设置租户属性
$ keystone tenant-update –property <tenant>
删除租户
$ keystone tenant-delete <tenant>
设置配额
配额可以在项目或者基于类设置来限制资源的消费,例如内存大小、IP地址、内核数量、存储卷大小,等等。
$ nova quota-update – - properties <tenant>
检查配额
OpenStack可以强制资源消费配额。这个命令需要项目名称参数;项目是租户的新名称。
$ nova quota-show <tenant>
显示可用性区域列表
OpenStack 支持可用性区域,提供允许服务的逻辑分离或集群。这些都是能源接入性或者地理位置的原因。启动新的实例时可以选择一个区域。
$ nova availability-zone-list
工具和生态系统
市场
OpenStack 消费者有很多选择,可以从服务提供商,供应商,系统集成商,分配,培训员,顾问等等选择。为了帮他们做出明智的决定,OpenStack 提供了一个信息和评论的中央存储仓库。它也允许搜索根据你所选择的区域/位置。
SDK
在你的数据中心,OpenStack 提供两种方式去管理你的计算,存储和网络资源:管理界面(Dashboard)和服务端点(Service Endpoint)。OpenStack 服务端点(Service Endpoint)是通过程序访问接口(REST API)暴露在外面的。通过任何REST客户端可以访问这些 API,例如客户端工具的有效性被作为 OpenStack 工程的一部分。SDK 的这些 API 在各种不同的程序语言中也是能有效工作的。
OpenStack 客户端工具
OpenStack 为各种不同的工程,包括计算,对象存储,认证,网络,数据库,镜像服务提供官方客户端,与此同时,还为其他开发中的工程提供客户端。
OpenStack 的 SDK
官方的 OpenStack SDK 是基于 Python 的,非官方的 SDK 包括有 Node.js,Go, Java, Ruby, PHP, .NET 等等。
其他工具
在真实的云部署上,使用大量的开源工具是不可避免的。这里有一些广泛与 OpenStack 一起使用的工具。注意,一些专有的 OpenStack 分布可能不需要这些工具,因为他们往往涵盖了定制化的等价工具。
ORCHESTRATION
尽管 OpenStack 包括 Orchestration 服务(热),许多部署采用流行的 orchestration 工具,例如,Chef,Puppet 和 Ansible。一些部署也采用自行研发的工具。
Chef: Chef 是一款流行的配置管理工具,源于Chef(原名Opscode),被广泛用于OpenStack 部署。有许多官方的 cookbooks(食谱)可让你开始使用 Chef 部署 OpenStack。 Puppet: Puppet 是另一款流行的配置管理工具,源于 PuppetLabs。一个可以使用用于部署大规模 OpenStack 云的官方 Puppet 模块。 Ansible: Ansible 软件是一款无代理的配置管理工具,源于 Ansible。尽管官方的 Ansible 手册不是用于 OpenStack,但依然可以使用这些手册入门。监控
操作大型Openstack云需要对不同的组件进行稳定的监测,不论是计算资源,虚拟机,或者虚拟网络,都需要监测它们的健康状况。这样的监控也提升了监控的主动性,例如,当一个计算节点试图访问特定的CPU利用率。OpenStack提供监控服务,它提供了基于事件的可监控的基础架构;不过,它还没有提供完整的监控能力。因此,OpenStack云部署通常利用开源的监控工具例如Nagios。
日志
提供高级的日志管理功能,可以使用开源工具LogStash。LogStash为日志记录,解析和存储日志提供一个集中化处理功能。当搜索工具(诸如ElasticSearch)在conjunction中被使用的时候,给你的OpenStack云提供了一个强有力和可扩展的日志管理解决方案。
服务提供
部署 OpenStack 涉及提供裸机服务器作为控制器结点或者资源资源。Chef、Puppet、Ubuntu Maas和 Crowbar 都是流行的供应工具。OpenStack 裸机供应也是一个选择。
社区
OpenStack 的最大优势就是它的活跃的社区。来自超过140个国家的超过18000位贡献者共同组成了这个社区,而且还有超过70个遍及全球的用户组。这些用户组定期聚会,而且在会场传递分享意识、科技讨论、以及展示友好。假如你是 OpenStack 的新用户,你可以从其他的用户那里很容易地学到东西。
用户组
一些最大的用户组是 SFBay OpenStack 用户组、印度 OpenStack 用户组和中国 OpenStack 用户组。为了学习他人的经验,要找离你最近的用户组或者选择一个属于你的地域。
文档
在线文档
OpenStack项目为系统管理员、云管理员、最终用户、架构师、操作员及云开发人员提供了大量文档。有针对不同操作系统的手册(Ubuntu, RHEL, Debian和 SUSE),其中包含了常用的配置及每一个发布版本的更新。文档中安全及高可用性等内容会定期更新,而不以按OpenStack的发布版本来更新。
Ask OpenStack 支持中心
假如对OpenStack有一些细节上的问题,可以到Ask OpenStack咨询,这是一个以流行的StackOverflow为模型的众筹式的Q&A网站。
OpenStack WIKI
OpenStack的开发人员使用一个内部的wiki讨论项目细节。并不建议最终用户使用。
用例
OpenStack
大量纵向市场的多个用户使用OpenStack。这里有最流行最成功的用例
云服务提供者
在这一用例中,OpenStack 平台被用来提供一个巨大范围的虚拟架构(计算和存储)服务(虚拟架构即服务)。一个典型的栈包括诸如 KVM(虚拟机),Ubuntu(操作系统), OpenStack (云管理层),Nagios (监控),LogStash (日志),Kibana (分析),Chef (编排),HAProxy (负载均衡)这些开源工具。尽管这些商品化硬件常被用来提供计算和各种特定的存储,各种硬件配置的部署取决于所提供服务的需要。Rackspace 公有云是这种典型的案例。
电信服务提供商
电信服务商是早期 OpenStack 的采用者,缘于他们对私有云的需求。典型的使用案例是“IT 即服务”,他们不是内部组织就是合作伙伴。对不同的供应商提供相应的工作负载和应用程序。OpenStack社区正在努力开发电信领域特殊的高级功能(诸如:NFV)。
在这些电信公司之中,据报道爱立信正在与 Mirantis 开发一个用例。
开发/测试
一个广泛适用的OpenStack用例是在开发/测试云上进行持续集成(Continuous Integration)/持续开发(Continuous Development)(CI/CD)。除了支持业务上的敏捷性,例如:开发/测试云的工作负载增加了客户对在OpenStack云上运行LOB应用的信心。应用和工作负载运行在云上,取决于客户,但是这通常涉及源代码仓库(以Git为例),测试框架(Jenkins),bug数据库(Atlassian),部署工具,还有更多。
关于作者
Sriram Subramanian
Sriram Subramanian是CloudDon LLC的创立者和主要的云计算专家,这家公司是一家云服务公司,提供搜索,分析和系统集成服务。作为一个流行的云影响力者和Helion HP MVP,他在他的博客和其他流行门户中提供了深刻的见解。他在OpenStack峰会和当地聚会上频繁地提及挑战以及采用OpenStack的最佳实践。他过去的工作经验包含在ComputeNext,Microsoft, Intel和Hitachi这些公司从事大量的技术工作,类似云计算,虚拟化,编译和低功耗设计。