基于负载均衡技术的研究及展望
2017-11-10刘立斌
刘立斌
基于负载均衡技术的研究及展望
刘立斌
随着人们互联网技术的显著提升,对网络性能的要求也越来越高,但是由于网络服务器的处理能力有限,对服务器的过多的请求会超出其承受的负载上限,最终会导致服务质量差,负载均衡技术的出现在一定程度上缓解了网络性能的压力,本文主要介绍了负载均衡及其一些技术并对其未来进行了一定的展望。
负载均衡;负载均衡算法;OpenFlow;SDN
一、负载均衡技术出现背景
互联网的快速发展正在不断影响着人们的方方面面,尤其随着直播、视频以及大型游戏的火热开展,网络当中的负载量一直在高速地增长,网络数据中心的应对能力也在不断地变强。虽然网络带宽也一直在不断地飞快增长,但并不能应对人们对网络性能的要求,导致了过长的响应、排队等待等许多问题。网络中的流量不能均衡地分配是导致此现象的一个主要缘由,这使得有的网络节点处于超负荷工作状态,而有的节点却处于没有任务需要处理。而我们每天都在手机甚至电脑中使用的一些需要上网的一些程序随时都可能向数据中心网络中注入流量,如何均衡数据中心的非常大的负载,充分利用网络流量负载是一个急需解决的普遍性现象。通过合理分配流量的负载均衡技术的出现在一定程度上解决数据中心的负载平衡,从而提高整个网络的使用效率。
二、负载均衡描述及分类
负载均衡是将现有的工作负载均衡的分配到数个计算单元的一种技术,计算机、网络链路、磁盘驱动器以及计算机集群等都可以作为计算单元。负载均衡的目标是优化资源的使用来解决网络拥塞问题,极大程度上地提高其吞吐量,降低其响应时间以及尽量避免过载情况的出现。负载均衡技术可以明显地提高网络以及系统的性能。负载均衡技术处理接收到的要求是将它们分配到许多不同的节点去,当某个节点出现不能工作的状况或者出现没有响应状况时,将不能处理的流量派发到别的工作良好的节点来处理,有效的避免了网络一些重要组成部分可能出现某个单个节点没有用的可能性。
负载均衡主要分为硬件实现和软件实现。其中,硬件负载均衡实现负载均衡主要是使用负载均衡器,但是硬件负载需要特别的芯片来达到其比较高的性能,这就造成了它高昂的价格从而导致了它的局限性。而软件实现是使用与其相关的软件,同时调用和其有关联的协议,来实现负载均衡的效果。这种方法的配置十分的简单,部署更加方便,价格相对于硬件实现来说是非常低廉的,目前更受欢迎的是H a p ro x y、LVS、N gin x等。普遍来说学术界的负载均衡研究更侧重于软件实现方面,通过不断改进负载均衡调度算法,从而提高系统的整体利用率。然而,由于传统网络架构的制约,这些解决方案无法同时满足灵活高效的要求,并没有非常强的通用性,故怎么提高灵活性和通用性已成为目前的研究方向。
根据反馈区别,负载均衡技术可以分为动态负载均衡技术和静态负载均衡技术两个类别。静态负载均衡技术提前根据系统的综合能力、性能或曾经的实践情况等静态参数来制定让系统得以均衡的方案。静态负载均衡技术一旦运用后,系统不会关心以后的工作状态是好是坏,只会一如既往地遵循刚开始使用的方案来进行均衡的负载。静态负载均衡技术这种方法可以说是比较容易,系统花费比较小,但是对方案的设计要求非常高,需要考虑到以后所有可能出现的问题。动态负载均衡技术主要是基于当前的状态情况反馈来调整负载的分配,即便动态负载均衡方法更灵活,性能比静态负载均衡方式更好,但是动态负载均衡这种方法由于过度的复杂,导致系统花费非常较大,这使动态负载均衡的性能优势被它非常大的复杂性和花费可能所严重影响;由于处理对象的不同,负载均衡还可以分为两大类:服务器负载均衡技术和网络链路负载均衡技术。服务器负载均衡最重要的是对服务器集群的设置,并使用域名系统服务等技术来实现均衡的负载。有许多形式的针对网络链路负载均衡,如在数据链路层中,链路聚合技术可以用于在不同物理路径上分配网络流量,以达到负载均衡;在网络层,可以根据报文源I P地址以及目的I P地址等主要内容来选择不同的路径上的转发来实现负载均衡的目的。
三、常见负载均衡算法及其分类
负载平衡的实现主要是通过找到目前工作量最低的节点,然后会将新的任务请求发到该节点,从而达到任务数与其处理之间的均衡,提高整个系统的性能。一般常见的负载均衡算法有:轮询法、加权轮询法、最小连接调度算法、加权最小连接算法、散列法等。下面我们来简单地介绍一下这些算法。
(一)轮询法
轮询法原理非常明了,轮询法内的每个节点都拥有同样的处理能力,每个节点都能独自的对外进行服务。轮询法具有一个循环链表,每一个有能力能力提供业务的节点都被包含在里面;当有一个新的业务到来时,每一个节点会被依次分配业务,一直周而复始,而且在该方法中,每一个节点分配到业务是等概的。轮询法最大的不足之处是它想当然地认为每一个节点性能都是一样的,没有思考其性能不同时的情况,但是当存在节点间性能相差比较悬殊的时候,如果还不考虑性能差异而仍然依次率给每个节点分配相同的业务,极大程度上会对较差性能节点造成较大的损伤。因此该方法非常不适合节点之间性能相差较大的系统中。由于轮询法思路比较简洁明了,它经常和别的一些方法混合使用。
(二)加权轮询法
加权轮询法被提出是为了应对上面介绍的轮询法的不足。加权轮询法不仅继承了轮询法的优点,还解决了它的不足之处,提出了权值这一概念定义,每个节点的权值大小表示该节点的性能的优劣:权值越大代表节点的性能越好,可以接受的业务量也能越多;权值越小,节点的性能就越差,能接受的业务量对应也就越少;当权值等于0时表示该节点没有能力对外提供业务。加权轮询法的基本想法为:负载均衡器根据权值的大小轮流为各个节点分配任务,权值大的可以分配的多一点而权值小的相应也就少分一点,也就是说根据每一个节点权值的大小决定每个节点所分到的业务量,从而增加了整个系统的性能。
(三)最小连接调度算法
该算法是一种比较灵活的算法,用正在活跃的能够连接的节点数目来衡量系统的承受能力,把一个刚发送过来的的连接要求分发到现在这个时刻在节点之间连接数目为最小的一个节点。最小连接调度算法引进了一种新的概念--调度器:能够统计每一个节点在当前这个时刻已经连接了的总数量,当有一个要求被调度到某一个节点时,该节点连接总数的位数就会增加1,当某个节点的连接断开或者很长时间没有响应时,调度器记录的这个节点的连接数目就会减少1。
(四)加权最小连接算法
加权最小连接算法和加权轮询法一样引入了权值这一概念,每个节点权值大小代表着加权最小连接算法的处理能力的强弱。加权最小连接算法是把其节点建立的连接数尽可能的与该节点的权值大小相对应,权值大的节点内就可以分担更多的负载,而权值小点的节点就承担较小的负载。
(五)散列法
散列法主要是通过散列函数来提高系统的利用率,其主要原理为:当系统受到报文任务请求时,散列函数会通过对该任务中报文的某个字段进行处理运算,最后由处理得到的结果确定应由哪个节点处理该报文,另外源I P地址和目的I P地址是散列函数最常用的处理字段。散列法能确保同一条网络流的报文能够被映射到同一节点来处理,还对UD P等无连接任务具有非常好的效果。散列法能够很优秀地保证业务分配的合理性以及统一性,缺点是对散列函数的选取非常严格,被使用的散列函数需要其地址尽可能在其空间上严格均匀地分布。
四、关于Openflow负载均衡应用
由于传统网络架构的局限性,在传统网络中实现的负载均衡通常灵活性较差,不能很好地使用网络中的资源与计算的资源,软件定义网络(So f t w are De f ined N et w ork,SD N)概念的提出完全改变了传统网络的体系架构的不足,为这问题的解决提供了思路。SD N是一种将控制层和转发层分离的新型网络架构,交换机只负责数据流的转发,降低了网络交换机的负载,控制层的功能全部由运行于服务器上的控制器实现。控制器需要下发流表到交换机才能支持转发层设备的有效运行,而控制层与转发层之间的通信需要遵守一定的规则,目前较普遍的是采用O p en Fl o w协议来实现信息交互。
对于负载均衡服务而言,SD N和O p en Fl o w这种控制转发分离的架构通过控制器作为核心,监测网络中的流量、实时调度流量,非常适合为网络提供负载均衡服务,并且近年来O p en Fl o w技术在对网络的革新和发展的推动中发挥了非常大的影响。
O p en Fl o w网络的主要组成有O p en Fl o w交换机、控制器和O p en Fl o w协议等。O p en Fl o w交换机是整个O p en Fl o w网络的核心部件,主要管理数据层的转发并实现数据层的功能;控制器则负责路径选择、计算等功能,实现控制层的功能;O p en Fl o w协议相当于是O p en Fl o w交换机和控制器间交流的一种介质。三者之间的关系是:通过安全通道O p en Fl o w交换机与外部控制器进行通信,安全通道中传输的是负责传输控制以及管理信息的O p en Fl o w协议。
图1 OpenFlow交换机
O p en Fl o w交换机主要由三部分组成:一个或者多个流表、执行分组查找和转发的组表和连接O p en Fl o w交换机到控制器接口的安全信道;控制器在O p en Fl o w网络架构中的主要任务是对其网络内流量的处置和掌握,一般来说控制器完成的工作为:(1)网络链路发现;(2)策略制定和路径选择;(3)流表项的下发;O p en Fl o w协议主要用来完成O p en Fl o w交换机与控制器之间的通信。
图2 OpenDayLight控制器层次示意图
五、基于OpenFlow的负载均衡算法的调研
基于O p en Fl o w的负载均衡技术同时具有硬件负载和软件负载的优点,即基于O p en Fl o w的负载均衡不仅所需要的成本低而且所需要的配置也非常简单。基于O p en Fl o w的负载均衡都是在O p en Fl o w控制器上完成的,如N O X/P O X、O p enDayLight等控制器,根据对交换机相同时间间隔的流量统计得到数据从而得出网络负载状况,然后由此改变系统内部的负载状况,更好地完成对网络负载的均衡。
本文调研了现有的几种简单负载均衡算法:P l ug-n-Serve负载均衡算法、持多服务的O p en Fl o w负载均衡算法、基于通配符规则匹配的负载均衡算法、动态负载均衡算法DL B。
P l ug-n-Serve负载均衡算法:该负载均衡算法不仅想到了网络处于拥挤时的可能性,还考虑到了服务器处于较大负载时的情况,该模型根据网络内节点的实时状况和应答所需要的综合响应时间,有效地给网络节点分配请求。因为P l ug-n-Serve负载均衡模型是为了校园网络中的负载达到均衡而设计出来的,所以P l ug-n-Serve负载均衡模型没有想到在数据中心网络的情形,而数据中心应该具备对社会内的各种场所提供业务,并不能局限于校园网络中的工作量,这是该算法的主要不足之处。
支持多服务的O p en Fl o w负载均衡算法:该算法基于O p en Fl o w负载均衡使用不一样的控制器去应对不一样的应答要求,而且不一样的控制器还可以使用不一样的负载均衡算法。这种主要应对不同的服务进行了不同的操作,但也没有针对数据中心的情形,而且数据中心内带宽使用效率在每一个链路上都有可能有所差异;在边缘层或者汇聚层上,如果在一个非常短的时间内遇到了大量的流量应该会造成网络拥塞现象的出现。
基于通配符规则匹配的负载均衡算法:以发起请求的客户机I P地址前缀作为通配符,在一颗二叉树上分配通配符到对应的服务器,形成一条规则,若干规则形成一个规则集以流表形式装载到O p en Fl o w交换机上,由规则集控制交换机的转发,降低了控制器介入的次数,降低了请求的平均延时。该方案虽以数据中心网络为目标场景,但目前仅在两台交换机的简单网络中进行了验证,还无法适应复杂的实际数据中心网络拓扑。
动态负载均衡算法DL B:该动态负载均衡算法以流为基本单位,并遵循深度优先的策略,从源节点出发的所有流都只会向更高层传输,除非该流已经到达了它应该到达的最高层节点,之后该流才会向底层前进直到到本次所需要到达的目的节点。
六、负载均衡未来展望
随着科技的不断发展和生活的逐渐进步,人们对网络性能的需求只会越来越大,现有负载均衡算法仍然存在着许多不足之处,会慢慢的满足不了人们对网络性能的要求,我们需要从不同的角度以及方面来提出一个个更加适应人们需求的更加动态的负载均衡算法,使网络负载能够更好的均衡分在网络中。
[1] 周莹莲,刘甫.服务器负载均衡技术研究[J].计算机与数字工程,2010,38(04):11-14+35.
[2] 罗拥军,李晓乐,孙如祥.负载均衡算法综述[J].科技情报开发与经济,2008,(23):134-136.
[3] 周松泉.一种新的服务器集群负载均衡算法[D].南昌航空大学,2012.
[4] 张远.基于OpenFlow的负载均衡研究[D].北京工业大学,2014.
[5] 左青云,陈鸣,赵广松,邢长友,张国敏,蒋培成.基于OpenFlow的SDN技术研究[J/OL].软件学报,2013,24(5):1078-1097.
[6] 杨梦婷.基于OpenFlow的SDN网络仿真平台设计与DoS攻击检测[D].北京邮电大学,2015:1-74.
[7] 张园园.利用oponflow技术实现网络负载均衡[J].中国科技论文在线,2010,(12).
F062.4
A
1008-4428(2017)10-140-03
刘立斌,男,辽宁省辽中县人,吉林大学电子与通信工程领域工程硕士,高级工程师,现任中移铁通有限公司江苏分公司总经理。