【DPDK峰会回顾】支撑双十一的高性能负载均衡是如何炼成的

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
公网NAT网关,每月750个小时 15CU
简介:

上个月在北京召开的DPDK峰会上,阿里云网络技术专家梁军(刺背)分享了阿里云高性能负载均衡的架构、设计理念,以及在双十一和春晚手淘红包等大流量互联网场景中实践。这篇文章总结了本次大会发言。


负载均衡器是对多台服务器进行流量分发的负载均衡服务。它可以通过流量分发扩展应用系统的服务能力,还可以消除单点故障提升应用系统的可用性。因此负载均衡器得到了广泛的应用,目前已经成为阿里巴巴流量的入口。阿里巴巴新一代的负载均衡器基于DPDK来实现,其提供的高性能与高可用性支撑了阿里巴巴业务的高速发展,尤其是保障了阿里巴巴2017年的双11狂欢节,接受了双11场景下脉冲式海量流量的检验。本PPT将从两个方面来介绍阿里巴巴新一代的负载均衡器:第一,介绍基于DPDK的高性能负载均衡器的实现架构,第二,介绍DPDK负载均衡器的并发会话同步机制,此机制实现了LB在容灾与升级场景下让业务无感知。

基于DPDK开发的阿里负载均衡器

bf8bbead0e396039d340dfb062322bd7325cef03目前整个阿里巴巴使用的负载均匀器,绝大多数都已经替换成基于DPDK自研的负载均衡器。此版本最底层是DPDK,利用DPDK平台提供的便利的高性能技术: 如用户态收发包,hugepage, NUMA等。再一上层是Netframe平台,它是基于DPDK自研的高性能2/3层用户态网络协议栈,实现了2层的MAC地址转发,3层的路由查找转发以及动态路由协议等,而且还提供了各类丰富的库,最终于类似Netfilter钩子的形式提供给上层的应用程序使用。阿里巴巴当前主力的SLB就是基于Netframe平台研发的,基于此平台SLB直接通过钩子的方式接收与发送数据包,只需要关心业务自身的数据流,因此可以快速,高效的开发网络应用程序。目前此版本的SLB已经广泛使用在了阿里的电商交易,交易支付等业务上,而且阿里云公有云服务器上对外提供的SLB产品也是基于此版本。

fd1584330b4262653673e5364f4c3981c30fac4a

在双11大促活动中,公网入口的流量主要分为两大类:一类是用户访问阿里的流量,首先经过CDN网络,再由CDN网络回源到提供服务的应用,在回源时会经过SLB,由SLB提供负载均衡服务,通常这种流量模式占绝大多数。另一类访问流量是直接由SLB提供服务,用户的流量直接经过SLB就到达后端的应用,这种流量模式只占一小部分。两个流量模型,SLB都在流量入口的位置,占据着非常重要的位置,因此对SLB的稳定性都提出了很高的要求。

 

基于DPDK 的负载均衡支撑双11活动

a719acf6390fd6e18b1ded1547e554db087f30cd

基于DPDK版本的负载均衡器,已经平衡了支持了近两个的双11和春节红包活动,上图中是2017年双11流量的示意图, 从图中我们可以看出,双11当晚的流量是一个脉冲式的图形,这是由于双11当天,有很商品需要在0点之后才能抢购,而通常这部分商品的数量是很有限的。我们可以看到2017年双11当天的交易峰值为32.5万笔/秒,支持峰值是25.6万笔/秒,这种脉冲式的流量模型对SLB带来了很大的挑战。

1.     如何应用脉冲式的流量模型,提供稳定的服务?

2.     如果提供一个高可用的服务,来应对随时都可以发生的设备与网络的异常?

3.     如何实例业务无感的版本升级与容灾?

 

高性能的负载均衡服务

高性能的负载均衡器基于DPDK平台,利用了DPDK平台的优化,打造了极轻量的高效数据转发面。在转发面中,无中断,无抢占,无系统调用,无锁,通过将核心数据结构cache line 对齐,减少CPU cache miss, 通过使用hugepage 减少TLB的miss,通过将关键数据结构NUMA话,减少CPU跨NUMA访问的延时。在应用程序的处理逻辑上,也秉承着控制面与转发面分离的设计原则,保持高效轻量的转发面,让转发面尽量少的处理非数据包转发相关的事情,复杂的管理操作,调度,统计等都放到控制面来处理。

 

高性能的负载均衡器除了利用DPDK平台的先天优势以及控制面与转发面相分离的平台设计,SLB自身还实现了软硬件结合的转发架构。从client到达SLB的数据包,经过网卡的RSS(Receive Side Scaling),将流量均匀的打散到不同的CPU上,由于阿里的SLB使用的FNAT的转发模式,每个CPU都有自己独立的local address,因此从SLB发往后端RS的数据包,都被替换成了每个CPU自己的local address。这样保证了从RS回来了数据包经过网卡的FDIR(Flow Director)逻辑之后可以到达从client方向过来的流同一个CPU,从而从机制与转发架构上实现了“进出同CPU”的架构,在此架构之后业务上实例了多CPU并发处理的逻辑,让数据结构Per-CPU化,CPU可以完全并行化的处理数据包,使性能大幅的提升,同时,此并发处理的架构,可以充分利用当前多CPU服务器架构,为后续CPU的持续增加,提升了性能不断提升的可能。

a1a2726e6facef020a03611bd5d32e72100350da

SLB利用DPDK平台的先天优势,使用控制面与转发面相分离的平台设计原则, 采用CPU并行化处理的转发构架,其性能得到了很大的提高。在64字节小包的场景下,转发PPS由内核版本的10Mpps提升到了39Mpps, 连接新建的性能也由内核版本的2.7Mcps提升到了6.9Mcps。正是由于DPDK版本SLB性能的大幅提升,才保障了近两年双11脉冲式的增长的突发流量场景。

