SLB高性能与高可用技术实践全解析

简介: 云栖社区2017在线技术峰会上,阿里云刺背分享了双十一以及红包期间SLB关于高性能、高可用性方面做的一些技术改进。他详细介绍了软件负载均衡SLB及其部署,从系统架构方面介绍了高性能的负载均衡技术,从后端服务器、可用区内、可用区间三个方面介绍了高可用的负载均衡技术。

从支付宝官方公布的数据来看,在除夕当天大约有2亿人参加红包活动。今年的SLB和往年是不一样的,SLB进行了平台重构,为业务提供了跨可用区的方案。以下内容根据直播视频整理而成。

直播回顾:点击进入

pdf下载:点击进入

全集团的流量入口

409c18e58530525a3f11b94c0f9bccfbe1d1328e

SLB成了公有云、云产品服务、电商平台、交易平台的流量入口。

负载均衡简介

负载均衡即分担负载、提供服务,具体的说是当访问请求进入到SLB后,SLB会做后端服务器的选择,通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。最大的好处是后端的服务器可以动态扩容。

软件负载均衡

fb4a8aba2cedd58558a04fb275f0790a36b7096e

整个集团的负载均衡都是基于软件实现的,SLB(sever load balancer)是基于开源的LVS(Linux Virtual Server)实现的。SLB的优点包括:自主、可控,由于是代码是开源的,代码是可以自主修改的,而新的功能也可以自主加入;可伸缩性,整个SLB是集群部署的,通过BGP发布VIP、local adress路由等,实现集群负载通过路由ecmp将流量引到不同的服务器上;高可靠性,SLB通过多个维度提供了高可用性的保障;易于部署,SLB跑在普通的X86服务器上。

SLB

ec8775175d1d39070976b966699ec2ff6a5a0ac8

整个软件SLB分为两部分:基于TCP的四层负载均衡和基于http/https的七层负载均衡。红包业务主要使用了四层负载均衡。

SLB集群部署

177d026acb29e81e5cfc1c722e8167a690e67d87

上图是以杭州Region为例的集群部署图。比如,在杭州选择了两个可用区(可用区A和可用区B,是不同的IDC机房)。四层负载均衡LVS和七层负载均衡Tengine都是集群化部署的。对于四层负载均衡,当访问流量从Internet进来之后首先会经过LVS集群,直接转发给后端的ECS。对于七层负载均衡,当访问流量从Internet进来之后首先会经过LVS集群,然后经过Tengine集群再转发给后端的ECS。七层负载均衡比四层负载均衡多了一次集群内的转发,虽然造成少量的性能开销, 但是给客户带来了一些feature和HTTPS卸载的支持。

高性能的负载均衡

新的SLB最大的不同是从内核转发模式改为用户态转发模式,从系统架构上解决性能问题;支持FULLNET的转发模式,摆脱部署时网络的限制;利用硬件特性,实现CPU完全并行化处理,性能大幅提升;利用NUMA 特性,给每个NUMA保存一份核心数据;利用CPU硬件指令Crc32使消耗降低8倍。

从系统架构解决性能问题

937af7db57c81ff825c134025ce3a127acb1d5b9

上图中,左边部分是整个系统的架构图。Control Plane为控制面,Data Plane为数据面,设计采用分离方式。控制面主要做两件事情:负责路由的发布,使用OSPF和BGP来发布VIP和local address路由;从控制系统中接收负载均衡的配置下发到数据面。数据面的每个CPU上都有一个数据转发的线程来处理数据,从业务网卡进来的数据包会直接被Data Plane的线程处理并发送出去。

该系统架构实现了:数据面轻量。从内核处理改为用户态处理,减少了原架构内核处理的中断,此外将Data Plane的线程从NUMA中隔离出来专门用于转发保证了CPU不会被抢占。每个CPU是并发处理数据的,没有数据的交互,因此也没有锁。充分发挥硬件。核心数据表是CPU cache对齐的。采用hugepage技术,减少TLB的miss,提升性能。利用了NUMA的特性,因为路由表和ARP表在服务器上一般是两路CPU的,每个NUMA上有一份数据,当CPU访问路由表或者ARP表的时候,就会就近取本NUMA上的数据。充分利用了网卡的checksum offload等功能。优化流程和算法。把内核中的管理结构由链表全都换为hash结构,去掉了很多冗余的流程。

