在近日舉辦的第十三屆網絡系統設計與實現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)算法,哈希法和其他算法定向到一個服務端點的。