Google Maglev:基于商用服务器的负载均衡器

  • Abel Avram
  • 任美芒

2016 年 3 月 20 日

话题:Google云计算DevOps

在近日举办的第十三届网络系统设计与实现 USENIX 研讨会(NSDI '16)上, 来自谷歌,加州大学洛杉矶分校SpaceX 公司的工程师们分享了Maglev:快速、可靠的软件网络负载均衡器(PDF)。Maglev 是谷歌的网络负载均衡器。

不同于专用的硬件负载均衡设备,Maglev 是运行在商用服务器上的软件解决方案。Maglev 运行在普通的服务器上,在需求增长的时候通过将更多的服务器添加进来,为流量高峰提供足够的容量,而不是提前获取特定硬件。Maglev 是谷歌为自己的数据中心研发的,并已于 2008 开始用于生产环境。

谷歌服务器以集群的方式运行在世界各地的数据中心。每个集群都有一个负载均衡器构成多设备放置在路由器和提供服务的服务器之间。专用负载均衡器通常以 active-passive 模式部署提供 1+1 冗余,使其中一个闲置,造成容量浪费。而且他们局限于他们的容量,很难或不可能重构。谷歌已经决定使用一种配置提供 N + 1 冗余,为他们的软件和商用服务器提供了更好的可扩展性和灵活性,如下图所示。

在性能方面,单节点 Maglev 服务器可以“用很小的数据包使 10Gbps 链接达到饱和。Maglev 也包含了一致性哈希算法和连接跟踪功能,以减少面向连接协议的突发故障和失败的负面影响。”。Maglev 被 Google 的云计算平台使用,安装后不需要预热 5 秒内就能应付每秒 100 万次请求。谷歌的性能基准测试中,Maglev 实例运行在一个 8 核 CPU 下,网络吞吐率上限为 12M PPS(数据包每秒)。如果 Maglev 使用 Linux 内核网络堆栈则速度会慢下来,吞吐率小于 4M PPS。

演讲文中详细介绍了如何通过 Maglev 处理请求,如何处理虚拟 IP 地址以及该请求是如何基于等价路由(ECMP)算法,哈希法和其他算法定向到一个服务端点的。

查看英文原文:Google Maglev: A Load Balancer on Commodity Servers


感谢张龙对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

Google云计算DevOps