秦键铭
当今计算机技术已进入以网络为中心的计算时期。由于客户/服务器模型的简单性、易管理性和易维护性,客户/服务器计算模式在网络应用中被大量采用。但该模式在服务器端存在瓶颈问题。虽然LVS(Linux virtual server)的各种辅助工具的组合能完成ipvs的管理设置,后端服务器的keepalive(是否失效)检测,及简单的动态反馈负载均衡。但它们仍然存在一些问题,主要表现在以下几个方面:
(1)各个软件功能单一而分散,管理起来较为麻烦。
(2)由于收集的负载信息太少而不能有效的反馈后端各个服务器的真实负载情况。
(3)不能实时智能地控制后端各个真实服务器上服务的启动、停止。造成不必要的CPU、内存等资源的耗费。
针对以上问题,本文在linux平台上设计实现一个基于IPVS的动态反馈负载均衡系统,该系统通过实时检测后端应用服务器的负载、系统运行开销、健康状况等信息,实时地修改IPVS的前端调度器(“网络请求”分发器)的调度策略,并能融合服务器心跳检测,实现前端调度器的可用检测,真正实现网络服务的高可用、高效、高扩展性。
1 动态反馈负载均衡算法分析
在负载均衡集群中,调度器(load balancer)的最终目的是把网络请求合理有效地分配到后端真实服务器(realserver)中。为了提高负载均衡集群的服务性能,本文提出基于IPVS的动态反馈负载均衡系统,它由master(在调度器上启动)和agent(在真实服务器中启动)组成。该系统通过agent实时地收集后端真实服务器的负载信息,重新计算各服务器权值并及时更新负载调度器上的权值表(weight),在IPVS选择合理的负载调度算法,使后端的真实服务器负载尽可能的均衡,从而整个负载均衡集群的性能达到较好状态。
当调度器收到一个新的连接请求的SYN包时,它必须决定该请求发送到哪一个真实服务器,因此,需要用到请求调度算法。当前,IPVS实现了八种调度算法,而所有调度算法都需要得到各真实服务器的权值参数,因此,如何实时计算权值,更新调度器的权值表成为本系统实现关键。本系统的计算方法是通过真实服务器实时反馈回来的一組输入指标和服务器指标计算各服务器综合负载,再根据综合负载计算权值,更新调度器上的权值表。
在计算综合负载时,主要使用两大类负载信息:输入指标和服务器指标。输入指标是在调度器上收集到的,而服务器指标是在服务器上的各种负载信息。综合负载可用来反映服务器当前的较确切的负载情况,对于不同的应用,会有不同的负载情况,而通过引入各个负载信息的系数,来表示各个负载信息在综合负载中轻重。系统管理员根据不同应用的需求,调整各个负载信息的系数。另外,系统管理员设置收集负载信息的时间间隔。
2 系统设计
系统由两大模块组成,master和agent,其中master存在于分发器上,主要用于查询各个后端的应用服务器(称realserver)的健康状况(Keepalive)及负载(Load)情况,并对IPVS进行有效监控;agent存在于各个后端的realserver服务器上,用于收集、计算其自身的负载情况,回应master的健康检测、负载情况等的查询请求,并能根据master发过来的指令智能控制其上各个应用服务的启动、停止等。
2.1 系统总体分析
本文动态反馈负载均衡系统LVS系统结构采用VS/TUN或VS/DR方式,分发器(调度器)接收到客户端的连接请求后,通过动态反馈负载均衡调度策略把请求送往后端真实服务器(realserver),由真实服务器作出回应,直接返回给客户端。
2.2 master设计
本文设计的master将在主备调度器上运行,它有三个主要功能:
(1)实现用户与应用系统的交互。
(2)收集agent传过来的各真实服务器负载信息,并计算出其相应权值,更新调度器的权值表。
(3)根据用户要求及权值表信息实时监控IPVS运行状况,实现动态反馈负载均衡。
2.3 agent 设计
本文设计的master将在主备调度器上运行,它有三个主要功能:
(1)实现用户与所在服务器agent的交互。
(2)收集agent所在服务器负载信息,并传送至Master。
(3)实时智能地控制服务的启动停止,保证集群的高效高可用性。
3 实验分析
从初步测试结果来看,使用本文系统可以一定程度上改善集群的反应速度及错误发生率,达到较好的负载均衡效果,并具有较完善的集群综合管理能力。两个服务器节点的web集群(负载参数主要为CPU利用率)分别在负载本身均衡、初始非均衡并且不带负载均衡、初始非均衡且带动态反馈负载均衡三种情况下,连接响应性能的比较,在负载为非饱和状态时,带动态反馈比不带动态反馈负载均衡性能好,且几乎能在最佳状态下运行(接近负载本身均衡下的性能),当负载接收饱和甚至超负荷工作时,动态反馈负载均衡不可能使系统达到均衡。
4 结论
本文在研究Linux下负载均衡集群基础上,设计了一个基于IPVS的动态反馈负载均衡集群系统,该系统通过Agent实时获取后端服务器负载及健康状态,进而调整IPVS的调度策略,使负载均衡集群实现高效、高可用性。
参考文献:
[1]章文嵩,LVS集群的负载调度. IBM developerWorks,2002.5