APP下载

LVS集群负载调度机制的研究

2011-10-17王雪莲郑晓薇刘青昆

中国科技信息 2011年5期
关键词:权值集群调度

王雪莲 郑晓薇 刘青昆

1内蒙古师范大学公共管理学院 呼和浩特 010022

2辽宁师范大学计算机与信息技术学院 大连 116029

LVS集群负载调度机制的研究

王雪莲1郑晓薇2刘青昆2

1内蒙古师范大学公共管理学院 呼和浩特 010022

2辽宁师范大学计算机与信息技术学院 大连 116029

实现一个高效集群系统需要解决的关键问题之一是负载均衡,目前很多负载均衡项目是基于LVS开发的。本文就负载均衡集群LVS的体系结构、负载均衡技术和负载调度算法做了介绍,分析了原有调度算法存在的不足,提出并构建了带反馈的集群负载动态调度机制,提高了集群的整体效率。

LVS;负载;调度;动态权值

1 引言

随着网络快速发展和网络用户日益增加,单台服务器难以满足大量用户的需求,而集群的出现缓解了这一问题。集群系统具有可伸缩性、高性价比、高可用性的特点,因此得到了广泛的应用[1]。而负载均衡是集群性能提高的关键因素之一,具有较高的研究价值和应用前景。

论文在异构集群服务器的环境下,对较为典型的负载均衡集群LVS的负载调度机制进行相关研究,对其进行改进,提出并构建了带反馈的集群负载动态调度机制,提高了集群的整体效率。

2 LVS概述

LVS(Linux Virtual Server)全称虚拟服务器,LVS集群由国防科技大学章文嵩博士研发的,主要解决的是集群的负载均衡。LVS在两个层次上实现了负载均衡,分别是基于IP层的IPVS和基于应用层的KTCPVS内容请求分发的均衡技术,此处主要讨论基于IP层上的负载均衡。

2.1 体系结构

LVS集群体系结构一般采用三层结构,由前端调度器层、中间服务器集群层和后端存储系统层组成[2]。调度器是整个集群的前端机,是集群的唯一入口。当有客户请求时,首先要经过调度器,它根据调度算法负责将客户请求分配到服务器集群中的某一台,是分配服务器的决策者。客户认为服务是来自一个集群IP地址,即所谓的虚拟IP,集群内部对客户来说是透明的。该集群中某一台执行完请求后将数据返回给客户。多个服务器结构缓减了集群的负载,体现了集群的可伸缩性。后端存储系统为服务器集群提供相同的服务,使得服务器集群有相同的内容。

2.2 基于IP层的负载均衡技术

LVS在IP层实现了 3种方式的负载均衡技术:网络地址转换、IP隧道模式、直接路由[3]。

(1)网络地址转换(Network Address Translation,简称NAT)。核心思想是用地址翻译实现虚拟服务。客户通过虚拟IP访问集群时,请求包先到达调度器,然后调度器根据调度算法从真实服务器组中选择一台目标服务器,同时将请求包中的虚拟IP转换为目标服务器的IP,并将包中的目标端口转换为目标服务器的相应端口,转发给目标真实服务器。该真实服务器响应请求后,在应答客户时,调度器将应答包中的真实服务器中的IP、源端口转换为虚拟服务器的IP源地址和端口,并将应答包发给客户。

(2)IP隧道模式(IP Tunneling,简称TUN)。在LVS中利用IP隧道技术将请求包封装转发给后端服务器,响应包从服务器直接返回给客户。IP隧道的模式是将原有的IP包封装在另一个IP包的技术,其中隧道都是静态建立的。由于LVS后端有多个服务器,不可能静态地建立一一对应的隧道,依据IP隧道协议,调度器根据调度算法动态选择一个服务器,将请求包封装并转发给目标服务器,该服务器收到后解析出原来的目标地址VIP的包。由于服务器发现VIP地址被配置在本地的IP隧道设备上,因此处理该请求,再根据路由表将响应包直接返回给客户。

