在线学习系统负载均衡的分析与实现
2016-02-23马艳艳
□马艳艳
( 山西广播电视大学,山西 太原 030027)
在线学习系统负载均衡的分析与实现
□马艳艳
( 山西广播电视大学,山西 太原 030027)
在线学习网络平台由于数据交互量大,服务器过载,导致网络拥塞,很大程度上制约了学生的学习效率。以Linux 操作系统为基础的Linux Virtual Server ( LVS )结构,应用负载调度器、服务器组和共享存储三部分内容实现了负载均衡, 提高了当前学习系统的服务器数据处理能力,加速了系统对学生的响应,大大缓解了“响应时间长”的现象。
负载均衡;服务器;网络
随着在线学习网络平台访问量的不断增加,对Web 服务器的访问量急速上涨,这就要求服务器的性能大幅提高,既要并发处理大量的传输流,又要支持较复杂的协议和服务。面对这种情况, 如果进行大量的硬件升级,甚至引入高性能磁盘阵列,都不能从根本上解决,最好采用服务器负载均衡(Server Load Balance) 技术。
负载均衡技术的含义包括两个方面:一是当有大量的用户并发访问时,多台节点设备同时处理,降低用户等待响应时间;二是某一个节点负载量大,也可以分配在其他节点设备上,处理完成后,将结果汇总并返回给用户[1]。在线学习平台利用此技术,将用户请求分配到服务器上的某一个分布对称结构,然后服务器将收到独立发布的请求,处理完成汇总后再发送给用户。
一、负载均衡技术的简单比较
负载均衡在实现过程中有两种形式,一种是静态负载均衡,另一种是动态负载均衡。静态负载均衡的处理方式是事先用“轮值”的方法确定由哪台服务器工作,即轮流值日的方式,把用户请求分解成单一任务给不同的节点处理;相对应的,动态负载均衡就是运用软件程序动态的分析接收的数据包,实时地把任务分配给相应的节点处理。
(一) 基于特定服务器软件的负载均衡
服务器负载均衡示意图
如上图所示,服务器负载均衡(SLB)是目前最常用的,它是通过将一台服务器虚拟化,表示成一组服务器,即一个服务器群,用来平衡各个服务器的信息量,控制对某一台服务器的访问量。代表这组服务器的那一台服务器被称为虚拟服务器,而组内的服务器被称为真实服务器。负载均衡技术就是将相同功能的真实服务器组成一个群,如果系统要进行扩容,我们只需修改交换机中的地址信息,并不影响服务的提供。集群中有几台服务器,对用户来说是透明的,用户只需了解虚拟服务器的功能,访问时只需连接虚拟服务器的IP地址,负载均衡技术会为用户挑选适当的真实服务器进行连接,而用户对此毫不知情[2]。
web服务器镜像技术是指采用一套性能相同的web服务器,采用内容相同的数据库,为不同的域名分配了不同的IP地址,将用户请求利用Http协议的重定向功能,当其中一台服务器访问量过大时,web服务器软件自动把用户的请求重新定向到不同的镜像站点,用这种方式来实现负载均衡[3]。
(二)基于DNS的负载均衡
DNS负载均衡技术是最早提出的用来解决负载平衡的技术,它的实现方式是通过DNS服务中的名称随机的来解析,进而实现负载平衡。即同一个名字可以用于多个不相同的地址,当用户查询这个名字时,随机得到其中的一个地址。因此,不同的用户在查阅这个名字时将得到不同的地址,进一步访问不同地址的服务器,来达到负载均衡的目的[4]。
对于在线学习平台来说,这种方法简单易行,而且服务器的物理位置不固定,互联网上的任意一台服务器都可以实现这个功能。但是DNS负载均衡的缺点是无法判断服务器的性能,也无法得知当前服务器的运行状态,这就导致性能优良的服务器得不到高效利用,不能处理更多的用户需求,有时也会出现大量的用户需求集中在了其中某一台服务器上,并不能实现真正意义上的负载平衡;而且DNS的数据刷新时间的设置有标准,间隔较小,这个特征保证了数据的及时更新,但同时也造成了网络流量的浪费。并不适用于在线学习这样一个多用户多访问量的平台。
(三)基于四层交换技术的负载均衡
第四层交换功能的实现,也就是我们经常提到的虚拟IP地址(VIP)方法,这个地址并不是与特定的计算机相连,也没有与计算机中的网络接口卡相连。它的实现过程是当数据包发送到这个VIP地址时,通过第四层交换功能,并根据设定算法分配到一个真实的网络接口。每次TCP请求都可以动态分配其中的一个IP地址,从而达到负载均衡。
(四)基于七层交换技术的负载均衡
第七层是web内容交换技术,即对访问流量的高层控制方式,通过对应用层内容的切换,将这种真正有意义的信息,结合我们对负载均衡设备的特定设置,进行服务器的选择。
对于在线学习平台这种大型网络来说,可以选择第四层交换技术的负载均衡,也可以选择第七层交换技术的负载均衡。但是考虑到为了不造成访问流量的停滞,第七层交换技术更具优势。在接收到数据包时,它会检查Http报头,根据报头内的数据来决定将信息发送给哪台服务器,同时根据报头提供的信息判断用何种方式为个人信息或者图像视频等不同格式的内容提供服务。换句话说, Http请求URL,但通过web内容交换技术,Http有可能请求到不同的服务器,即同一个URL请求对应了多个服务器,因为在Http发出请求时,并非建立了一个会话,而是通过负载均衡服务器建立了多个会话与真实的服务器连接。
二、LINUX集群负载均衡技术
在线学习系统所需要的负载均衡技术并不是简单地把用户请求平均分配给真实服务器,而是希望性能更好的服务器处理更多的请求,或者有的服务器请求较少可以申请到更多的服务请求,甚至有的服务器出现故障,可以不再接受请求直到恢复正常工作状态。在选用负载均衡算法时,要考虑各个服务器性能,较好的办法是我们可以给服务器分配权值,例如:服务器1性能较优,可以接受60%的用户请求,我们可以将它赋以权值6,服务器2性能次优,可以处理30%的用户请求,便赋以权值3,以此类推,这种方法可以有效地避免性能较差的服务器超负荷工作[5]。
与此同时,在考虑负载均衡时,还要考虑服务器响应速度(Response Time)和最少连接数的问题。第一,通过真实服务器对用户请求的响应速度,决定将用户的不同请求分配给相对应的响应时间最短的那台服务器,需要区别的是,这里所指的最快响应时间不是客户端和真实服务器之间的响应时间,而是负载均衡设备和真实服务器之间的响应时间。第二,在设备正常的运行过程中,用简单的轮询算法不能保证真正意义上的均衡,要了解服务器的真实工作情况,需要使用最小连接数算法(LeastConns),此算法记录服务器当前正在处理的进程数,当有新的用户请求时,用这种算法找出当前最小连接数的服务器并把请求分配给它,保证每一次的用户访问都是分配给目前进程数最少的服务器,真正实现动态的负载均衡,真正意义上满足用户的快速响应需求[6]。
在分析对比了以上四种负载均衡的方案之后,结合在线学习平台的特征,本文提出了基于Linux系统的负载均衡技术。Linux Virtual Server ( LVS )结构是以Linux操作系统为基础,实现了IP层的负载均衡调度技术,是操作系统核心层上的一个应用,当第四层接收到TCP/IP请求时,利用虚拟技术将请求均衡地分配到不同的服务器,解决某台服务器访问量过大而瘫痪的瓶颈问题,将一组服务器通过这种集群负载均衡调度技术变成一个易扩充、高性能的虚拟服务器,满足平台的用户需求。
LVS体系结构包括以下三部分:
(一)负载调度器。用户的请求先到达这里,通过它将请求发送到某一组服务器上,这个操作对用户来说是透明的,用户看到的是同一个IP地址,即虚拟IP地址,但物理地址不一定是同一个,调度器会采用IP负载均衡技术将请求一一分配,而负载均衡技术不仅要考虑服务器负载情况,还要考虑设定的调度算法,才能从服务器组中选出合适的一个服务器,将这个请求转到选择好的服务器,进行下一步的操作。
(二)服务器组。真实的一组服务设备,可提供的服务有多种,例如WEB、MAIL、FTP和DNS等。这组服务器的数量可以由实际情况做出变动,当整个平台的访问量超过目前所有服务器的负载能力时,可以随时购买新设备。
(三)共享存储。服务器组应该提供一个共享的存储区域,包含数据库和其他需要共享的网络文件系统。因为在线学习平台的数据一直在更新,需要数据库系统存储,而一些并非经常更新的数据可以存储在网络文件系统中。
三、 在线学习系统负载均衡的实现
在线学习系统为了解决大量学员同时在线学习的问题,通常是以集群的这种方式来搭建服务器,最经典的结构就是谷歌的搜索引擎,它由两部分组成,一是负责任务调度的前端节点,相对应的另一部分就是负责处理请求的后端节点。在虚拟化技术未实现之前,集群的模式就是物理服务器和集群节点是一对一的,是一种固定的模式,即物理节点数量的多少决定了集群承受的负载量。那么,在线学习的特点是,在特定的时间内访问量会很大,集群规模是静态的无法改变,在访问量达到峰值时,经常出现服务器超负荷运行,响应时间过长,而且有一部分节点却因为调度不均而空闲。因此我们将集群节点转移到虚拟机上,既大量节省了硬件成本,又可以大幅提升系统的伸缩性和自动调控的能力[7]。在LINUX虚拟化环境下,前端节点又由两部分组成,一是访问虚拟机层面,收到用户请求后拆分的进程和子进程,分布在虚拟机的内存和网络资源上,二是宿主机层,虚拟层对虚拟机的操作,体现在虚拟机的数量,以及所占用的各种硬件资源上。从虚拟机的角度来看,用户所产生的大量请求通过前端的网络层由前端节点各个发送到后端节点上,操作系统将请求转换,通过调度算法分配相应的硬件资源;从宿主层来说,只能感觉到随着用户访问量的增多,后端节点的数量和位置在不停地发生变化。由于传统的集群技术是固定模式,无法实时监控虚拟机的权限,也不能监控宿主主机,因此,负载均衡技术只能在虚拟机层得到较好的使用。
为了较好的实现负载均衡技术,虚拟层的后端节点有两种属性,一是节点类型,二是节点的负载值。节点类型有三种,一是空节点,即一台物理设备已经配置成功,但未部署成虚拟机,未启用;二是备用节点,即已经部署为虚拟机,但现在未使用,处于停机状态;三是活动节点,即该设备已经部署为虚拟机并在运行状态[8]。因此说空节点和备用节点目前都没有用户访问,而活动节点根据用户请求正在运行中。每个节点处理信息的能力也是有上限的,那么运行中的节点也有三种状态,包括适载、满载和超载。一个集群的规模取决于空节点、备用节点和活动节点的总数量,因为数量决定了此系统处理信息的最大值,活动节点表示当前集群处理访问量的能力,而空节点和备用节点可以预示集群的扩展能力。负载均衡技术就是将任务通过调度算法进行分发,调度算法仅限于活动节点中的适载节点和超载节点,因为满载节点的处理能力已达上限不能再接受新的进程,这就要求虚拟机层使用合适的转移和定位策略,使得在使用尽可能少的节点的前提下,满足用户最大量的并发访问[9]。
在线学习系统的搭建需要专用技术设备,包括路由器、核心交换机、负载均衡设备、web服务器、流媒体服务器和防火墙等。大型网络使用的高端机柜式交换机都提供第四层交换功能,为了更好地实现负载均衡,该系统使用了F5 BIG-IP LTM 3600设备。此设备支持基于TCP/IP协议的服务器负载均衡,对轮询、预测、散列、最快响应速度,以及最小连接数等方面性能优良。同时提供次秒级系统故障转移,实现主动发现错误并能及时处理服务器和软件运行错误。
在线学习系统的负载均衡主要通过双机设置结构,即两台F5通过双机配置,一个为主服务器,一个为备用服务器,当主机出现故障,系统会自动切换到备用服务器,用户正常访问该系统。同时,通过F5把服务器分为两部分功能池,WEB服务器组,流媒体服务器组,因为流媒体的课件较少,所以适当的减少服务器数量。这种负载均衡方式不仅能解决外部多链路的负载均衡问题,也能解决内部服务器访问量的负载均衡问题,其中包括图形化的图形监控模块,最主要也最直接的是解决了用户上线高峰时的访问量大的问题,也是在线学习系统在设计时提出的核心难题。
以下是在线学习系统三大块功能负载均衡的具体实现。
(一)运营商链路负载均衡和冗余:因在线学习用户多,网络环境不统一,系统接入总带宽为300M,通过用户数量的估算,网通和电信两个服务商的带宽比例为2:1。正常的操作情况下,对外部互联网访问流量进行负载均衡,当用户访问服务器时,平衡的连接两个操作,但如果一个链接突然中断,负载均衡技术会自动调整到另一个链接,使用户正常使用。链接复苏后,再自动添加到负载平衡。
(二)防火墙的负载均衡:正常情况下,两套防火墙流量保证是平衡的,但当出现黑客攻击或其他破坏因素时,一个防火墙故障,负载均衡技术会自动启用另一个防火墙,当防火墙排除故障后继续自动添加到负载平衡。
(三)服务器的负载均衡:在线学习系统采用根据服务器负载均衡的分配策略,合理分配用户流量,时刻保持会话。当其中一台服务器故障,系统设计的分配算法会自动将此服务器排除在外,自动切换到另一台正常运行的服务器,继续为用户服务,保证服务器的整体性能大幅提升。
四、 结语
随着网络技术的迅猛发展和World Wide Web的爆炸式普及,人们对网络信息资源的需求量日渐增多,尤其是终身教育的大浪潮下,许多人开始关注在线学习的网络平台,借助这种方便快捷的学习方式为自己充电。因此,在线学习系统用户数剧增,数据传输量大,那么,在学生学习时总会出现缓冲的界面,这都是由于服务器超负荷运行造成的。在线学习平台上,经常存在每秒数以千计的请求数,这要求我们的系统,使用软件技术,使多台服务器合作,实现每秒处理百万甚至更多的访问量来满足用户的需求。而负载均衡便是由对称的方式,由多个服务器形成特定的一组,其中每个服务器具备相同的数据处理能力,并能辅助提供请求的服务分离,而且不需要经过其他的服务器。
采用负载均衡技术后,较好地解决了网络拥塞问题,根据用户IP地址实现就近提供服务,大幅度提升了服务器的响应速度,从而避免了网络关键节点失效导致网络瘫痪的不良影响,进一步提高了服务器和课件资源的利用效率。总而言之, LINUX集群负载均衡技术的引入,能让多台服务器发挥自己最大的作用,共同承担在线学习这项复杂的任务, 用低成本达到了高效率,很大程度上提高了在线学习系统的安全性和可靠性。
[1]谢希仁.计算机网络[M].北京:电子工业出版社,2011.
[2]汪建球,张忠能.分布式Web 服务器中负载均衡的实现[J].计算机工程,2003(9).
[3]李双庆,游莲, 程代杰.基于内容的Web 集群系统负载均衡策略[J] .重庆大学学报,2003(5).
[4]孙延涛,吴志美,石志强.基于地址转发表的交换式以太网拓扑发现方法[J].软件学报,2006(12).
[5]周扬眉,李云,刘占军等.一种基于多径负载均衡的无线互联网Tcp拥塞控制策略[J].通信技术,2009(2).
[6]王彬.无线局域网中的负载均衡技术[J].中兴通讯技术,2006(3):12.
[7]刘胜楠,汪诗林.虚拟环境下Web服务动态负载均衡策略改进[J].计算机工程与科学,2015(9).
[8]刘建矿等.基于内存云架构的带宽负载均衡算法[J].计算机工程与设计,2015(11).
[9]魏亮,黄韬,陈建亚等.基于工作负载预测的虚拟机整合算法[J]. 电子与信息学报,2013(6).
Analysis and Implementation of Load Balancing Online Learning System
Ma Yanyan
(Shanxi TV University, Taiyuan, Shanxi, 030027)
Because of the large amount of data interaction and the server overload, and the network of online- learning platform congestion, it leads to a large extent restricted on the students' learning efficiency. The Linux Virtual Server (LVS) structure, which based on the Linux operating system, contracts three parts: the scheduler application load, the server group and shared storage that achieve the load balance, improve the data processing ability of the server in current learning system, accelerate the system response to the students, and greatly reduce the phenomenon of "response time".
load balancing; server; network
2015—10—15
马艳艳(1984—),女,山西临县人,山西广播电视大学,硕士。
G728
B
1008—8350(2016)01—0006—04