新闻与活动

News and events

首页 > 关于我们 > 新闻与活动
OpenStack产品化浅析
文章来源:烽火集成 张国宁  发布日期:2017-07-19  字体显示:【大】【中】【小】   分享到:

OpenStack发展至今,经过7年十多个版本的演进,核心组件已成熟稳定,根据OpenStack峰会所提供的数据,目前OpenStack每年的部署增长率超过40%OpenStack所管理的容量已超过500万核CPU。这些部署的背后,有众多的云计算提供商所提供的OpenStack商业产品环境,有具备IT技术实力的公司自己建设和维护的OpenStack云环境,也有不少用于实验目的的测试环境。

OpenStack作为一个开源的云计算框架,从核心的IaaS项目不断向外延展到目前数百个项目,可以说云计算所涉及到的大部分技术都可以在这些OpenStack项目中找到对应。面对这数百个发展良莠不齐项目,如何借助开源力量将其整合和增强后形成可满足客户真正需求的云计算产品,是处在OpenStack生态中重要位置的云计算提供商所需要扮演好的角色。

本文结合个人多年开发经验,针对OpenStack产品化做一个粗浅的总结。

OpenStack产品化

简单讲,OpenStack的产品化就是针对OpenStack的“问题”和“不完善”,以商业IT产品和解决方案的要求和指标进行优化和补充,形成可交付的商业产品,满足企业IT建设的诉求。OpenStack社区版本第一考虑的是功能可用,部署、可靠性、性能及维护等均欠缺或能力很弱,不可能在简单整合后形成商用产品,而需要投入大量资源,从以下方面进行增强和补充。

QQ图片20170719151002.png

安装部署

安装部署是OpenStack产品化的基础,其自动化程度以及易用性直接影响产品的可销售性,是决定产品是否具备渠道化销售的关键因素。

OpenStack社区有3个正式项目可以作为产品化安装部署的基础,分别是FuelCompassKolla。其中FuelMirantis 2013年推入给社区的Fuel,支持图形化界面及批量部署OS和组件等能力。经过多个版本的发展,Fuel已经比较成熟,能满足OpenStack部署的基本需求,因此有多家云计算厂商基于Fuel进行不同程度的优化和增强后作为商业版发布。Compass进入社区的时间较晚,相比Fuel更加轻量化,对于产品化而言更加容易扩张。Kolla项目基于容器,将OpenStack组件分别做成独立的容器镜像进行部署,大大节省了现场部署繁琐的环节,同时,容器化部署最大意义还在于对OpenStack升级所带来的便捷性。

不论选择哪种部署方案,或者自研部署框架,部署的流程基本是相同的,产品化的工作则是整合这个流程,使其更加自动话化,同时考虑单点故障、多平面隔离、网卡bond、系统初始配置、适配不同(规模)的部署场景等问题。

可靠性

可靠性对于一个产品而言不仅是指代码的健壮性,而是一个系统工程,特别是复杂的云计算系统。OpenStack产品化后,可靠性需要考虑以下几个方面。

  • 单点故障

我们通常所说的单点故障的“点”是指物理服务器,对于一个云环境而言,这属于基本的可靠性要求。在大规模部署场景,客户对可靠性存在更高的要求,不仅要支持单服务器故障,同时还要支持机柜故障后系统可用。除了对工程实施的要求外,对于软件系统的要求则是要具备灵活的组件部署能力以及支持部署的动态调整能力。

  • 组件自恢复

自恢复是系统内的应用组件在出现异常退出、僵死以及服务器重启后可自动恢复到正常的工作状态,这需要在OpenStack外围建立一套组件运行状态的监控体系来保障组件的正常运行。对于分布式无状态的组件,如nova-api等而言,组件恢复相对简单,但对于采用主备或集群方式部署的有状态组件而言,部署于不同服务器上的组件间会存在状态或其他依赖关系,因此其恢复逻辑会相对复杂和难处理。

  • OpenStack代码

OpenStack的核心项目的代码虽然已经相对成熟,但与一个商业产品相比,社区所配套的测试用例的数量和覆盖度明显不足,因此对OpenStack产品化来说,一定量的测试时必要的,特别是针对各种异常场景的深度测试以及性能测试。

  • 虚拟机高可用

对于一个提供IaaS服务的云环境而言,虚拟机高可用是个绕不开的话题。虽然呼声很高,但除了讨论,OpenStack社区目前还没有专门的项目跟进。少部分厂商的OpenStack商业版自研了该项功能,但所支持的场景和指标相差较大。虚拟机高可用的实现难度主要有两个,一个是如何准确判断虚拟机故障,多平面网络部署以及虚拟化自身的复杂性会加大判断的难度;另一个是如何可靠防止虚拟机脑裂(同时在不同物理主机上启动),这需要可靠的故障隔离和可靠锁机制支持。

运维

与功能相比,OpenStack在运维方面所能提供的能力几乎可以忽略,要么没有,要么不成熟。OpenStack产品的运维能力构建,个人理解应该包含以下几点。

  • 完备的监控