SLB性能关键点

8b5d56a637e5a8da3c81eb36bc444204359fba55

当用户访问LVS后面服务器的时候,在LVS上做DNAT+SNAT,摆脱了传统DR模式和NAT模式对网络的依赖。通过实现FULLNET模式的转发,网络不再受限,机房可以很轻松部署在机房中,本机房服务器和跨机房服务器都可以作为后端服务器提供服务。

a40cc25bbc4de14a50cf9b5b3f0437ce1e0ee7ac

另外一个性能优化最关键的点在于CPU的并行化。从图中可以看出,物理网卡NIC上有多个CPU,这里也是采用了FULLNET的转发模式。当用户的访问到达SLB之后,源IP是client,目的IP是vip,系统会配置网卡的RSS策略,当收到数据包之后使用数据包的源IP和目的IP进行hash,使这些数据流均匀散落在CPU1到CPUN之间。这样的策略可以保证从client 发起的同一条流的数据包,通过RSS后都同时落在同一个CPU上。

性能提升

e9ec3db228a02fb713eb03e0344262b1d4ce50c3

性能的提升如上图所示,蓝色是LVS版本,红色是性能优化版本。

高可用的负载均衡

高可用的负载均衡体现为五个方面:后端服务器高可用,使用健康检查及时剔除异常RS;服务器高可用,四网口,双上联交换机,路由优先级;集群高可用,热升级无感知,单机故障无感知,交换机故障无感知;可用区间高可用,主备双SITE,秒级切换;安全防护,SynFlood防御。

后端服务器高可用

c9ba6e6d1408357b0b3d489b1feef92ebfd4fd54

后端服务器高可用主要体现在两个方面。比如,4台SLB机器独立向后端的RS做健康检查,当RS1出现错误情况变得不可用的时候,转发服务器会及时发现异常的服务器,从转发列表中剔除,后续的流量会转发给RS2。这样就保证到了当业务的服务器有一个服务器异常时会被自动的剔除。支持的健康检查方式也有两种:通过TCP端口探测;HTTP请求探测。

可用区内高可用

f383b59f17be802538a79a42cc3212ec24df837a

上图是网络拓扑图。最上方是两个路由器,接着两个交换机,转发服务器有4个口分别接在两个交换机上。路由器、交换机和服务器以及布线是全冗余的,任意一个路由器、交换机或者服务器接口挂掉之后,流量会从BACKUP的方向去提供服务。实现了双A的网络架构,这样在正常情况下,所有的路由器、交换机、服务器都是服务的、活跃的,没有冷备设备的。另外,在可用区内实现了实时会话同步功能,当用户的请求通过SLB去访问后台服务的时候,假如这个请求落在了转发服务器1上,那么在转发服务器1上会创建一个记录源IP、目的IP、转发后的local address等信息。这个session建立好之后,会把这个session通过组播包的方式发送给交换机,交换机收到这个包之后会把这个组播的请求发到其他服务器上,其他服务器会把请求拿出来在本地创建一个备份的session。假如服务器1挂掉了,网络会重新选择路由,假如这条流落在了服务器2上,可以根据之前的session转发信息进行数据包的转化,然后将数据包正常发送出去。这样的好处是当可用区内的任意一个设备出现问题时,业务是感觉不到的。

可用区间的高可用

13d7741c946b3ab593a79d296b5394acbb838276

如上节中讲到,如果可用区A内的所有路由器全都挂掉,此时可用区内的容灾就失效了。可用区间的容灾就是处理整个可用区A挂掉的情况,具体做法将流量切换到另外一个可用区B,由于存在主备关系,可用区B也有这些转发规则,业务的流量也是不受影响的,可以通过可用区B里的SLB提供服务。实现可用区间容灾最核心的技术是使用了大小路由,由于用户的连接都要全部断开,所以用户是能感觉到的,对业务是有影响的。

