云计算时代,负载均衡如何优化才能让性能起飞?

本文根据阿里云飞天八部金帅在大流量高并发互联网应用实践在线峰会上的题为《双十一技术揭秘——负载均衡性能优化演进之路》的演讲整理而成。

直播视频:点此进入

PDF下载:点此进入



以下是精彩内容整理:

在云计算时代,我们输出计算能力会像水和电一样方便。提到云计算时,大家可能更多会想到计算相关的云产品,比如云主机ECS、关系型数据库RDS、大数据处理平台ODPS,但其实负载均衡在云计算里面的地位是至关重要的,因为它是网络流量的入口。互联网时代,计算资源、服务器、手机、电脑、物联网设备需要网络去连在一起。云计算时代,分布式计算往往意味着一个集群里面有很多计算节点,怎么保证服务的请求会均匀分布在计算节点上面同时对外提供服务呢?这是负载均衡需要解决的一个课题。

云上的“双十一”

2015年的“双十一”第一次有阿里云参与进来,是云上的“双十一”。“双十一”的阿里云主要有以下几个部分:阿里云三大件,即云服务器、负载均衡、RDS云数据库,这三大件是云计算的基础组件。

SLB负载均衡的“双十一”提出了很多问题:如何实现快速部署?如何提供足够的性能?如何提供高可用的服务?如何提供足够的容量?

负载均衡简介

负载均衡是指通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。通俗的讲,就是当访问请求变多时,需要更多的服务器来响应请求、对外提供服务,这时候需要有一个负载均衡器通过一定规则把请求分发在多台服务器上,横向拓展了服务的性能。负载均衡可以通过硬件或者软件来实现,传统的负载均衡还可以通过DNS实现,但是DNS的时效性不好。

硬件负载均衡器是一个重要的角色。十年以前,负载均衡大部分是由负载均衡器来实现的,最出名的厂商是F5。负载均衡器的优点是:有专门的团队来提供开发和维护,性能比较好,相对软件负载均衡稳定可靠些。缺点是:费用昂贵,难以拓展功能和容量,灵活性差。

软件负载均衡

LVS(Linux Virtual Server)跑在网络层的第四层,TCP或者UDP这一层,它是开源的,已集成在Linux内核中,其可伸缩,可以弹性部署,非常可靠。

Nginx跑在7层网络上面,它是轻量级的Web服务器,优势在于它有很好的网络适应性,只要后端的路由器可以连通就可以通过Nginx做HTTP的负载均衡,它支持URL、正则表达式等高级逻辑,同样是开源的。

SLB其实就是基于前面介绍的LVS和Nginx来实现的,分为四层负载均衡和七层负载均衡。如图所示,访问流量会经过公网的入口,进入某个可用区,每个可用区又会有多个机房,每个机房又会有一个LVS的集群和一个Tengine的集群来实现四层负载均衡和七层负载均衡。

负载均衡技术已经作为了全集团的流量入口。第一,它是弹性计算的流量入口,服务阿里云的公有云用户,涵盖了大中小型网站、游戏客户、APP服务端,还有专有云,包括金融和政府部门。第二个服务的对象是云产品,比如RDS、OSS、高防等都用到了SLB的负载均衡技术,提供云计算服务的流量入口。第三,为集团VIP统一接入平台提供负载均衡服务作为电商平台的流量入口。第四,蚂蚁金服使用负载均衡服务作为支付宝、网上银行交易平台的流量入口。

高性能的负载均衡

如何对负载均衡进行高性能的优化?首先是FULLNAT技术,它是LVS的一个转发模式,此优化的目的是为了摆脱开源LVS对网络部署的限制;另外的一个优化点是二层转发,LVS是Linux内核里面的一个模块,需要经过Linux传统的协议栈,性能非常低,二层转发可以通过记录MAC地址绕过Linux路由表,提升性能;第三个比较大的优化是CPU的并行化,可以让每个 CPU 并行的处理报文的转发;第四个优化是FASTPATH,完全旁路了Linux协议栈,直接将报文送到网卡,性能达到硬件线速;第五个优化是CPU指令的优化,由于FULLNAT需要对报文做一些修改,我们使用CPU专门对Crc32定制的计算指令会大大优化计算校验的性能;最后一个优化点充分利用了现在服务器NUMA的特性,NUMA是计算机的一种架构,在不同的CPU上面访问特定内存或者系统资源会比较快,通过NUMA的特性来分配本地内存可以达到很大的性能提升。

FULLNAT优化

CPU并行化

控制管理的并行化,修改了LVS的源码,原生的LVS本地只有一份配置是全局的,每个CPU访问它都要去加锁,我们的优化是在每个CPU上都有全量的转发配置的部署,这样,每个CPU查询自己的资源的时候是不需要上锁的,大大提高了处理的效率。

