概述
是什么?
开放栈(OpenStack)是一个免费的开放标准的云计算平台,用于构建基础设施即服务(IaaS)业务。
谁在用?
开放栈同时被公有云和私有云大量部署使用,几乎是目前最流行的云平台构建软件。
功能方向:
IaaS是指向用户提供虚拟机和其他资源。
而开放栈则由多个相互关联的组件构成,用来控制各种各样的、来自各个不同厂商的、横贯整个数据中心的处理器、存储和网络资源的硬件资源池。
用户可以通过如下方式来控制:
- 网页的管理界面
- 命令行工具
- RESTful网络服务
开放栈最初是在2010年作为机架空间主机托管公司(Rackspace Hosting)和(美国)国家航空航天局(NASA)的一个合作项目而发起的。到了2012年,它开始由开放栈基金会(OpenStack Foundation)管理,这是一个非盈利的公司实体,于2012年9月建立,用于推进开放栈及其社区。有超过500个公司参与了该项目。
历史
发展
2010年7月,机架空间主机托管公司和(美国)国家航空航天局联合发起了一个开源的云软件倡议,被称为“开放栈”。它的使命声明(mission statement)是:
“实现一个无处不在的开源云计算平台,通过使其易于实现而又高度可伸缩,使它可以同时满足公有和私有云的需要,而不论其大小如何。”
译注:代号文化。很多项目都会为自己指定一个代号(codename),而这一点在开放栈项目中尤为明显。这包括:
- 每个版本都有一个代号
- 每个模块都有一个代号
- 代号常常采纳各种不同都文化,例如日本都城市名、中国都山名等等
开放栈项目的目的是帮助组织去提供运行在标准硬件上的云计算服务。该社区的首个官方发行版(代号:奥斯汀,Austin)于2010年10月21日——也就是项目发起后3个月——首次发布,并且计划每几个月就发行一个该软件的更新。其早期的代码是来自于(美国)国家航空航天局的“星云”平台,以及机架空间的“云文件”平台。最初的云架构是由(美国)国家航空航天局(NASA)艾姆斯研究中心(Ames)的网络部门经理梅根·A·埃斯基(Megan A. Eskey)所设计的,它在2009年时曾是一个开源的架构,被称为“开放式NASA 2.0版”。随后,NASA星云团队和机架空间(Rackspace)一道将“云栈”和“开放栈”的模块合并,并将其以开源形式发布。
各方支持开放栈的历史:
- 2011年,乌班图(Ubuntu)开始支持开放栈的“仙人掌”(Cactus)发行版
- 2011年,德卞 (Debian)Sid支持开放栈“仙人掌”。德卞从7.0开始包含开放栈(2012.1版本,代码:埃塞克斯,Essex)
- 2011年10月,Suse支持开放栈,基于其“迪亚布洛”(Diablo,西班牙语“恶魔”,湾区一地名)发行版。2012年8月,Suse发布了商业支持的开放栈发行版,基于“埃塞克斯”。
- 2012年11月,英国政府数字总署(Government Digital Service,简称GDS)发起了“走进政务”(Inside Government)项目,基于开放式NASA v2.0的“政务即平台”(GaaP)模式。
- 2012年,红帽宣布了它的开放栈发行版的一个预览版,是从“埃塞克斯”发行版开始的。在发布了另一个预览版之后,2013年7月,红帽从其“灰熊”(Grizzly)版开始,引入了对开放栈的商业支持。
开放栈组织增长十分迅速,目前已经得到540个公司的支持。
2012年,NASA从开放栈项目中撤出,不再作为活跃的贡献者,并且,替代地,做出了一个战略性的决策,开始使用亚马逊的AWS作为其云服务的提供者。2013年,NASA发表了一项内部审计报告,其中指出了缺乏技术进展以及其他的原因,导致该机构关于不再作为活跃开发者而参与该项目,转而专注于使用公有云。但是该报告与艾姆斯研究中心首席信息官(CIO)雷·奥布里恩(Ray O'Brien)所做的评价部分矛盾。
2013年12月,甲骨文宣布它已经以资助人的身份加入到开放栈项目中,并计划将开放栈带入甲骨文的昇阳操作系统(Solaris)、甲骨文Linux,以及它的很多产品中。随后,与2014年9月24日,发布了用于Oracle Solaris的甲骨文开放栈的发行版,以及使用“冰屋”(Icehouse)的甲骨文Linux。
2014年5月,惠普宣布,惠普宣布了惠普“氦核”(Helion)产品,并发布了惠普“氦核”开放栈社区的一个预览版,它是从“冰屋”(IceHouse)发行版开始的。惠普字2012年起,就在开放栈上运营惠普“氦核”(Helion)公有云。
截至2015年3月,NASA仍旧将开放栈用于其私有云。
历史名称
一些开放栈项目,因为商标原因,而改名了。
- “中子”(Neutron)最初被称为“量子”(Quantum)
- “撒哈拉”(Sahara)以前被称为“萨瓦那”(即“稀树草原”,Savanna)
- “指派”(Designate)以前被称为“绰号”(Moniker)
- “宝藏”(Trove)以前被称为“红矮星”(RedDwarf)
- “扎卡尔”(阿拉伯语“木星”,Zaqar)以前被称为“马可尼”(Marconi,马可尼,意大利人,电报的发明人)
发布版历史
开放栈的发布版历史(release history)如下:
发布版代号 | 中文 | 发布日期 | 新增组件 |
Austin | 奥斯汀 | 2010-10-21 | * 新星/Nova(计算) * 雨燕/Swift(对象存储) |
Bexar | 贝克萨尔 | 2011-02-03 | * 瞥视/Glance(系统映像/Image) |
Cactus | 仙人掌 | 2011-04-15 | 无 |
Diablo | 迪亚布洛(恶魔) | 2011-09-22 | 无 |
Essex | 埃塞克斯 | 2012-04-05 | * 地平线/Horizon(中控台/Dashboard) * 符石/Keystone(身份识别) |
Folsom | 佛森 | 2012-09-27 | * 量子/Quantum(网络,后改名为中子/Neutron) * 余烬/Cinder(块存储) |
Grizzly | 灰熊 | 2013-04-04 | 无 |
Havana | 哈瓦那 | 2013-10-17 | * 热浪/Heat(编排/Orchestration) * 云高计/Ceilometer(账务接口,属于“遥测”/Telemetry项目) |
Icehouse | 冰屋 | 2014-04-17 | * 宝藏/Trove(数据库DaaS,同时提供关系型和非关系型数据库支持) |
Juno | 朱诺 | 2014-10-16 | * 撒哈拉/Sahara(弹性映射缩减,用于提供Hadoop集群) |
Kilo | 千 | 2015-04-30 | * 铁质/Ironic(提供物理机Bare Metal Machine) |
Liberty | 自由 | 2015-10-16 | * 扎卡尔/Zaqar(消息传递) * 马尼拉/Manila(共享文件系统) * 指派/Designate(域名解析) * 瓮城/Barbican(秘钥管理) * 搜索之光/Searchlight(搜索) |
Mitaka | 三鹰 | 2016-04-07 | * 大个儿/Magnum(编排,用于对接Docker和K8S) |
Newton | 牛顿 | 2016-10-06 | * 烧火/Aodh(告警) * 云猫咪/Cloudkitty(批价/Rating) * 国会/Congress(策略/Policy,即商业策略,提供治理能力) * 冰柜/Freezer(分布式备份恢复和容灾) * 西北狂风/Mistral(工作流) * 莫纳斯卡/Monasca(监控API,含monasca-api、monasca-log-api) * 慕拉诺/Murano(应用/服务发布和编目) * 日式面包屑/Panko(事件存储,是存储“云高计”生成的事件,并与其同属“遥测”/Telemetry项目) * 森林/Senlin(集群) * 土壤层/Solum(应用生命周期) * 敲钉器/Tacker(虚拟网络功能/VNF编配) * 窗格/Vitrage(根因分析/RCA) * 守望者/Watcher(资源优化) |
Ocata | 奥卡塔 | 2017-02-22 | 无 |
Pike | 矛 | 2017-08-30 | 无 |
Queens | 女王 | 2018-02-28 | * 耀变体/Blazar(资源预留) * ceilometer-powervm(监视IBM PowerVM虚拟机管理器的性能) * 卡伯/Karbor(防止数据/元数据丢失,例如备份和复制) * 屋大维娅/Octavia(网络负载均衡) * 新秀/Storlets(对雨燕/Swift对象存储的扩展,通过Docker容器,在对象存储中安全、隔离地运行用户定义的代码) * 三环/Tricircle(API网关和网络自动化,帮助实现多开放栈实例,跨越一个或多个site,或者在一个混合云中,但是像一个开放栈云一样管理) * 樽/Zun(容器,以前称作“希金斯”/Higgins) |
Rocky | 磐石 | 2018-08-30 | * 仿生人/Cyborg(以前称游牧者/Nomad,提供用于对资源进行加速的通用管理框架,资源包括GPU、FPGA、SoC、SSD等等) * ec2-api(另一个可独立运行的EC2 API,实现了原新星/Nova计算组件内置的EC2 API的功能,外加实现了VPC API。与亚马逊EC2 API兼容) * 日本板斧/Masakari(高可用性/HA服务,自动恢复失效的实例) * 秦岭/Qinling(类似亚马逊AWS的兰步达/Lambda,提供无服务器的功能,即FaaS) |
Stein | 石核 | 2019-04-10 | * monasca-events-api(监控API的事件部分) * 布置/Placement(一个API服务,最初在牛顿版中作为新星组件的一部分,在本版本中独立出来,用于跟踪资源提供者的库存和用量) |
Train | 火车 | 2019-10-16 | 无 |
Ussuri | 乌苏里 | 2020-05-13 | 去掉 * 副手/Adjutant(一个工作流框架,将管理员和用户的任务自动化,支持链式行为) |
开放栈的开发
开放栈社区在一个6个月的、基于时间的发布周期上进行写作,具有经常性的开发里程碑。
在每个发布版(release)的计划阶段,社区会聚集召开“开放栈设计峰会”(OpenStack Design Summit),以便开发者召开工作会议,以及汇总计划。这些设计峰会会与开放栈峰会同时召开。
从“矛”(Pike,2017年8月版)的开发周期开始,开发会议被单独拆分为一个独立的“项目团队大会”(Project Teams Gathering,简称PTG)。这是为了避免让开发者受到那些在开放栈峰会期间的、针对客户的、对于开发者来说无聊的会议的演讲的干扰,并且允许设计讨论发生在下一个周期开始之前。
最近的开放栈峰会包括:
- 2019年11月04日~2019年11月06日,中国上海
- 2019年04月29日~2019年05月01日,美国丹佛
- 2018年11月13日~2018年11月19日,德国柏林
- 2018年05月21日~2018年05月25日,加拿大温哥华
- 2017年11月06日~2017年11月08日,澳大利亚悉尼
- 2017年05月08日~2017年05月11日,美国波士顿
- 2016年04月25日~2016年04月29日,美国奥斯汀
- 2016年10月25日~2016年10月28日,西班牙巴塞罗那
另外,更早的开放栈峰会还有:
- 2015年10月,日本东京
- 2015年05月,加拿大温哥华
- 2014年11月,法国巴黎
- 2014年05月,美国亚特兰大,吸引了4500名参与者,比上次增加了50%
- 2013年11月,中国香港
组件
开放栈具有一个模块化的架构,其组件有各种各样的代号。
译注:与其说开放栈(OpenStack)是一个“项目”,不如说它只是一个“旗号”,实际上在这个旗号下面分各个子项目。每个项目可能由不同都团队开发,专注于实现自己的功能。
计算(新星/Nova)
“新星”(Nova)是开放栈项目的一个项目,它一种提供计算实例(也就是虚拟机)的方法。“新星”支持:
- 创建虚拟机
- 创建实体机(baremetal servers)——通过使用“铁器”(ironic)来实现
- 对系统容器(containers)提供有限的的支持
“新星”在现有的Linux服务器上运行一系列的守护进程(daemons)来提供这些服务。
“新星”(Nova)是用Python编写的。它使用了许多的外部Python库,例如:
- “事件小程序”(Eventlet,一个并发联网库)
- 昆布海带(Kombu,AMQP消息框架)
- SQLAlchemy(SQL工具集,以及对象关系映射器)
“新星”(Nova)被设计为垂直可伸缩的(horizontally scalable),也就是说,当你需要更多的计算能力的时候,并不是让服务器变得更大(更多CPU/内存/硬盘),而是采购更多的服务器,并且简单地安装更多的配置雷同的服务器。
由于开放栈被广泛地集成到企业级基础设施中,如下点变成了越来越重要的问题:
- 总体监视开放栈的性能
- 特别监视“新星”(Nova)的性能
- 可伸缩性
监视端到端的性能需要来自“新星”(Nova)、“符石”(Keystone)、“中子”(Neutron)、“余烬”(Cinder)、“雨燕”(Swift),以及其他服务的跟踪指标(tracking metrics),除此之外,还有兔子MQ(RabbitMQ),它被开放栈用于消息传递。所有的这些服务都会产生它们各自的日志文件,在————尤其是企业级基础设施中——应当被监视。
联网(中子/Neutron)
“中子”是一个开放栈的项目,它在开放栈的其他服务(例如,“新星”——Nova)所管理的接口设备(例如虚拟网卡,即vNIC)之间提供“网络连接即服务”(NCaaS)。它实现了开放栈联网API。
它为开放栈环境中的虚拟网络基础设施(VNI)管理网络部分,并管理物理网络基础设施(PNI)的接入层(access layer)方面。开放栈组网组件(OpenStack Networking)使得各个项目可以创建先进的虚拟网络拓扑,它们可能会包含诸如防火墙、虚拟专用网(VPN)这样的服务。
“中子”(Neutron)允许专用的静态IP地址,也允许DHCP(动态IP地址分配)。它还允许浮动IP地址(Floating IP addresses),从而允许数据流量可以被动态地重路由。
用户可以使用例如OpenFlow这样的“软件定义网络”(SDN)技术,来支持多租(multi-tenancy)和伸缩(scale)。云栈网络可以部署和管理额外的网络服务,例如:
- 入侵检测系统(intrusion detection systems,简称IDS)
- 负载均衡(load balancing)
- 防火墙
- 虚拟专用网络(VPN)
块存储(余烬/Cinder)
“余烬”(Cinder)是一个开放栈的块存储服务,用于向机器资源提供卷,机器资源包括:
- “新星”(Nova)虚拟机
- “铁器”(Ironic)实体裸机
- 容器(container)
- 等等
“余烬”(Cinder)想要实现的一些目标包括:
- 基于组件的架构:快速添加新的行为(behaviors)
- 高可靠:可以伸缩到承担非常大的工作负载
- 差错容忍:隔离的进程,避免失效升级
- 可恢复性:失效原因应当易于查找、调试和纠正
- 开放的标准:成为社区所驱动的API提供一个参考实现
“余烬”(Cinder)卷为虚拟机(被称为“实例”,由开放栈的“计算”软件——即Nova——管理)提供持久化的存储。
“余烬”(Cinder)也可被独立地用作其他开放栈服务,作为一个独立的软件定义存储。
这个块存储系统可以:
- 管理块设备的创建和复制
- 快照管理
- 将块设备附着到服务器,或从服务器断开
除了能够使用本地Linux服务器存储之外,它还可以使用其他的存储平台,包括:
- 多爪鱼(Ceph)
- 云字节(CloudByte)
- 科莱德(Coraid)
- 易安信(EMC),包括:伸缩IO(ScaleIO)、VMAX、VNX,以及极限IO(XtremIO)
- 存池存储(StorPool Storage)
- G集群FS(GlusterFS),由G集群(Gluster,即GNU Cluster)公司开发的一种开源的、面向网络的文件系统
- 日立数据系统(Hitachi Data Systems)
- IBM存储(IBM Storage),包括:IBM DS8000, Storwize家族, SAN Volume Controller, XIV Storage System, and GPFS)
- Linux LIO
- 网应(NetApp)
- 耐可森塔(Nexenta)
- 迅捷存储(Nimble Storage)
- 斯卡利特(Scality)
- 固火(SolidFire)
- 惠普HP,包括存储虚拟(StoreVirtual)和3PAR存服(3PAR StoreServ)家族
- INFINIDAT (InfiniBox)
- 纯粹存储(Pure Storage)
身份识别(符石/Keystone)
“符石”(Keystone)是一个开放栈的服务,它通过实现开放栈的身份识别(Identity)API,来提供:
- API客户端鉴权(authentication)
- 服务发现(service discovery)
- 分布式多组授权(distributed multi-tenant authorization)
它是横贯整个云操作系统的公共的鉴权系统。“符石”可以与类似LDAP这样的目录服务集成。它支持:
- 标准用户名和密码凭据
- 基于令符的系统(token-based)
- AWS(亚马逊网络服务)样式的登录
开放栈“符石”服务目录(service catalog)允许API客户端动态地发现和导航到云服务
译注:“符石”(Keystone)是一种放置在石门的门拱中央的,或拱形屋顶中央的石头,上有刻有装饰性花纹符号,用于标识屋子的主人或家族。
印像(瞥视/Glance)
印像服务(“瞥视”,glance)项目提供一个服务,用户可以使用它来上传和发现最终目的是为其他服务所使用的数据资产。它目前包括印像和元数据定义。
印像(Image)
“瞥视”(Glance)印像服务包括对虚拟机(VM)印像的:
- 发现
- 注册
- 获取
“瞥视”(Glance)拥有一个RESTful API,它允许:
- 查询虚拟机印像
- 获取实际的印像
虚拟机印象可以通过“瞥视”(Glance)来为用户所使用,它可以被存储在各种各样的位置上,包括:
- 简单文件系统
- 对象存储系统(例如开放栈的“雨燕”/Swift项目)
元数据定义
“瞥视”会提供一个“元定义”(metadefs)目录。这为开放栈社区提供了一种方法,可以通过程序方式来确定各种各样的元数据键名,以及能够被应用到开放栈资源的有效的值。
对象存储(雨燕/Swift)
“雨燕”(Swift)是一种分布式的、最终一致性的对象(object)/二进制大对象(blob)存储。开放栈的对象存储(Object Store)项目,也被称为“雨燕”(Swift),提供了一个云存储软件,使得你可以使用一个简单的API,来存储和获取大量数据。它被构建为可伸缩式的,并且针对横贯整个数据集的耐用性、可用性和并发性都进行了优化。“雨燕”(Swift)对于存储那些会无边界地增长的非结构化数据来说是完美的。
2009年8月,机架空间(Rackspace)开始了对开放栈对象存储的前身的开发,作为对“云文件”(Cloud Files)产品的替代。最初的开发团队由9人组成。对象存储软件公司“雨燕栈”(SwiftStack)是“雨燕”(Swift)目前的领先开发者,同时,英特尔、红帽、日本电信电话株式会社(NTT)、惠普、国际商用机器公司(IBM)等,都对它的开发做出了重要贡献。
监控台(地平线/Horizon)
“地平线”(Horizon)是开放栈的监控台(Dashboard)经典实现,它提供基于网页的用户界面,用于访问开放栈服务,包括“新星”(Nova,计算服务)、“雨燕”(Swift,对象存储)、“顶石”(Keystone,鉴权)等。“地平线”提供三个中心监控台:
- 一个“用户监控台”
- 一个“系统监控台”,以及
- 一个“设置”监控台
“地平线”应用程序还提供了一系列的API抽象,用于开放栈的各个项目,从而开发者提供一个持久的、稳定的、可重用的方法集。通过使用这些抽象,在“地平线”上工作的开发者不需要非常熟悉各个开放栈的项目的API。
编排(热浪/Heat)
“热浪”是一个服务,它可以使用模板(templates)对多个综合(composite)云应用程序进行编排:
- 既可以通过一个开放栈的本地REST API来进行
- 也可以通过一个与“云构成”(CloudFormation)兼容的查询API来实现
工作流(西北狂风/Mistral)
“西北狂风”(Mistral)是一个服务,它管理工作流(workflows)。用户通常使用基于Yaml的工作流语言来编写工作流,然后将编写好的工作流定义,通过所提供的REST API,上传到“西北狂风”(Mistral)。然后,用户可以:
- 通过相同的API来手工触发该工作流,或者
- 配置一个触发器,来在某些事件发生时,自动启动该工作流
译注:Mistral也称“密斯特拉尔风”,是一种在法国南部刮起的、寒冷而极强劲的西北风,风力通常有8级,有时可达15级。风自西北而来,经法国南部,吹入地中海。
遥测(云高计/Ceilometer,账务接口)
开放栈“遥测”(Telemetry),代码为“云高计”(Ceilometer)为账务系统(billing systems)提供一个集中联系点(Single Point Of Contact)。
译注:Ceilometer是一种测量地面到云底之间的高度的仪器,航空上很常见,用来判断天气是否满足飞机的起降条件。这里用“测量云底高底仪器”来指代“用于云底账务收费模块”。
数据库(宝藏/Trove)
“宝藏”(Trove)是一个“数据库即服务”(database-as-a-service,简称DaaS)组件,它同时提供关系型和非关系型数据库引擎。
弹性映射缩减(撒哈拉/Sahara,用于Hadoop)
“撒哈拉”(Sahara)是弹性映射缩减(elastic map reduce)组件,它可以轻松而迅速地提供Hadoop集群。用户需要提供若干参数,例如:
- Hadoop版本号
- 集群拓扑类型
- 节点计算资源(flavor)明细(即磁盘空间、CPU、内存)
- 等等
当用户提供了所有这些参数后,撒哈拉就会在几分钟内部署这个集群。
实体裸机(铁器/Ironic)
“铁器”(Ironic)是一个开放栈项目,它提供实体裸机(bare metal machines)而不是虚拟机。它最初是从“新星”(Nova)“裸机”(Baremetal)驱动器中分离出来的,后来演进成了一个独立的项目。它是一套实体裸机的管理器(hypervisor)API,以及一系列的插件,能够与实体裸机的管理器(hypervisors)进行交互。它会使用PXE和IPMI来提供和开关机器,但是“铁器”(Ironic)也支持通过各个提供商的插件来进行扩展,从而实现额外的功能。
消息传递(扎卡尔/Zaqar)
“扎卡尔”(Zaqar)是一个提供为网络开发者的多租(multi-tenant)云消息传递(messaging)服务。该服务提供完全RESTful的API,开发者可以使用它来在他们所使用的SaaS各个组件,与移动应用程序之间发送消息,使用各种各样的通信方式。在这个API之下,是一个高效的的消息传递引擎,被设计为具有可伸缩性和安全性。其他的开放栈组件也可以与“扎卡尔”(Zaqar)集成,从而将事件暴露给(surface events to)最终用户,以及与各个运行在“云上”层("over-cloud" layer)中的客体代理(guest agents)进行通信。
译注:Zaqar在阿拉伯语中是“木星”的意思。
共享文件系统(马尼拉/Manila)
开放栈的共享文件系统(马尼拉/Manila)提供一个开放式的API,用于管理在一个供应商不可知的框架(vendor agnostic framework)中的共享资源。标准原语(primitives)对一个共享资源的:
- 创建(create)
- 删除(delete)
- 赋予/拒绝访问(give/deny access)
它的使用方式可以是:
- 独立运行(standalone)
- 在各种不同的网络环境中使用
支持来自如下厂商的商业的存储工具:
- 易安信(EMC)
- 网应(NetApp)
- 惠普
- 国际商用机器公司(IBM)
- 甲骨文(Oracle)
- Quobyte
- INFINIDAT
- 日立(Hitachi)数据系统
- 等等
另外还支持如下的文件系统技术:
- 红帽的“G集群FS”(GlusterFS)
- 多爪鱼(Ceph)
域名解析(指派/Designate)
“指派”(Designate)是一个多租(multi-tenant)REST API,用于管理域名解析(DNS)。该组件提供“域名解析即服务”(DNS as a Service),与许多后台技术兼容,包括PowerDNS和BIND。它不提供实际的DNS服务,因为它的的目的是与现有的DNS服务进行接口,从而以一种分租户的形式(on a per tenant basis)来管理DNS区。
搜索(搜索之光/Searchlight)
“搜索之光”(Searchlight)提供一个横跨多种开放栈云服务的、先进而持久的搜索能力。它通过将来自其他开放栈API服务器的用户的搜索请求,将其数据索引到ElasticSearch中,来进行卸载。“搜索之光”(Searchlight)已经被集成到“地平线”(Horizon,即监控台组件)中,并提供一个命令行接口
秘钥管理器(瓮城/Barbican)
“瓮城”(Barbican)是一个REST API,被设计用于机密信息的安全存储、提供和管理。它的目标是可以被用于所有的环境,包括大型暂时云(large ephemeral Clouds)
容器编排(大个儿/Magnum,对接Docker、K8S等)
“大个儿”(Magnum)是一个开放栈的API服务,由开放栈容器团队所开发。该服务可以让容器编排引擎,如Docker Swarm、Kubernetes(k8s)、Apache Mesos在开放栈中可以作为一级资源而被使用。“大个儿”(Magnum)使用“热浪”(Heat,编排系统)来对包含Docker和Kubernetes的操作系统印像进行编排,并在一个集群配置中的虚拟机或实体机中运行该印像。
根因分析(窗格/Vitrage)
“窗格”(Vitrage)是开放栈的RCA(根因分析,Root Cause Analysis)服务,用于组织、分析和扩展开放栈的告警和时间,产生关于问题的根本原因的见解,并且在他们被直接检测到之间,就推断出他们的存在。
注:Vitrage在法语中是“窗格”的意思。
基于规则的告警行动(烧火/Aodh)
该告警服务提供了基于预定义的规则而触发动作的能力。这些规则是基于“云高计”(Ceilometer,账务系统)或 Gnocchi 所采集的测量数据(metric)或事件数据(event data)的。
注:Aodh在爱尔兰语中是“烧火”的意思。
与其他云API的兼容性
开放栈并不力图去与其他云的API进行兼容。但是,也确实存在一些由各种开放栈社区的成员所驱动的兼容性功能,对于他们来说,这些功能可能是很重要的。
- EC2 API项目的目标是提供与亚马逊EC2的兼容性
- GCE API项目的目标是提供与谷歌计算引擎(Google Compute Engine)的兼容性
治理
开放栈是由一个非盈利基金会——及其董事会、一个技术委员会和一个用户委员会——进行治理的。董事会的组成是:
- 8名成员来自8个铂金资助者(platinum sponsors)
- 8名成员来自24个已定义的、受允许的黄金资助者(Gold sponsors)
- 8名成员由基金会独立成员选举产生
实用产品
开放栈实用产品(OpenStack Appliance)用于指代那些能够支持开放栈云计算平台的软件——无论该平台是运行在物理设备上(例如服务器)还是虚拟机上(或者二者的结合)。通常,一个软件实用产品是一系列软件能力,它可以在没有操作系统的情况下实现功能。因此,它们必须包含足够的必要的下层操作系统组件才能正常工作。因此,一个严格的定义可以是:一个被设计为提供开放栈能力的实用产品,并且它不需要任何底层的操作系统。然而,实施这种严格的定义并没有什么好处,因为在实用产品(appliance)和发行版(distribution)之间并没有清晰的区别。有争议认为,“实用产品”(appliance)这个术语在一定程度上有些用词不当(misnomer),因为开放栈本身就被认为是一个云操作系统,因此,使用“开放栈实用产品”对于学究式的人来说会是用词不当的。
如果我们看一下实用产品(Appliances)和发行版(Distributions)的范围,就可以做出这样的区分:发行版(distributions)是一些工具集,它们尝试提供开放栈项目范围的一个广泛的覆盖功能;而实用工具(Appliance)则具有很窄的关注点,集中在更少的项目中。从一开始,供应商们就广泛地涉足到开放栈当中,并因此开发和市场推广了很多的实用产品(appliances)、应用程序(applications)和发行版(distributions)。
供应商
很多供应商都提供开放栈解决方案,这意味着,想要部署该技术的组织,在选择能够最好地满足他们的业务需求的供应商方面,会有很复杂的任务。巴布·达洛(Barb Darrow)在2015年05月27日的财富杂志上,提供了这一概括,指出,市场中可能会出现一定程度的合并,能够澄清这些选择。
用户还有其他方面需要考虑,例如,实际会引入的花费。一些供应商会提供一个包含了开放栈的大多数项目的产品包,另一些则可能提供只包含少量组件的产品包。其他需要考量的地方还包括,为了管理一个开放栈组件中的不成熟的部分,需要扩展多少私有代码,以及在多大程度上会鼓励供应商绑定在上面。
可以在开放栈基金会网站上找到关于供应商产品的最权威的信息
实际使用时的挑战
开放栈是一个复杂的实体,而采用它的人在试图在一个组织中实现开放栈的时候,会面临一系列的挑战。对于很多想要尝试实现他们自己的项目的组织来说,一个关键的问题在于,缺乏实际的技能。在“新栈”(The New Stack)的一篇文章中,Atul(阿图尔) JHA列举了任何组织在想要部署开放栈的时候,都会遇到的5个挑战。
安装挑战
开放栈是一系列项目的套件,而不是一个单独的产品。而因为各种各样的应用程序中的每一个,都需要进行适当的配置从而满足用户的需求,所以如果想要完成一个相当优化的安装的话,那么安装过程就会非常复杂,并且需要很大程度上的完整的技能范围。一个显而易见的解决方案就是,找到一个完整的供应商,让它来提供包含硬件和软件的完整的打包产品,不过尽职调查(due diligence)仍然是必需的。
文档
这更多的是针对开源产品的文档的一贯状况,而不是开放栈本身,不过因为开放栈这个名号下实际上包含了25个独立的项目,因此管理这些文档的质量总是面临很大的挑战。
升级开放栈
使用云类型的基础设施的主要目标之一,就是它可以不仅向用户提供高可靠性(HR),而且还能提供高可用性(HA),某些时候,公有云供应商可能还需要提供服务水平协议(SLA)
由于开放栈的“多项目”开发方式,在升级期间,在各个不同项目之间进行同步所涉及的复杂性,可能会意味着要有不可避免的停工时间。
长期支持
在软件本身已经出新版本后,一个企业想要保持在一段时间内一直使用一个早期版本的软件,这是很常见的现象。而理由也是显而易见的,前面也提到过。然而,在开源项目中,开发者很少有动力去对那些已经被新代码所取代的旧代码进行维护和支持。此外,开放栈自身也已经正式对一些较早的发布版(releases)取消了支持。
考虑到上面的这些诸多挑战,对于一个想要实现开放栈的组织来说,最合适的方式就是找到一个供应商,并采购一个开放栈实用产品(appliance)或发行版(distribution)。
使用者
开放栈拥有广泛的、各式各样的用户,来自各行各业。其中,比较著名的使用者包括:
- 美国电话电报公司(AT&T),2012年01月加入开放栈
- 英国广播公司(BBC)
- 西班牙外换银行(BBVA)
- 贝塔云(Betacloud),一个德国的公有云
- 博允(Betfair),一家英国的博彩公司,运营全球最大的博彩交易所,属于培迪权势(PaddyPower)。目前,培迪权势博允拥有一个能够支持其整个产品栈的私有云,名为“i2”。
- 巴巴原子研究中心(Bhabha Atomic Research Centre,简称BARC),印度主要的原子能研究机构。它拥有一个为满足其内部员工使用的私有云
- 巴伐利亚发动机厂(BMW),俗称“宝马”,德国的一家汽车制造企业。
- 博克斯(Box),美国的一个在线文件共享以及云端内容管理服务平台。
- 欧洲核子研究中心(CERN)
- 查尔姆斯理工大学(Chalmers University of Technology,简称CTH),瑞典哥德堡的一所大学
- 康卡斯特(Comcast),美国的一家电话、宽带及有线电视服务商,运营CNBC等电视频道,拥有梦工厂动画公司、英国天空公司等企业。
- 德国电信(Deutsche Telekom),它创建了一个“商业市场”平台,其功能是基于开放栈的,另外还有一个“开放电信云”,由T-系统(T-Ssystems)运营
- 梦主机(DreamHost),一家美国洛杉矶的域名注册和主机托管企业,提供公有云计算服务
- 亿贝(eBay),一家美国加州圣何塞的电子商务公司,曾以“易趣网”在中国运营,后撤离。
- 易拉斯提克斯(ELASTX),一家瑞典的云计算提供商,提供公有云服务。
- 爱立信(Ericsson),一家瑞典的电信设备制造商,它建立了CEE(Cloud Execution Environment,云执行环境),其功能是基于开放栈的
- 福嘉云(Fuga Cloud),一个德国的公有云,基于开放栈构建
- 走吧老爸(GoDaddy),一家美国的域名注册和互联网主机托管公司
- 女皇陛下税务海关总署(Her Majesty's Revenue and Customs,简称HMRC),英国的税收机关
- 惠普融合云(HP Converged Cloud),由美国惠普公司提供,将软件和云服务并入一个统一的产品包集合,放在一个统一的架构之下
- 华为(Huawei),一家中国的通信设备制造商,建立了华为融合云(Huawei FusionCloud),其功能是基于开放栈的
- 英特尔(Intel),一家美国的半导体设计和制造商
- 英特纳普(Internap),一家美国的云计算和数据中心提供商
- 爱奇艺(iQIYI),一家中国的在线视频网站
- KT(原韩国电信,Korea Telecom),仅用于对象存储
- 美卡多(MercadoLibre.com),阿根廷的电子商务网站,拉美最大的网上商城,拥有超过6000个虚拟机,由开放栈管理
- (美国)国家航空航天局(NASA)
- 诺基亚网络,一家芬兰的通信设备制造商
- (美国)国家安全局(NSA),比中央情报局(CIA)和联邦调查局(FBI)规模大得多的情报和秘密执法机构
- NTT都客梦(Docomo),是日本的一家移动通信运营商,最初是从NTT(日本电信电话株式会社,一家日本的电信服务公司)中拆分出来的。
- OVH,一家法国的虚拟主机(VPS)和主机托管提供商,它基于开放栈建立了一个“公有云”(Public Cloud),同时支持开放栈基金会,是一个基础设施捐赠者
- 松下航空电子集团(Panasonic Avionics Corporation),一家日本的航空电子设备制造商
- 贝宝(PayPal),一家美国加州圣何塞的在线支付服务商
- 机架空间云(Rackspace Cloud),由美国的云计算提供商“机架空间”公司提供的云
- 信实乔(Reliance Jio),一家印度的电信公司,总部位于孟买
- 迅易(Snapdeal),一家总部位于印度新德里的电子商务公司
- 索尼(Sony),一家日本的电子产品制造企业,其云计算平台用于玩站4(PlayStation 4,或PS4)的在线游戏
- 斯比尔游戏(Spil Games)是一家荷兰的非上市公司,提供手机游戏和其他互联网游戏
- 苏泽云解决方案(SUSE Cloud solution),用到2019年10月。是总部位于德国纽伦堡的苏泽(SuSE,意为“软件和系统开发”)公司提供的云。
- 西班牙电信(Telefonica),它构建了一个公共的电信公司云(Telco Cloud),名为尤尼卡(UNICA)。西电还建立了一个国际超伸缩平台(International Hyperscalar Platform),基于开放栈
- 乌普萨拉大学(Uppsala University),一家瑞典的研究型大学
- 大众(Volkswagen),一家德国的汽车制造企业
- 沃尔玛(Walmart),一家总部位于美国的零售超市企业。
- 维基媒体云服务(Wikimedia Cloud Services)
- 雅虎(Yahoo!),一家总部位于美国的互联网内容提供企业
- 采埃孚(ZF Friedrichshafen AG),一家总部位于德国巴登-符腾堡州腓特烈港的德国汽车配件(如齿轮、变速箱、转向系统等)生产企业
部署模式
由于开放栈项目已经成熟,供应商为各种不同的客户们开辟了多种方式来部署开放栈:
- 基于开放栈的公有云(OpenStack-based Public Cloud)
一个供应商提供一个基于开放栈项目的公有云计算系统,
- 场内部署(On-premises distribution)
在这种模式下,一个客户在他们的内部网络中下载并安装一个开放栈发行版
- 托管开放栈私有云(Hosted OpenStack Private Cloud)
一个供应商托管一个基于开放栈的私有云:包括底层的硬件以及上层的开放栈软件
- 开放栈即服务(OpenStack-as-a-Service)
一个供应商提供“开放栈管理软件(不包括任何硬件)即服务”的托管。客户签约注册该服务,并与他们的内部服务、存储和网络协同工作,从而得到完整可运营的私有云。
- 基于实用产品的开放栈(Appliance based OpenStack)
前面提到的NASA“星云”(Nebula)项目就是一个销售使用产品的供应商。该产品可以以插件形式加入到一个网络中,从而产出一个开放栈的部署