2015 年 1 月 12 日, Packet 公司平台部门 VP David Laube 在公司官方博客上发布了一篇名为《谈谈我们把四个月的工作量扔进垃圾堆的经验,或者应该说这是OpenStack 的失败案例》的文章,介绍他们在尝试OpenStack 中遇到的一些挫折。
Packet 公司提供裸金属基础架构服务(也就是以前叫做物理机托管的服务),跟 Softlayer 和 RackSpace 做的生意差不多,但是做的时间短,是一家创业公司,大约在 2014 年上半年正式启动,本文作者 David 就是在去年夏天应邀加入的这家公司。Packet 的创始人 Zachary Smith 在创立 Packet 之前做过 Voxel 这家公司,也是做服务器托管服务,后来在 2011 年卖给了 Internap,成为 Internap 的服务器托管业务的一部分。
David 一直以来的经验是在托管行业做系统运维,有十多年的运维经验(前九年都在 HostRocket.Com)。2011 年的时候他加入 Voxel/Internap,成为 Zachary 的下属。按照 David 的自述,2014 年夏初 Zachary 去邀请他加入 Packet 的时候,他一开始觉得当时市场上的 IaaS 服务已经很多,没有必要再做一个。但是聊着聊着他就觉着市场上的 IaaS 的确不够好用,再加上他当时已经玩了一段时间的 Docker,非常看好在裸金属基础架构上做一套基于容器技术的部署系统的价值,所以就觉得值得做。
Voxel 的部署管理系统完全是自己编写的。在 Voxel 合并入 Internap 的那一年(2012 年),他们遇到的无数网络问题、大量硬件变更和系统变更给这套系统带来了很大压力,这些问题最终体现在了服务稳定性变差,当时在 WHT 上有用户表达了强烈的不满。
现在有机会重新搭建一套自动化安装管理系统,而且最好在几个月内就能在生产系统上给客户用,David 开始考察 OpenStack。在 David 看来,如果 OpenStack 在网络自动化、IP 管理、安装流程、硬件生命周期管理这几个方面的基础足够扎实,那完全可以依赖这套基础快速搭建起他想要的东西。
David 做了大量调研,读了当时大部分的 IRC 讨论,自己也尝试用 DevStack 做过安装,觉得不错。让他真正做出决定的是来自 RackSpace 的一篇博客,该博客讲述了 RackSpace 是如何用 Ironic 组件实现他们的裸金属云服务管理体系的。
于是他们拿着最新的 Juno 版本提枪上战场了。四个月的努力让他们收获了如下经验:
- Nova、Ironic 驱动、Neutron 是他们最需要关心的三个组件。Ironic 是为了实现裸金属管理,而 Neutron 则是为了避开 2 层网络和 VLAN,让每台主机直接连接 3 层网络。
- 大部分文档是过时的或者错误的,于是 David 不得不用大量时间 debug 以验证哪个文档是正确的。
- OpenStack 社区的确很大,人很多,但几乎没人有 Ironic 组件的生产使用经验,就连项目的核心开发者有时候也解答不了他们的部署问题。
- 一个人同时搞透 Ironic 和 Neutron 是一件几乎不可能完成的任务。David 决定自己去研究 Ironic,让另一位同事去研究 Neutron。
- 阅读了每一篇Ironic 的文档和讨论后,David 的结论是,OpenStack 从整体设计上就是为虚拟机准备的。你一旦用 Ironic,就只能用 openvswitch 和 linuxbridge。
- Neutron 能够支持的厂商交换机有限,而且能够支持的网络模型也有限。
- RackSpace 能跑起来是因为他们做了超级多的定制。而他们定制的很多重要补丁是不公开的,你得自己写。而你要能写出来这样的补丁,必须非常非常懂 OpenStack 的核心代码!
发展到这个阶段,David 开始觉得自己掉进了一个大坑。花了大量的时间,但项目进展缓慢。不过,他还是决定要把 Neutron 再仔细了解一下。为何?
“在物理交换机和物理服务器的体系下,安装系统不难。但是要做到可靠,这就超级难了。自动化是无止尽的持续投入,而最容易出问题的地方就是网络的自动化。”
而 Neutron 宣称自己是:
“一套服务库,可提供按需使用、可扩展、支持多种技术的网络抽象”。
这样一套东西当然不可不看。但是看了之后,以下是 David 学到的东西:
- Neutron 的大部分功能是针对虚拟机,而非物理交换机的。
- 他们用的是 Juniper 的交换机,而 Juniper 交换机的 Neutron 驱动已经老掉牙了,对 Juno 版也没提供多少新的支持。
- Neutron 的 IP 管理体系自己做得很原始,又无法跟外部的 IP 资产管理体系对接。
最终,他们在圣诞前夕决定扔掉了 OpenStack,然后用了三个星期开发了一套自己的 IP 管理系统。至于 OpenStack,并不是不好,而是不合适他们的场景。之后他们还会继续关注 OpenStack 项目,并发布他们的一个 Neutron 驱动。
评论