每个 CPU 在查询连接(session) 时,也是并行处理,大大提高了转发性能。

当CPU分开工作时,怎么保证同一条流的入方向和出方向都落在同一个CPU上呢?之前提到的FULLNAT有两条流,一条是client访问vip,另一条是从RS访问local地址,这两条流采用了硬件的两个特性来保证他们落在同一个CPU上,client -> vip这条流采用了硬件的RSS技术,通过哈希自动选择CPU,通过网卡队列CPU中断的绑定使得关系固定下来,当它处理完发送到后端后,RS ->
localaddr回来的入包的源地址是后端的服务器,目的地址是本地地址,此时通过 flow-director 特性对本地地址设置规则来保证分流的效果,即入包和出包的规则一致,
命中同一个 CPU 进行处理。

FASTPATH优化

只经过网卡层和驱动层,大大提升报文的转发性能。

高可用的负载均衡

连接级的高可用通过Session同步来实现,LVS上面每一条转发的连接都会用Session来记录原地址、目的地址等相关信息,每台LVS上面都可以获得其他LVS上面的Session,这样当一台LVS宕机之后,其流量就会分配到其他LVS上面;第二个优化是单机高可用,每台LVS有两个物理网口,双上联了一台交换机,从网络路径上提供了一个冗余,每台交换机上面的路由器也有vip优先级,当一台路由器故障时它会根据优先级切换到另外一台路由器上,实现单机高可用;第三个优化是集群高可用,即热升级无感知、单机故障无感知、交换机故障无感知;第四个优化是通过主备双SITE、秒级切换实现AZ高可用;第五个优化是安全防护,使用SynProxy防御快速校验TCP的三次握手抵御攻击,减少CPU和内存的损耗;最后一个实现高可用的途径是健康检查,及时剔除异常RS,保证服务高可用。

负载均衡集群的高可用

每个集群可能有4台或者8台LVS作为转发服务器,每台服务器上面会有双网口,分别上联两台交换机,两台交换机又分别上联两台路由器,这样网络路径上的冗余就变得非常大,任意一条路径断掉不影响其性能。

负载均衡AZ的高可用

以杭州集群为例,分为可用区A和可用区B,其上面都有全量的转发规则,我们可以设置某个vip,它的流量只通过路由器1来访问其中的某个集群。当整个的可用区发生故障时,它会秒级的切换到另一个路由器上,它的请求就会落在备用的可用区上面,这样当集群发生大规模故障的时候,vip的可用性不会受到影响。

SLB可用性全景图

首先可以通过DNS这种传统的模式在一个域名下面挂两条以上的vip,其中一条vip放到杭州集群,一条vip放到青岛集群,进到杭州集群的流量也有两个可用区,正常情况下会落到某个可用区上面,而另外的可用区是一个备份,当某个可用区变得不可用时,会在杭州集群内进行切换,实现了AZ的高可用。某一个可用区里面,某一台LVS宕机时,那么其他三台LVS就会提供服务。整体上实现异地多活,同城多活的架构。

展望未来

软件架构:从内核态切换到DPDK架构,转移到用户态做网卡的轮询,报文的转发。

硬件升级:从10G网卡升级到40G网卡,集中硬件资源、缩小集群的数量,配备更快的CPU、更大的内存。

高可用:计划做跨AZ的Session同步,即使AZ之间的切换也让用户无感知,保证原有连接的持续;网络的全链路监控包括区域链路上报文转发的时延、丢包率、重传率等给客户提供更全面的网络质量评估;vip的主动探测帮助客户监控vip是否可用,并且把数据展示给用户;SLA,关于用户使用资源上的限制和保证,做好公有云用户的资源隔离。

时间: 2024-10-06 03:58:05

云计算时代,负载均衡如何优化才能让性能起飞?的相关文章

DNS 负载均衡:如何提升网站性能

如果你想提高你的网站或Web应用程序的访问速度,DNS负载均衡或许可以帮助你实现这一目标.通过帮助你分散收到的流量,有助于使网站以最佳的速度运行. 什么是DNS负载均衡? DNS负载均衡是一种用来帮助将对某个域的请求分配在不同机器上的技术,这样就不需要使用某个单一机器来承载全部负载.这种方法有助于提高网站和(或)Web应用程序的性能,因为流量负载可以在众多的服务器上共享,而不是由一个单一机器承担. DNS表示域名系统.它是用来把一个域名,如Google.com,翻译成一个特定服务器的IP地址,如

国产负载均衡产品第一品牌是如何练成的?迪普科技这样回答!