SLB可用性全景图

456930cc0336abfe695a8e083743aa2918b06b59

从下到上来看,最下面是多台服务器,往上是SLB集群部署,然后是可用区间的高可用性。此外,如果用户配合使用云解析(智能DNS)的话,可以做到跨区域的高可用。


36363ff0e390bdb1823c55db4cb702a5091bf86f

未来主要从硬件升级和高可用两方面入手。
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
8月前
|
负载均衡 NoSQL Redis
不增加 GPU,首 Token 延迟下降50%|LLM 服务负载均衡的新实践
针对LLM服务的特点,Higress AI网关以插件形式提供了面向LLM服务的负载均衡算法,包括全局最小请求数负载均衡、前缀匹配负载均衡以及GPU感知负载均衡,能够在不增加硬件成本的前提下,提升系统的吞吐能力、降低响应延迟,并实现更公平、高效的任务调度。
865 136
|
传感器 人工智能 物联网
穿戴科技新风尚:智能服装设计与技术全解析
穿戴科技新风尚:智能服装设计与技术全解析
979 85
|
弹性计算 负载均衡 网络协议
阿里云SLB深度解析:从流量分发到架构优化的技术实践
本文深入探讨了阿里云负载均衡服务(SLB)的核心技术与应用场景,从流量分配到架构创新全面解析其价值。SLB不仅是简单的流量分发工具,更是支撑高并发、保障系统稳定性的智能中枢。文章涵盖四层与七层负载均衡原理、弹性伸缩引擎、智能DNS解析等核心技术,并结合电商大促、微服务灰度发布等实战场景提供实施指南。同时,针对性能调优与安全防护,分享连接复用优化、DDoS防御及零信任架构集成的实践经验,助力企业构建面向未来的弹性架构。
893 76
|
10月前
|
缓存 负载均衡 网络协议
电商API接口性能优化技术揭秘:缓存策略与负载均衡详解
电商API接口性能优化是提升系统稳定性和用户体验的关键。本文聚焦缓存策略与负载均衡两大核心,详解其在电商业务中的实践。缓存策略涵盖本地、分布式及CDN缓存,通过全量或部分缓存设计和一致性维护,减少后端压力;负载均衡则利用反向代理、DNS轮询等技术,结合动态调整与冗余部署,提高吞吐量与可用性。文中引用大型及跨境电商平台案例,展示优化效果,强调持续监控与迭代的重要性,为电商企业提供了切实可行的性能优化路径。
|
编解码 监控 网络协议
RTSP协议规范与SmartMediaKit播放器技术解析
RTSP协议是实时流媒体传输的重要规范,大牛直播SDK的rtsp播放器基于此构建,具备跨平台支持、超低延迟(100-300ms)、多实例播放、高效资源利用、音视频同步等优势。它广泛应用于安防监控、远程教学等领域,提供实时录像、快照等功能,优化网络传输与解码效率,并通过事件回调机制保障稳定性。作为高性能解决方案,它推动了实时流媒体技术的发展。
663 5
|
数据采集 机器学习/深度学习 存储
可穿戴设备如何重塑医疗健康:技术解析与应用实战
可穿戴设备如何重塑医疗健康:技术解析与应用实战
667 4
|
机器学习/深度学习 人工智能 自然语言处理
AI技术如何重塑客服系统?解析合力亿捷AI智能客服系统实践案例
本文探讨了人工智能技术在客服系统中的应用,涵盖技术架构、关键技术和优化策略。通过感知层、认知层、决策层和执行层的协同工作,结合自然语言处理、知识库构建和多模态交互技术,合力亿捷客服系统实现了智能化服务。文章还提出了用户体验优化、服务质量提升和系统性能改进的方法,并展望了未来发展方向,强调其在客户服务领域的核心价值与潜力。
798 6
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1283 29
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
526 4

推荐镜像

更多
  • DNS