在近日举办的第十三届网络系统设计与实现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