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

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
云解析 DNS,旗舰版 1个月
简介: 云栖社区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

未来主要从硬件升级和高可用两方面入手。
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
22天前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术深度解析:从基础到应用的全面介绍
人工智能(AI)技术的迅猛发展,正在深刻改变着我们的生活和工作方式。从自然语言处理(NLP)到机器学习,从神经网络到大型语言模型(LLM),AI技术的每一次进步都带来了前所未有的机遇和挑战。本文将从背景、历史、业务场景、Python代码示例、流程图以及如何上手等多个方面,对AI技术中的关键组件进行深度解析,为读者呈现一个全面而深入的AI技术世界。
99 10
|
6天前
|
自然语言处理 文字识别 数据处理
多模态文件信息抽取:技术解析与实践评测!
在大数据和人工智能时代,企业和开发者面临的挑战是如何高效处理多模态数据(文本、图像、音频、视频)以快速提取有价值信息。传统方法效率低下,难以满足现代需求。本文将深度评测阿里云的多模态文件信息抽取解决方案,涵盖部署、应用、功能与性能,揭示其在复杂数据处理中的潜力。通过自然语言处理(NLP)、计算机视觉(CV)、语音识别(ASR)等技术,该方案助力企业挖掘多模态数据的价值,提升数据利用效率。
20 4
多模态文件信息抽取:技术解析与实践评测!
|
5天前
|
存储 负载均衡 NoSQL
搭建高可用及负载均衡的Redis
通过本文介绍的高可用及负载均衡Redis架构,可以有效提升Redis服务的可靠性和性能。主从复制、哨兵模式、Redis集群以及负载均衡技术的结合,使得Redis系统在应对高并发和数据一致性方面表现出色。这些配置和技术不仅适用于小型应用,也能够支持大规模企业级应用的需求。希望本文能够为您的Redis部署提供实用指导和参考。
31 9
|
9天前
|
域名解析 负载均衡 安全
DNS技术标准趋势和安全研究
本文探讨了互联网域名基础设施的结构性安全风险,由清华大学段教授团队多年研究总结。文章指出,DNS系统的安全性不仅受代码实现影响,更源于其设计、实现、运营及治理中的固有缺陷。主要风险包括协议设计缺陷(如明文传输)、生态演进隐患(如单点故障增加)和薄弱的信任关系(如威胁情报被操纵)。团队通过多项研究揭示了这些深层次问题,并呼吁构建更加可信的DNS基础设施,以保障全球互联网的安全稳定运行。
|
9天前
|
缓存 网络协议 安全
融合DNS技术产品和生态
本文介绍了阿里云在互联网基础资源领域的最新进展和解决方案,重点围绕共筑韧性寻址、赋能新质生产展开。随着应用规模的增长,基础服务的韧性变得尤为重要。阿里云作为互联网资源的践行者,致力于推动互联网基础资源技术研究和自主创新,打造更韧性的寻址基础服务。文章还详细介绍了浙江省IPv6创新实验室的成立背景与工作进展,以及阿里云在IPv6规模化部署、DNS产品能力升级等方面的成果。此外,阿里云通过端云融合场景下的企业级DNS服务,帮助企业构建稳定安全的DNS系统,确保企业在数字世界中的稳定运行。最后,文章强调了全链路极致高可用的企业DNS解决方案,为全球互联网基础资源的创新提供了中国标准和数字化解决方案。
|
6天前
|
存储 缓存 人工智能
深度解析CPFS 在 LLM 场景下的高性能存储技术
本文深入探讨了CPFS在大语言模型(LLM)训练中的端到端性能优化策略,涵盖计算端缓存加速、智能网卡加速、数据并行访问及数据流优化等方面。重点分析了大模型对存储系统的挑战,包括计算规模扩大、算力多样性及数据集增长带来的压力。通过分布式P2P读缓存、IO加速、高性能存算通路技术以及智能数据管理等手段,显著提升了存储系统的吞吐量和响应速度,有效提高了GPU利用率,降低了延迟,从而加速了大模型的训练进程。总结了CPFS在AI训练场景中的创新与优化实践,为未来大模型发展提供了有力支持。
|
9天前
|
缓存 边缘计算 网络协议
深入解析CDN技术:加速互联网内容分发的幕后英雄
内容分发网络(CDN)是现代互联网架构的重要组成部分,通过全球分布的服务器节点,加速网站、应用和多媒体内容的传递。它不仅提升了访问速度和用户体验,还减轻了源站服务器的负担。CDN的核心技术包括缓存机制、动态加速、流媒体加速和安全防护,广泛应用于静态资源、动态内容、视频直播及大文件下载等场景,具有低延迟、高带宽、稳定性强等优势,有效降低成本并保障安全。
32 3
|
27天前
|
数据采集 存储 JavaScript
网页爬虫技术全解析:从基础到实战
在信息爆炸的时代,网页爬虫作为数据采集的重要工具,已成为数据科学家、研究人员和开发者不可或缺的技术。本文全面解析网页爬虫的基础概念、工作原理、技术栈与工具,以及实战案例,探讨其合法性与道德问题,分享爬虫设计与实现的详细步骤,介绍优化与维护的方法,应对反爬虫机制、动态内容加载等挑战,旨在帮助读者深入理解并合理运用网页爬虫技术。
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
92 2
|
15天前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析

推荐镜像

更多