OpenStack的八年之痒

发表于 讨论求助 2021-12-26 14:10:34

华为云服务作为一个OpenStack用户,在这篇文章里,我会从用户视角,反思在过去的八年里,它到底走了一条怎样的路;我也会试着展望从现在起的八年之后,OpenStack会过得好不好,甚至还在不在。

2010年10月,OpenStack发布了第一个版本;上个月,发布了它的第18个版本Rocky。几年前气氛火爆,如今却冷冷清清。Rocky版本宣布后,OpenStack群里也就出现了几篇简短的翻译过来的文章。圈子里也不时飘出“OpenStack是不是死了?”“谁谁谁又把全部OpenStack替换成Kubernetes”了这种消息。这到底是为什么才短短几年却出现如此转折呢?作为一个OpenStack用户,在这篇文章里,我会从用户视角,反思在过去的八年里,它到底走了一条怎样的路;我也会试着展望从现在起的八年之后,OpenStack会过得好不好,甚至还在不在。

我们是怎样的一个用户?

我们作为HH集团云平台团队的一部分,在集团内搭建了如下图所示的基础云平台:

其主要特征如下:

计算:支持KVM、ESXi 和裸金属服务器等三个资源池。

网络:采用 Neutron + VLAN + OVS 实现了虚拟网络。

存储:采用 Ceph 和 SAN 实现了块存储,采用Ceph实现了对象存储。

区:在两个城市三个机房部署了3个区域,每个区域内划分资源池,资源池内再按机架划分可用区。三个层级都用户都可见,可按需选择。另外,我们还尝试搞过一个小型公有云区域。

功能:利用了Mitaka版本中的Glance/Nova/Neutron/Cinder/Keystone/Heat/Telemetry/OVSvAPP/Trove/Ironic等组件。

管理:采用自研云管理平台管理多个区域。

容器云平台:基于Kubernetes的容器云平台运行在自己管理的物理机上。

团队:最多时候8个人的OpenStack研发团队,3个人的运维团队。

一些感受:

总得来说运行的还蛮好,我们在技术和产品选型、研发、运维等方面都做得不错,团队非常给力,研发周期较短,迭代快速。现在它支撑着集团大大小小几百套系统,而且很稳定,运维压力已经比较小了。在此,我也要感谢并肩战斗过的小伙伴们。

也出现过一些稳定性问题:比如Neutron VR 偶尔会自动切换(我们还有一个小型公有云环境,采用Neutron + VR + OVS 架构);KVM虚拟机偶尔自动重启甚至宕机等;KVM对windows的支持比较差,偶尔出现莫名其妙的问题,比如磁盘脱机、蓝屏、无法启动等。

监控组件、日志组件很不健全,都需要我们自己大改或者从零搭建。

除了核心模块,其它模块几乎都是半拉子工程。以Trove 为例,我们花了不少时间,几乎重写了一半的代码,也就实现了最基本的数据库实例的创建和管理功能。

OpenStack 离公有云需求的差距实在太远。

OpenStack 的定位和对标到底该是什么?

OpenStack社区在2010年提出的原始使命是『提供一个满足公有云和私有云需求的开源的云计算平台』。那个时候,私有云还没什么参照物,因此可以认为最早的时候OpenStack 的使命就是做开源的AWS。这真是一个宏伟的目标,多么让人激动人心啊,甚至搞得VMware和AWS的心里都泛起了层层涟漪!然而,从2014年起的用户调查结果看,OpenStack做不了公有云,私有云才是OpenStack的主战场,因为两种私有云环境加起来有80%,而公有云的比率在2017年才12%,而且是在不断萎缩。因此,说OpenStack的实际定位是在私有云,这个毋庸置疑。

