Yoda: a highly available layer-7 load balancer

Yoda: a highly available layer-7 load balancer
复制标题

DOI:
10.1145/2901318.2901352
复制
发表时间:
2016-04
期刊:
Proceedings of the Eleventh European Conference on Computer Systems
影响因子:
--
通讯作者:
Rohan Gandhi;Charlie Hu;Ming Zhang
Rohan Gandhi;Charlie Hu;Ming Zhang
中科院分区:
其他
文献类型:
--
作者:
Rohan Gandhi;Charlie Hu;Ming Zhang

文献摘要

被引文献

相似文献

第7层负载均衡是在线服务的基础构件。由于缺乏主要公共云提供商提供的产品,在线服务不得不构建自己的负载均衡器(LB),或使用第三方负载均衡器设计,如HAProxy。这种基于代理的设计的关键问题是每个代理实例都是单点故障,因为一旦出现故障,与客户端和服务器的连接的TCP流状态就会丢失,从而中断用户流。这严重影响了用户体验和在线服务收入。在本文中,我们提出了Yoda,一个高可用、可扩展、低延迟的公有云L7-LB-as-a-Service。Yoda基于我们为实现L7 LB高可用性而提出的两个设计原则:将流状态与LB实例解耦并将其存储在永久存储中,以及利用L4 LB服务使每个L7 LB实例能够在与客户端和服务器进行交互时使用虚拟IP(称为前后间接)。我们在Windows Azure的60台虚拟机测试床上对Yoda原型的评估表明,将TCP状态解耦到持久存储中的开销非常低(<1毫秒),并且Yoda在LB实例故障、添加、删除以及用户策略更新期间保持所有流。我们通过在线生产服务的一天跟踪进行的模拟显示,与每个租户使用Yoda相比,Yoda即服务为租户降低了3.7倍的L7 LB实例成本,同时提供了4倍以上的冗余。
Layer-7 load balancing is a foundational building block of online services. The lack of offerings from major public cloud providers have left online services to build their own load balancers (LB), or use third-party LB design such as HAProxy. The key problem with such proxy-based design is each proxy instance is a single point of failure, as upon its failure, the TCP flow state for the connections with the client and server is lost which breaks the user flows. This significantly affects user experience and online services revenue. In this paper, we present Yoda, a highly available, scalable and low-latency L7-LB-as-a-service in a public cloud. Yoda is based on two design principles we propose for achieving high availability of a L7 LB: decoupling the flow state from the LB instances and storing it in a persistent storage, and leveraging the L4 LB service to enable each L7 LB instance to use the virtual IP in interacting with both the client and the server (called front-and-back indirection). Our evaluation of Yoda prototype on a 60-VM testbed in Windows Azure shows the overhead of decoupling TCP state into a persistent storage is very low (<1 msec), and Yoda maintains all flows during LB instance failures, addition, removal, as well as user policy updates. Our simulation driven by a one-day trace from production online services show that compared to using Yoda by each tenant, Yoda-as-a-service reduces L7 LB instance cost for the tenants by 3.7x while providing 4x more redundancy.