2017年IDC第一季度数据显示,在应用交付领域,杭州迪普科技股份有限公司(简称"迪普科技")在国内市场份额排名第二,占有率已经跃居国内厂商第一,成为国产负载均衡产品第一品牌.让迪普科技赢得如此殊荣的是他们的扛鼎之作--ADX3000应用交付平台. 提及这款ADX3000,的确算得上是明星产品了,它是唯一入围国内三大电信运营商集采的负载均衡产品,在通信.电信.教育行业已经部署多年,在很多客户眼中,当他们对技术性能和应用环境要求较高时,ADX3000算得上他们脑海里跳出的首选品牌.那么这

借助LVS+Keepalived实现负载均衡

原文地址:http://www.cnblogs.com/edisonchou/p/4281978.html 一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等. 古人有云:当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛来拉车. 在实际应用中,在Web服务器集群之前总会

昨夜难忘?今晚20点,容器、中间件、负载均衡等实战交流继续!

良辰美景与您只差一个点击==>大流量高并发互联网应用实践在线峰会 昨晚(20日)20点整,大流量高并发互联网应用实践在线峰会如约召开,阿里林伟.朱震杰.顾风胜.罗龙九.陈哲等数位专家不仅分享了各自领域的大流量与高并发实践经验,更就用户疑问与来宾完成了深入的探讨,真正的做到了分享交流具精彩! 觉得小编夸大其词?现场都还没撤呢!不妨看向阿里云数据库资深专家林伟与一位来宾小可爱的交流: 来宾:专家你好,正在听您的演讲.特别想了解下,现在有Hadoop.Spark.Storm等热门的大数据框架,你们为什

具有负载均衡功能的MySQL服务器集群部署及实现_Mysql

在实际生产环境中,部署和实现具有一定负载均衡功能的 MySQL服务器集群,对于提高用户数据库应用系统的性能.速度和稳定性具有明显的作用.本文简要介绍了在 FreeBSD 7.0-Release系统上部署实现MySQL服务器集群的方案,并对可能出现的问题提供了相应的解决方法.1. 引言MySQL是一个高速度.高性能.多线程.开放源代码,建立在客户/服务器(Client /Server)结构上的关系型数据库管理系统(RDBMS).它始于1979年,最初是Michael Widenius为瑞典TcX公

阿里云高级专家朱小平:如何打造应对超大流量的负载均衡

大流量高并发互联网应用实践在线峰会官网:https://yq.aliyun.com/activity/112 峰会统一报名链接:http://yq.aliyun.com/webinar/join/49 议题名称:<如何打造应对超大流量的负载均衡> 议题简介:作为一个公网流量的入口,阿里云负载均衡应对超大规模流量的信心是什么?又如何去保持平稳顺滑的运行?为了应对各种大规模的活动,阿里云负载均衡又走了哪些性能调优之路?此次,阿里云高级技术专家将从集群部署.负载均衡高可用框架,流量监控,指标等多个方

azure-Azure的负载均衡的原理是啥

问题描述 Azure的负载均衡的原理是啥 大家好 谁知道Azure的负载均衡的原理是啥?? 求解答!!! 解决方案 云计算-Azure-3.负载均衡集http://blog.chinaunix.net/uid-10565106-id-4359112.html 解决方案二: 四层负责均衡:是通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器与请求客户端建立TCP连接,然后发送Client请求的数据. 由上图可知:在四层负载设备中,把client发送的报文目

全局服务器负载均衡已开始向云上转移

即使应用程序已经从传统的数据中心转移到云计算,但服务器负载均衡仍然是IT基础设施的核心元素.无论服务器是真实的还是虚拟的,永久的还是短暂的,能够在多个服务器之间智能地分配工作负载总是必要的. 但是,在多个云.多个数据中心和混合基础设施之间可靠地分布工作负载的能力仍然存在较大的不足,结果就是工作负载分布不佳和应用程序性能降级.如果能在全球范围内更好地管理工作负载,则可以避免这种性能下降.简而言之,需要更好的全局服务器负载均衡(GSLB). 云计算和负载均衡 负载均衡器也被称为应用程序交付控制器(A

看“软硬兼施”的负载均衡如何突破性能瓶颈

面对网络应用业务量及用户量的增加,面对庞大的数据流量及集中性的访问,面临网络堵塞和服务超载的严峻问题在所难逃.为了能够为用户提供持续.不间断的应用服务,带来更好前端应用体验,不仅需要拥有处理大量并发访问服务能力的服务器,负载均衡技术也是加强处理能力.提高系统容错性的一大法宝. 负载均衡遭遇业务新挑战 仅仅一个新浪微博,就有超过5亿的用户.访问量早就成为了天文数字.为改善使用体验.提升网络性能,新浪于2004年左右在国内最早使用负载均衡设备NetScaler,2007年新浪与F5公司达成全方位战略