(3)直接路由(Direct Routing,简称DR)。和IP隧道相似之处是请求和响应仍然分开处理。调度器通过将MAC地址改为选出服务器的MAC地址,处理客户到服务器端的连接。当调度器收到客户请求包时,根据调度算法动态选择一台目标服务器,不修改也不封装IP报文,而将包含目标MAC地址改为目标服务器的MAC地址后转发出去。当服务器发现包中的目标VIP是本地的网络设备,服务器处理该包,并根据路由表将响应包直接返回给客户。

2.3 调度算法

在调度器上操作系统的内核层IPVS调度模块有十种调度算法,其中常用的四种调度算法:轮转法(RR)、加权轮转(WRR)、最小连接(LC)、加权最小连接(WLC)[4]。

轮转调度算法(Round-Robin,简称RR),以轮转的方式依次将请求分配到不同的服务器上。

加权轮转调度算法(Weighted Round-Robin,简称WRR),根据权值的高低顺序按照轮转的方式将任务求分配到各个节点。

最小连接调度算法(Least-Connection,简称LC),把新请求分配到当前连接数最小的服务器。

加权最小连接调度算法(Weighted Least-Connection,简称WLC),Ci表示服务器i的当前连接数 (i=0,1, … ,n-1),Wi为服务器的权值,将请求分配给所有服务器中集合{Ci/Wi}最小的服务器。

2.4 LVS存在的不足

在LVS常用的四种调度算法中,其中RR、LC 都没有考虑服务器间处理能力差异,当各节点任务执行时间差别较大时,易造成节点失衡,导致集群效率下降。RR算法没有反映服务器运行时的状态,LC算法连接数不能准确反映当前负载。WLC、WRR算法都是基于有性能差异的服务器,WRR和RR类似都没有反映服务器当前状态,属于静态调度。WLC和LC相似之处是把连接数作为当前服务器负载状况,属于简单的动态调度,但没有反馈机制,没有实现真正的动态调度,负载均衡效果不理想。相比较而言,上述四种算法中WLC是最占优势的,但是由于LVS调度机制的局限性,该算法也存在不足。反映在以下几点:(1)用单一的连接数反映当前负载,没有考虑当前服务器的其他使用资源和网络情况。因为不同的连接完成任务所消耗网络流量和服务器资源是不同的,所以单一的连接数并不能准确地反映当前节点负载,还应该考虑其他负载信息。(2)服务器的权值问题。权值是反映服务器处理能力的一个量化指标,管理员设定权值并不能准确的反映各个服务器间处理能力的差异;而且随着负载的增加各个服务器的处理能力并没有改变,易造成节点失衡。当负载的增加超过服务器的剩余处理能力,服务器还不断接受请求,这样势必导致服务器瘫痪。但该算法没有考虑服务器的剩余处理能力和过载的情况。(3)对服务器的健康状态考虑不足。当某个服务器在运行中出现故障时,仍然分配任务给服务器,而没有自动去探测服务器是否失效,造成了不必要的系统开销。针对上述问题,构建了带反馈的LVS集群负载动态调度机制:调度器监控服务器的负载和剩余处理能力,以便提高集群的性能。

3 带反馈的负载动态调度机制

带反馈的LVS集群负载动态调度机制需要解决好下面几个关键问题:一是构造负载均衡模型,二是性能指标和负载指标的确定,三是动态权值的计算。

3.1 负载均衡模型

图2.1 带反馈的负载动态调度机制模型

负载均衡模型是基于Linux的LVS集群,负载均衡技术采用直接路由,通过实时监控服务器负载,并且获得当前节点的动态剩余处理能力,用动态权值表示节点剩余处理能力,随着负载增大权值在减小,负载与权值成反比,能及时发现服务器失效。

在调度器上运行负载均衡调度模块、接收模块和探测宕机模块。接收模块负责监听服务器端连接,被动接收各服务器负载信息和动态权值;探测宕机模块周期性地主动探测服务器是否有效,当某个服务器发生意外故障时,更新服务器表,把权值设置为0,即节点置为不可用。调度模块根据动态反馈负载的调度算法WLC负责将客户请求分配到服务器集群中的某一台。服务器节点上运行发送模块,将本地节点监控信息经过计算获得当前节点负载,进一步计算获得动态权值,如果节点过载,则设定节点不可用,将节点信息不是周期性而是自适应传送给调度器,实现了动态权值,最终构成了一个带反馈的LVS集群负载动态调度机制,调度器上WLC算法可以根据反馈动态权值实现任务动态调度。

