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

本文涉及的产品
公网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
相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
5月前
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
175 0
|
负载均衡 Linux 网络协议
面向C10M时代的MiddleBox之 - 高性能四层负载均衡设备AGW
面对需求的不断提高,几年前我们还在为解决C10K 问题而努力,现在已经开始面临C10M 问题的挑战。
1647 0
|
9月前
|
缓存 负载均衡 算法
Nginx:为什么高性能?Master&worker如何配合?负载均衡算法有哪些?七层和四层负载均衡了解吗?
Nginx:为什么高性能?Master&worker如何配合?负载均衡算法有哪些?七层和四层负载均衡了解吗?
|
负载均衡
《负载均衡是如何支撑几亿手机微博用户访问的 -高性能负载均衡研发和应用实践》电子版地址
负载均衡是如何支撑几亿手机微博用户访问的 -高性能负载均衡研发和应用实践
61 0
《负载均衡是如何支撑几亿手机微博用户访问的 -高性能负载均衡研发和应用实践》电子版地址
|
负载均衡 网络协议 算法
不懂高性能的负载均衡设计?没关系,架构师带你飞
在软件系统的架构设计中,对集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案。负载均衡本质上是用于将用户流量进行均衡减压的,因此在互联网的大流量项目中,其重要性不言而喻。
1295 0
|
负载均衡 前端开发 Docker
HAProxy高性能软负载均衡器
现在公司实现高可用已经成为必不可少的一环,在众多的负载均衡集群方案中,Haproxy是比较有名的一个。它可以实现TCP或Http的负载均衡。优点如下: 免费开源,与硬件负载均衡相比划算很多 最高可以维护40000~50000个并发,作为软件级别的负载均衡来说,实在强大 支持多种负载均衡算法,同时支持session保持 支持虚拟主机 拥有服务器监控页面,可以了解系统的实时运行状态 借用官网的图,图中的HA即为Haproxy软件,下面的PROXY为要代理的服务器,客户端只需要访问HA,相当于在访问PROXY。
1122 0
|
10天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
28 0
|
3月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【Nginx和tomcat实现负载均衡教程】
至此,你已经成功地使用Nginx和Tomcat实现了负载均衡。Nginx将根据配置的负载均衡策略将客户端请求分发到多个Tomcat服务器上,以提高系统的性能和可用性。请注意,在实际生产环境中,还需要进行其他配置和优化,如健康检查、会话保持等,以满足具体的需求。
34 0
|
3月前
|
负载均衡 安全 前端开发
百度搜索:蓝易云【Nginx与Tomcat负载均衡-动静分离教程】
这些是将Nginx与Tomcat结合使用实现负载均衡和动静分离的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
48 1

相关产品

  • 负载均衡