监控需要覆盖到服务器性能、网络和存储设备状态及性能、各种服务(OpenStack组件、数据库、MQ、其他)状态的监控及可视化,有能力的可以进行更深入、或者关联性的性能分析和预警,以及针对系统服务的健康巡检。对于很多已有数据中心的云化改造项目,还存在与客户已有运维平台对接的需求,这就要求OpenStack的监控平台支持以标准协议,如snmp等提供对接能力。

  • 日志分析

OpenStack组件繁多,特别是大规模场景下所产生日志巨大,建设一套完备的日志分析系统势在必行,即便是简单的日志收集功能也能事半功倍。同时,OpenStack原生代码的日志质量良莠不齐,还存在很大提升空间,需要进行补充,以便于问题定位。

  • 组件配置及补丁管理

上面提到,OpenStack的组件繁多,这也到导致组件配置项繁多,加上各种中间件数据库、虚拟化软件、以及操作系统层面的各种配置,如果缺少统一的配置管理能力,不只是配置变更时繁琐易出错,更存在配置混乱无法管理的问题。补丁也是类似,不只是在补丁管理流程上控制,从技术角度上也需要有配套的补丁上线和回退的管理机制。

功能

毫无疑问,OpenStack的功能集合在持续扩张和深入,几大核心组件目前所提供的功能对于IaaS服务而言基本够用,产品化几乎可以不用做太多的功能扩展。在不同的使用场景下,对功能需求的侧重点会有所不同。企业云数据中心往往侧重于数据备份安全等方面,而NFV则侧重于提升数据面转发性能的各种特性(如SR-IOVNUMACPU绑核等),因此在功能方面不容易给出明确的倾向或者范围,不同厂家对自己的产品有不同的定位。

产品配套

文档对于一个产品的重要性无需赘言,产品文档为产品宣传、市场销售、用户使用、产品维护等环节提供指导和必要的资料。OpenStack产品化应该至少考虑配套下述文档或包含这些内容。

  • 产品说明文档:产品Release Notes,适用场景、功能及指标等说明。

  • 产品部署文档:产品如何规划,如何部署。

  • 产品操作文档:产品如何使用和操作。

  • 产品运维文档:产品如何维护、常见问题如何处理等。

此外,APISDK也属于比较重要的配套件,如果OpenStack产品化无新增API或未改动原生API,可以直接使用和参考OpenStack社区的相关文档和工具。

版本升级

对于一个OpenStack产品,版本升级涉及两个层面:一个是OpenStack商业产品版本本身从低版本切换到高版本,大多数OpenStack商业产品都很难紧跟OpenStack每年两个版本的节奏,特别是引入了较多私有特性的商业产品,私有特性向高版本的移植需要投入较多资源。另一个是对已部署环境的版本升级,这需要投入更多资源解决版本间的兼容问题,给出离线升级或在线升级的解决方案以及回滚方案。

由于资源的高投入,很多OpenStack商业产品在产品初期只能选择放弃产品层面的升级能力,对于必须升级的客户环境采用项目和工程的方式解决。

OpenStack周边技术产品

OpenStack的范畴并不包含底层虚拟化技术以及操作系统等,但一个完整的OpenStack商业产品,这些内容不可或缺。

如果延续开源产品化的思路,现有的开源虚拟化技术(如KVM/XEN/OVS等)和分布式存储(如Ceph等),在功能和可靠性方面已经接近或达到基本的商用要求,整合测试即可。但在NFV或其他对性能或功能有特殊需求的场景下,开源的虚拟化技术仍然需要大量增强才可具备一定的竞争力。

OpenStack产品化与跟随社区的平衡

OpenStack产品化往往会陷入是否要紧跟社区新版本困惑之中,如前面版本升级章节所提到的,如果跟随社区新版本过紧,大量的投入无疑会占据团队资源,增加产品成本。相反,如果产品版本过多的滞后于社区版本,产品的竞争力就会受到影响。

对于资源投入有保证的大公司或大型团队,可以通过加大对社区贡献的投入以增强社区影响力和引导力,逐步减少私有特性的比例,减少产品与社区版本的差异,降低在版本切换和版本升级方面的投入,从而找准产品化的与社区版本之间的平衡关系。对于资源投入有限的团队,OpenStack的产品化对其而言是个大课题,再加上周边配套技术的投入,如何平衡和取舍是个挑战。

结语

OpenStack产品化不仅是基于OpenStack的软件产品的研发,更多考验OpenStack产品厂商的交付能力、运维能力以及服务能力。面对不同行业的客户,面对多种多样的客户定制化需求,考验的更是厂商的软实力和综合实力。

烽火FitOS产品基于OpenStack核心组件,定位于政企私有云和NFVIaaS平台建设,持续重资源投入OpenStack的产品化以及社区贡献,提供稳定可靠的OpenStack商业产品。

 

作者简介

张国宁

烽火云计算高级软软件工程师,多年从事云计算产品开发和设计工作,目前专注于OpenStack的产品化工作。

搜索文章