介绍

历史与愿景

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 入门

OpenStack遵循一个一年两次的开发及发布的周期,在春末提供一个发布,秋季第二。版本的代号按字母顺序排列,最新的发布名叫Juno (以“J”开头代表第十次发布)。目前,Kilo版本是主要开发版本,其计划在2015年四月发布。Liberty版本将随后2015年十一月份发布。

每次发布后,OpenStack社区会召集并审查新发布的云计算软件,并开始计划的下一个版本(设计峰会)。接下来的两次OpenStack峰会将在加拿大温哥华和日本东京举行。

采用趋势

OpenStack采用主要反复斟酌其创新能力,自动化和开放的技术这三大驱动因素来选择。IT行业显示出广泛地吸收和采纳正在与日俱增,在学术研究,电信,金融,媒体等中更是如此。OpenStack在全球许多地区被广泛采用,越来越多的OpenStack的部署从测试环境迁移到生产环境中去。

OpenStack 入门

各种组织机构在OpenStack云上运行各种各样的工作负载,前两位是Web服务和QA测试。OpenStack的用户报告显示越来越多的企业应用正在部署。

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账户控制面板的快照:

OpenStack 入门

关键术语

访问密钥/安全密钥

组合使用来访问和与一个计算实例通讯。安全密钥用于加密每次请求。

可用区域

云范围内用于对虚拟机提供容错的一组隔离的虚拟层。

块存储

存储类型,目的是提供挂在到虚拟机上的持久化存储,它支持卷,卷快照和卷类型管理。

容器(对象)

在对象存储中组织和存储对象。

容器(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。一些部署也采用自行研发的工具。

  1. Chef: Chef 是一款流行的配置管理工具,源于Chef(原名Opscode),被广泛用于OpenStack 部署。有许多官方的 cookbooks(食谱)可让你开始使用 Chef 部署 OpenStack。
  2. Puppet: Puppet 是另一款流行的配置管理工具,源于 PuppetLabs。一个可以使用用于部署大规模 OpenStack 云的官方 Puppet 模块。
  3. 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),部署工具,还有更多。

关于作者

OpenStack 入门

Sriram Subramanian

Sriram Subramanian是CloudDon LLC的创立者和主要的云计算专家,这家公司是一家云服务公司,提供搜索,分析和系统集成服务。作为一个流行的云影响力者和Helion HP MVP,他在他的博客和其他流行门户中提供了深刻的见解。他在OpenStack峰会和当地聚会上频繁地提及挑战以及采用OpenStack的最佳实践。他过去的工作经验包含在ComputeNext,Microsoft, Intel和Hitachi这些公司从事大量的技术工作,类似云计算,虚拟化,编译和低功耗设计。

你可能感兴趣的内容
Git简单入门教程 收藏,4459 浏览
0条评论

dexcoder

这家伙太懒了 <( ̄ ﹌  ̄)>
Owner