无感容灾与升级

9c08caa310f52816e633309639a0d68cb55dc7f6

上图是SLB的容灾升级示意图,SLB的部署是可水平扩展的集群化部署模式,多台服务器之间发布相同的VIP路由,在交换机侧形成ECMP的路由,提供了多个维度的容灾能力。但是在没有连接同步之前,由于CPU,内存,硬盘等故障会导致整个转发服务器不可用,在网络收敛之后,ECMP会重新选路,导致绝大多数连接在重新选路之后,不同到达之前的转发服务器上,从而导致已有的连接中断。单网卡或者网卡与交换机之间的故障,交换机自身故障,或者SLB通过轮转升级等多重情况下,都会导致ECMP重新选路,导致已有的连接中断。已有连接中断,特别是长连接中断,导致直接交易额直接下跌,对于用户侧会感觉到访问超时,或者报错,对于用户的体感也非常不好。

3cca1e177133b058d46f7687e366a1d8abb93286

SLB使用了会话同步的机制来解决了升级与容灾场景下长连接中断的问题。同一个组的服务器(如图中的4台转发服务器)会加入到同一个组播组中,当SLB应用程序启动之后,它会自己加入到对应的组播组中,服务器下线或者重启,超时后自动从组播组中删除。使用组播技术之后,可以简化会话同步机制中,机器上线与下线的问题。使用组播技术之后,将原本需要复制多份,分别发送给其它服务器的组播包,现在只需要发送一份,数据包的复制offload给交换机,由交换机的硬件完成,让SLB的转发面简单,高效,高性能。

有了会话同步之后,会话分为两类:一类是本地会话 Lconns ,另一类是同步的会话 Sconns 。会话同步时,只会将本地的会话同步给他们设备,接收同步请求的服务器会更新 Sconns 的超时时间以及其它信息。在发生容灾切换时,转发服务器的 Sconns 如果进行了数据包的转发,就会自动切换成 Lconns
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
1118 0
|
3天前
|
负载均衡 算法 安全
slb高性能
【11月更文挑战第4天】
14 3
|
6月前
|
网络协议 Linux C语言
Intel HDSLB 高性能四层负载均衡器 — 基本原理和部署配置
本篇主要介绍了 Intel HDSLB 的基本运行原理和部署配置的方式,希望能够帮助读者们顺利的把 HDSLB-DPVS 项目 “玩” 起来。
310 9
Intel HDSLB 高性能四层负载均衡器 — 基本原理和部署配置
|
4月前
|
负载均衡 安全 Cloud Native
云上负载均衡:构建高可用、高性能的网络应用架构
与云原生技术深度融合:随着云原生技术的普及和发展未来的云上负载均衡将更加紧密地与云原生技术相结合。例如与Kubernetes等容器编排平台集成实现自动化的服务发现和路由管理;与Serverless架构结合提供无缝的流量接入和请求处理能力。 安全性能提升:面对日益严峻的网络安全威胁云上负载均衡将更加注重安全性能的提升。通过引入加密传输、访问控制、DDoS防护等安全措施确保网络流量的安全性和隐私性;同时还将建立完善的安全监控和应急响应机制以应对各种安全事件和突发事件。 支持多协议和多场景:未来的云上负载均衡将支持更多种类的网络协议和应用场景以满足不同用户和业务的需求。例如支持HTTP/2、
238 0
|
6月前
|
边缘计算 负载均衡 网络协议
Intel HDSLB 高性能四层负载均衡器 — 快速入门和应用场景
在云计算、SDN、NFV 高速发展并普遍落地的今天,随着上云业务的用户数量越来越多、数据中心的规模越来越大,云计算规模成本效应越来越重要。因此,云计算的集约式系统架构逻辑就决定了网络的性能是一个永恒的话题。在云网络的技术体系中,对性能追求不仅是方方面面的,而且是极致严苛的。性能每提升一点,成本就降低一分,收益就提高一些,产品的竞争力就更上一层楼。
115 0
Intel HDSLB 高性能四层负载均衡器 — 快速入门和应用场景
|
6月前
|
负载均衡 网络协议 应用服务中间件
【亮剑】在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。
【4月更文挑战第30天】本文介绍了在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。HAProxy是一个高性能的开源TCP和HTTP负载均衡器,适合处理大量并发连接;Nginx是一个多功能Web服务器和反向代理,支持HTTP、HTTPS和TCP负载均衡,同时提供缓存和SSL功能;Keepalived用于监控和故障切换,通过VRRP实现IP热备份,保证服务连续性。文中详细阐述了如何配置这三个工具实现负载均衡,包括安装、配置文件修改和启动服务,为构建可靠的负载均衡系统提供了指导。
155 0
|
缓存 负载均衡 算法
Nginx:为什么高性能?Master&worker如何配合?负载均衡算法有哪些?七层和四层负载均衡了解吗?
Nginx:为什么高性能?Master&worker如何配合?负载均衡算法有哪些?七层和四层负载均衡了解吗?
|
5月前
|
缓存 负载均衡 算法
解读 Nginx:构建高效反向代理和负载均衡的秘密
解读 Nginx:构建高效反向代理和负载均衡的秘密
122 2
|
4月前
|
负载均衡 算法 应用服务中间件
nginx自定义负载均衡及根据cpu运行自定义负载均衡
nginx自定义负载均衡及根据cpu运行自定义负载均衡
82 1
|
4月前
|
运维 负载均衡 算法
SLB与NGINX的异同是什么
SLB与NGINX的异同是什么
434 2

相关产品

  • 负载均衡