接下来,让我们一起回顾负载均衡技术的发展历程。
1996 年,华盛顿大学的几个学生共同创建了一家生产负载均衡设备的公司,并以美国人民的老朋友——飓风的最高等级 F5 作为品牌名,以表示他们的设备可以扛住最狂暴的网络流量。当时,互联网的规模每 100 天增长一倍,这也让 F5 在成立三年后迅速上市。2001 年,F5 公司在经历了互联网泡沫后,顺利地把设备卖进了银行等大型机构,因为 F5 比微软和甲骨文都更有前瞻性:他们的 iControl 系统可以提供 API,让大型机构自己开发软件来控制通过负载均衡设备的所有流量。
早在 2001 年,软件的威力就已经开始展现。
2003 年非典暴发,电子商务、网络点餐甚至是网络新闻都迎来了爆发式的增长。2004 年,F5 上市了新一代产品:包含 TMOS 软件平台的全套硬件设备,一次性解决了网络访问、数据中心同步访问、远程办公、应用防火墙等多种需求。此后,市场上 F5 公司的产品越来越具有统治力。
2006 年以后,传统的 IP 层负载均衡技术开始向应用层发展,F5 等相关设备厂商也紧跟潮流开始推广“应用交付”的概念,开发了很多结合了负载均衡和应用网关的产品,这之后的十年,是传统负载均衡硬件厂商的最后荣光。
2019 年,F5 Networks 以 6.7 亿美金的价格收购了 Nginx,硬件厂商和软件厂商实现了一次梦幻联动,也侧面说明了我们确实已经迎来了软件定义网络的大时代。
实际上,在今天的企业网络架构中,专业的网关设备都已经消失,取而代之的是一个看起来不是网络设备的网络设备:防火墙。特别是具备应用识别能力的“下一代防火墙”(没错,就是这个中二的名字),更是将防火墙设备的价值推上了巅峰,并一次性让企业级路由器和中低端负载均衡器全部退出市场,这又是一个软件战胜硬件的故事。
一个小八卦,下一代防火墙行业的个中翘楚 Fortinet 公司,由两名出生于北京的清华大学老师的孩子于 2000 年在美国创办。
2002 年 2 月,戴尔为 PowerEdge 1650 服务器首次配备了千兆以太网。当时,负载均衡的主流实现是基于硬件的,也可以说是一种“软硬件一体化解决方案”。由于当时的服务器 CPU 单核性能较低,核心数也较少,网卡芯片技术远不如今天的 NPU 强大,因此想要通过运行在标准操作系统(Windows/Linux)内的软件来实现千兆软网关仍然是一个“前沿探索项目”。更不用说万兆负载均衡了:PowerEdge 1650 发布后四个月,万兆以太网的首个技术标准“IEEE 802.3ae 10 Gb/s 光纤以太网标准”才首次发布,距离万兆网卡在服务器端普及还有十多年的时间。
鲜为人知的是,千兆以太网的光纤标准于 1998 年发布,双绞线标准于 1999 年发布,而到了 2002 年,万兆以太网光纤标准已经发布。实际上,千兆以太网在消费端开始普及已经是 2010 年的事情了。
在 21 世纪的第一个十年里,最优秀的超千兆解决方案是利用二层网络的链路聚合协议,使用多个千兆口同时进行负载均衡,实现超过千兆的速度。而且当时能够提供数 G 带宽的负载均衡设备价格昂贵,动辄上百万,对于有需求的终端客户来说是个巨大的负担。然而,在那个移动通信基站都需要完全进口的时代,哪个中国人不是背负着巨大的负担呢?
这些网络硬件厂商实际上也是软件厂商,只不过它们选择将自己的软件安装在这些黑色的铁盒子里出售,这样的产品质量更稳定,更重要的是:这样更贵。相比于购买一个看起来可以随意复制盗版又虚无缥缈的软件,人类社会落后的官僚体系更容易接受购买昂贵的实物。具体的技术分析请继续阅读。
近年来,随着云计算的兴起,硬件设备和 IT 基础设施发生了翻天覆地的变化。如今,硬件负载均衡逐渐退出舞台,取而代之的是云服务商们利用软件定义网络(SDN)技术构建的低成本高性能的新世界。
今天,一台总价 3 万元的通用 x86 服务器搭配 100G 以太网卡,使用基于 DPDK 开发的用户态应用程序在 Linux 上发送小包,轻松就能达到 100Gbps 的网卡带宽。(来自 Envoy 作者 Matt Klein 2017 年的一篇英文博客:Introduction to modern network load balancing and proxying)
如图 6-1 的推文或许有些夸张,但这正是我们当下的现实:软件正在重新定义网络的一切。
如图 6-2 所示是一台 F5 生产的售价百万的硬件负载均衡设备,仅凭一颗 4 核 8 线程的至强 x86 CPU,就实现了 40G 的四层负载均衡能力和 18G 的七层负载均衡(应用网关)能力。
这台设备内部有两个控制器和四个接口插槽,实现了“全双活”,即控制流量的“CPU 内存主板”和收发流量的“网络接口”都是双份。当任意一个资源意外宕机时,另一个备用资源可以无缝接替,实现无丢包的硬件级高可用性。同时,这台设备背后的电源适配器至少有四个,支持运行时热替换,甚至连风扇模组也是冗余、可热替换的。
接下来,我们将利用软件的力量,逐步在标准 x86 服务器上运行的标准 Linux 系统内,构建出一个与这台硬件负载均衡设备具有相同高可用性、且带宽可达 200G 的负载均衡集群。
让我们从交换机技术开始讲起。
📙 高并发的哲学原理 《Philosophical Principles of High Concurrency》
Copyright © 2023 吕文翰