该模型采用集中式控制的二级模型,由后台服务器间接控制调度器,即决策节点是否可用由后台服务器决定而不必由调度器来控制。采用集中式为了便于节点的管理,将部分任务分给后台服务器,减轻了调度器负担,提高了调度器分配效率。带反馈的负载动态调度机制模型如图2.1。

3.2 性能指标和负载指标

在构建的带反馈的LVS集群负载动态调度机制中,由于各个服务器的固有硬件性能不同,即是硬件异构的集群,因此要考虑服务器间处理能力的性能差异,选取关键的CPU主频、内存容量、网络带宽性能指标来表示硬件性能。

影响负载的因素有很多,选取关键的负载指标对负载调度算法很重要。通过实验表明,对于高可用集群系统,使用资源利用率作为负载指标的负载平衡系统在性能上优于使用队列长度作为负载指标的系统[5]。为此优先使用资源利用率作为负载指标,因此调度算法中负载指标选择了与上述性能指标相对应的服务器关键资源的利用率:CPU利用率、内存利用率、网络带宽利用率。另一方面,由于服务器接受客户请求时要增加连接数,所以服务器当前连接数也能体现当前部分负载。将上述CPU、内存、网络带宽利用率、连接数作为负载指标综合考虑来反映当前服务器负载。响应时间是集群性能的关键指标,很多研究者将其作为负载指标,但是当用户增多网络繁忙的时候获取响应时间势必增大了网络开销,造成网络堵塞,本文没有把响应时间作为负载指标是为了尽量在本地获取负载指标而减少需要的网络开销。

3.3 服务器负载和动态权值

在集群服务器上运行发送模块,该模块通过后台守护进程udpforksend实现节点信息的获取,守护进程udpforksend定义一个结构体变量nodeinfo表示节点信息,含有负载指标、当前负载、节点ID号、动态权值。

节点启动后初始化各节点处理性能参数:CPU主频、内存容量、网络带宽。

获得上述节点性能指标后,通过公式(1)计算出节点综合处理能力Ci:

其中Rcpu、Rmem、Rnet为比例系数,表示各项指标的重要程度,Rcpu+Rmem+Rnet=1;Ccpu、Cmem、Cnet分别表示CPU、内存、网络带宽的处理性能。通过获得综合处理能力Ci来反映该节点的固有硬件处理能力。

获取负载指标后,节点当前负载值可由公式(2)获得:

LOADi= Rcpu*Lcpu+Rmem*Lmem+Rnet*Lnet ;(2)

其中Lcpu、Lmem、Lnet分别表示CPU利用率、内存利用率、网络利用率。

再根据公式(1)得到的Ci,由公式(3)获得节点当前动态权值:

4 结束语

本文就LVS集群的体系结构、负载均衡技术和负载调度算法做了介绍,分析了原有调度算法存在的不足,提出并构建了带反馈的集群负载动态调度机制,提高了集群的整体效率。

[1]朱璇,郑纬民,汪东升,杨广文.单一系统映象在机群管理中的实现.计算机工程与应用.2002

[2]黄曦.Web服务器集群负载均衡技术的应用研究[D].硕士学位论文.重庆大学.2004

[3]章文嵩.http://www.linuxvirtualserver.org/

[4]王霜,修保新,肖卫东.Web服务器集群的负载均衡算法研究[J].计算机工程与应用.2004,40(25):78-80

[5]鞠九滨等.机群计算[M].长春:吉林大学出版社.1999

10.3969/j.issn.1001-8972.2011.005.011

猜你喜欢

权值集群调度
一种融合时间权值和用户行为序列的电影推荐模型
CONTENTS
《调度集中系统(CTC)/列车调度指挥系统(TDCS)维护手册》正式出版
电力调度自动化中UPS电源的应用探讨
基于强化学习的时间触发通信调度方法
一种基于负载均衡的Kubernetes调度改进算法
海上小型无人机集群的反制装备需求与应对之策研究
基于MATLAB的LTE智能天线广播波束仿真与权值优化
一种无人机集群发射回收装置的控制系统设计
Python与Spark集群在收费数据分析中的应用