企业私有云环境中,VMware 是真正的老大。因此,OpenStack这要做私有云的目标,说好听点,要向 VMware学习;说难听点,就是要替代掉VMware。而 VMware vSphere 提供的只是虚拟化环境,因此 OpenStack 对标的对象我认为应该是 『VMware的 虚拟化功能』+『AWS的 Cloud 功能,主要是云API』。但是,因为一开始 OpenStack 对标的是 AWS,而AWS 是公有云不是私有云,这就导致了后来很多问题的出现,下文会仔细道来。

『VMware 虚拟化』+『AWS Cloud 功能』这两部分中,因为一开始OpenStack 就是对标AWS的,因此 『Cloud』部分应该说做得还是很不错的,或者说克隆的不错。这从用户调查的『为什么组织会选择OpenStack?』部分的答案中也能看出来,即开放平台和API的标准化是第一业务驱动力。

那『VMware 虚拟化』对标部分的情况又如何呢?来看一下 VMware vSphere 和 OpenStack 基础功能的对比:

从上表可以看出,大部分的vSphere 的功能OpenStack都没有实现,或者只实现了一点。那结果只能是,OpenStack 不具备对 VMware 的替代能力,也就无法驱动用户去放弃VMware 转向 OpenStack了。

大帐篷模式的问题到底在哪?

2015年,OpenStack 社区开始使用『大帐篷』模式。该模式把OpenStack项目分成两大类:核心项目和非核心项目。核心项目只有六个,其余都是非核心项目。

根据个人理解,我简单地对这个图的一些问题做下说明:

1、六个核心服务发展得确实不错,但是问题依然不少。

一方面,如下面2017年4月的用户调查结果,前几个核心项目的使用率都超过了90%。另一方面,用户对核心项目的吐槽一直没停止过,每年的用户调查报告中都有好几页记录着用户的槽点。

2、不管是对比VMware 还是对比AWS,OpenStack核心服务的范围都太小了,导致它缺乏了一些必要的功能。我认为至少以下几个服务需要进入核心服务列表:

编排服务Heat:编排服务是云的基础性服务之一。一来用户可以通过编排服务自行创建和销毁云资源,二来很多二级服务可以通过提供编排模版的方式来提供给用户,三来可以与第三方云管平台和工具对接,从而培育其生态。

监控服务Ceilometer:一个云生产环境离不开一个强壮的监控服务。到目前为止,Ceilometer 项目都还问题重重,比如规模性问题、性能问题、功能覆盖问题等。

裸机服务 Ironic:裸机在私有云中有很多的应用场景,比如运行数据库、大数据平台、容器平台等。如果OpenStack把Ironic做好了,那这就会成为与VMware相比的一大优势,同时还能成为一些需要利用裸机的应用的支撑平台。现在的Ironic项目,实在太重太复杂,与物理网络设备关联太深。但是,如果可以像LINUX的kickstart和cobbler一样,就灵活轻量多了,这个过程比如像vmware里物理机可以批量部署ESXI,然后把ESXI纳管进来,就可以使用VC里的所有服务,这样的过程就比较合理了。

日志服务:同监控服务一样,日志服务也是云平台的一个基础性服务,如同AWS 的CloudWatch和所有项目都打通了一样。遗憾的是,到现在为止,OpenStack都没有一个原生的日志服务项目。

部署服务:部署对私有云很重要。OpenStack需要一个提供象 Mirantis Fuel 这样的图形化一键部署工具的核心服务。

3、OpenStack社区把过多精力耗费在了一些看起来很有前途,但实际上却比较鸡肋的服务项目中,比如容器服务Magnum、大数据服务 Sahara、数据库服务 Trove、容器化部署服务Kolla。好吧,我晓得你可能有不同的看法,我不想争论,还是来看用户调查报告中的数据吧。

一方面,用户对这些项目很感兴趣。我认为至少有三个原因,一来是人们对新事物都有好奇心,二来是OpenStack社区的大力宣扬,三是殷切期望。下面的数据来自201704 用户调查报告:

但是这些服务在实际的生产环境中部署的案例却非常少,而且是越来越少:

发表
26906人 签到看排名