前言
为什么写作本书
2016年1月16号,我在微信公众号(标哥说天下)发表了Neutron系列的第一篇文章,当时计划是半年写完,没想到写了一年半。也许是由于冲动吧,那天我决定写一系列有关Neutron的文章。
手里拎个锤子,认为满世界都是钉子,这是一种要命的思维逻辑。写Neutron系列,最初的原因,不是因为需要用它做什么,而是想要说明它不能做什么。这对于从事云计算的人来说,可能根本就不是问题,因为Neutron的适用范围也恰好在他们的工作范围之内,没有逾越半步。
对于那些从事非云计算行业,却又与Neutron有着千丝万缕的联系的人来说,这可能也不是问题。但是如果领导与“专家”太多,这可能就是问题了。
然而在写作的过程中,我逐步放弃了想说明“Neutron能做什么,不能做什么”的想法,慢慢改变为现在的思路:努力描述Neutron原本是什么!
本书首先从Linux虚拟网络知识讲起,步步推进,最后深入到Neutron的代码。当剥开Neutron代码的面纱以后,Linux虚拟网络既是构建Neutron网络的基础,也是构建Neutron代码的基础。Neutron的代码写到最后,不过是调用Linux的命令行而已(也包括调用OVS的命令行)。
这么说,当然对Neutron不公平,调用命令行只是Neutron代码的最后一步,在这之前,Neutron还需知道调用什么命令行。这不是是否熟练掌握各种命令行的问题,而是能否正确分配逻辑资源的问题。举个最简单的例子,为一个端口配置一个IP地址,在调用命令行之前,Neutron需要通过各种机制和算法为这个端口分配一个正确的IP地址。
Neutron不仅需要具备分配逻辑资源的机制,还需要创建相应的虚拟网元(物理资源),并将这些虚拟网元正确地连接和配置,构建成正确的网络。Neutron所能支持的二、三层网络特性,不仅体现在它的代码中,也体现在它的资源模型中,并且以RESTful接口的形式对外提供服务。