APP下载

基于Nginx服务器集群负载均衡方案的研究和改进

2017-02-17广东工业大学自动化学院汪文君

电子世界 2017年2期
关键词:网络带宽轮询异构

广东工业大学自动化学院 汪文君

基于Nginx服务器集群负载均衡方案的研究和改进

广东工业大学自动化学院 汪文君

现实应用中,某些负载均衡器的负载均衡分配策略的不足,往往会带来系统吞吐量、资源利用率、响应请求时间无法满足需求。通过分析和研究Nginx内置负载均衡算法,提出了一种动态自适应负载均衡算法。通过性能测试实验结果表明,本文提出的算法能够提高集群整体性能。

Nginx;负载均衡;模糊集理论;指数平滑

1 引言

随着互联网的普及和快速发展,用户访问的剧增对各大互联网服务商带来了严峻的挑战。服务器集群技术和负载均衡分配策略的出现极大的解决了这些问题。负载均衡技术通过相应的分发策略[1]将用户的请求均衡的分配给集群中的服务器处理。

负载均衡的实现方式主要有软件和硬件两种。硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,具有独立于操作系统,负载均衡策略多样化、流量管理智能化的特点,可提升整体性能和满足负载均衡需求。目前市面上的此类产品主要有F5 BIG-IP、AD和思科系列等。软件负载均衡通过在服务器上的附加软件来实现负载均衡,具有基于特定环境、配置简单、使用灵活,成本低廉的特点,主要有LVS、Nginx和HAProxy等。

负载均衡算法研究经历了静态算法、动态算法到自适应算法的发展历程。目前常用的有static、hash、consistent hash、round robin、CARP等算法。这些算法易于实现但是在复杂和异构环境下往往表现不佳。为了提升负载均衡效果研究人员提出了节点性能和负载情况耦合加权算法、遗传模拟退火算法、模糊集理论,热力学熵,多元回归分析等算法。通过实验测试,这些算法确实能够更好的发挥节点的性能。但分别存在滞后性、没有考虑异构系统和故障检测恢复等情况。本文在Nginx的加权轮询算法和加权最小连接数算法的基础上提出一种新的负载均衡算法。该算法考虑各节点异构和负载情况,根据上游节点在处理不同请求内容的性能差异性,自适应的调整节点负载能力。

图1 加权轮询算法流程图

2 Nginx负载均衡算法研究

2.1 加权轮询算法

加权轮询算法是Nginx服务器缺省的负载均衡算法。不同于早期的加权轮询算法,现在采用的是一种平滑的加权轮询算法。相对于早期的轮询算法,现在采用的轮询算法能够较好的平滑上游服务器节点的负载。由于它一种开环控制模型,考虑到客户端请求处理时间的不同以及节点权值的预设是一种经验处理,所以它依然不能很好的均衡上游节点的负载。算法的流程图见图1。

2.2 加权最小连接数算法

最小连接调度算法考虑到上游服务器节点的动态平衡性,却不能给异构服务器集群提供更优的服务。加权最小连接数算法(WLC)的节点选取公式:

它的实现主体代码如下:

在出现多个上游节点S1值相同时,采用加权轮询算法做二次处理。加权最小连接算法考虑到了上游集群的异构情况,又能动态的反映节点的负载状态,因此得到了广泛的应用。和加权轮询算法相似它的节点权重依赖经验设定,同时仅仅只参考了连接数而忽略了cpu、I/O利用率,所以不能很好的均衡上游节点的负载。

3 动态自适应负载均衡算法

动态负载均衡策略算法策略:

加权最小连接数算法只考虑连接数不能很好的反映上游服务器资源使用情况。研究人员引入了其它负载向量来标记节点资源使用。常见的静态向量有:CPU、磁盘I/O、内存、网络带宽性能。用Si表示第i个节点。C(Si)、M(Si)、D(Si)、N(Si)分别表示i节点的CPU、I/O、内存、网络带宽的性能,KC、KM、KD、KN表示节点向量占负载总向量的比重且KC+KM+KD+KN=1,T为可调常数,分别表示i节点的CPU、I/O、内存、网络带宽和连接数的性能占比率。它的计算公式如(2)、(3)、(4)、(5):

W(Si)表示每个节点的缺省权值,它的计算公式:

动态负载向量包括:CPU、I/O、内存、网络带宽使用率。WL(Si)表示节点权重消耗量,分别表示节点CPU、I/O、内存、网络带宽实时使用率。则消耗的权重有公式(8):

Nginx内置的负载均衡算法并未考虑不同网络应用的连接对服务器负载的影响。考虑到集群节点异构的现状存在,因此对不同请求内容的区别对待将作为本文算法考量的一个基准。负载均衡模块收到用户的请求并分析其请求内容,针对不同的请求采用不同的分发策略。我们对请求内容的分析划分有四种类型:

表1 请求内容综述

针对某种资源使用超过一定值系统的处理能力显著下降,引入模糊集理论的乘积平均值法来处理这些问题。T(Si)表示为节点i的缺省权值, WC(Si)表示当前权值,公式如下:

再此KC、KM、KD、KN可不再满足和为1的限制,在某个时间片内可依据请求内容的不同适当的调整这四个可变参数。

自适应估计模型

模糊集理论的乘积平均值法可以一定程度的提高异构集群在处理不同业务的能力,但是KC、KM、KD、KN的参数设定仍然需要一个合理的自适应估计模型。本文引入指数平滑算法做短期预测,指数平滑算法模型公式为:

在负载均衡模块维护一个FIFO,将请求内容的四种类型分别量化为二维矢量(1,0)、(-1,0)、(0,1)、(0,-1),根据请求的类别将矢量加入FIFO。将FIFO切割成若干等分的序列组,每个序列组二维求和得到yt单元,根据指数平滑算法得到平滑值St。平滑值即是趋势的预测,它位于坐标系的四区内。

图2 趋势分布图

对KC、KM、KD、KN四个参数我们给定一个初值t。每次更新权值会给予这些系数一个不大于1-t的激励。Kx、Ky的对应关系见表2:

表2 Kx、Ky对应关系

4 测试结果与结论

本文通过Httperf 和 Autobench 对系统进行性能测试, Httperf 不能自动增加 HTTP 负载且产生的测试数据以文字的形式呈现,而 Autobench 是基于 Httperf 的开发的 perf 脚本,通过设置并发连接数增长的步长可以—次实现多轮的Httperf测试。

在本实验分别对 Nginx 内置加权轮询算法(WRR)、加权最小连接数算法(WLC)以及本论文所提出的负载均衡算法(DDWRR)进行测试,统计各算法下的的平均响应时间以及并发连接数。

图3 测试环境示意图

对三种负载均衡算法请求响应时间和实际并发连接数的测试数据如下所示:

表3 三种算法实际并发连接数

表4 三种算法响应时间(ms)

图4 三种算法的实际并发测试比对

图5 三种算法响应时间测试比对

通过实验测试结果表明,随着连接数的增加DDWRR算法在实际连接数和响应时间上较之其他两种算法更加稳定,证明了本文提出的负载均衡算法能一定程度的提升服务器集群性能,是有效可行的。

[1]中国互联网络信息中心——中国互联网络发展状况统计报告[EB/OL].2012-01-16.

[2]朱振广.面向内容分发网络的动态负载均衡技术研究[D].哈尔滨:哈尔滨工业大学,2010.

[3]兰翔.基于Nginx的负载均衡技术的研究与改进[D].广州:华南理工大学软件学院,2011.

[4]胡利军.Web集群服务器的负载均衡和性能优化[D].北京:北京邮电大学,2010.

[5]江南烟雨.Nginx学习之六——nginx核心进程模型[EB/ OL].2013.

[6]王辉,李晋光.异构网络负载均衡算法[J].工业仪表与自动化装,2014.

[7]陶辉.深入理解nginx:模块开发与架构解析[M].北京:机械工业出版社,2013,3.

[8]A.Yousofi,M.Banitaba,S.Yazdanpanah.A Novel Method for Achieving Load Balancing in Web Clusters Based on Congestion Control and Cost Reduction[J].IEEE Symposium on Computers&inf ormatics,2011:374-378.

表1 knn算法和kmeans指纹定位法定位数据

实验结果表明k-means指纹算法能在一定程度上提高定位精度并缩短定位时间。

参考文献

[1]刘成.LBS定位技术研究与发展现状[J].导航定位学报,2013,01: 78-83.

[2]Roba Abbas,Katina Michael,MG Michael.The regulatory considerations and ethical dilemmas of location-based services(LBS):A literature review[J].Information Technology & People,2014,271.

[3]顾聪,陈益强,刘军发,周经野.基于Android平台的室内LBS系统设计与实现[J].计算机工程与设计,2012,01:396-401.

[4]赵锐,钟榜,朱祖礼,马乐,姚金飞.室内定位技术及应用综述[J].电子科技,2014,03:154-157.

[5]王沁,何杰,张前雄,刘冰峰,于彦伟.测距误差分级的室内TOA定位算法[J].仪器仪表学报,2011,12:2851-2856.

[6]王敬东,贲伟,王子瑞,马骏.基于ZigBee技术的TDOA定位系统设计[J].测控技术,2013,03:74-79.

[7]王琦.基于RSSI测距的室内定位技术[J].电子科技,2012,06: 64-66+78.

[8]Chien-Sheng Chen,Yi-Jen Chiu,Jium-Ming Lin.Hybrid TOA/ AOA Schemes for Mobile Location In Cellular Communications Systems[J].International Journal of Ad Hoc,Sensor & Ubiquitous Computing,2010,12.

[9]李伟丹,郝秀娟,胡应添.指纹定位方法研究[J].移动通信,2016,11:60-63+72.

[10]李娟娟,张金艺,张秉煜,周荣俊,唐夏.蓝牙4.0标准规范下的模糊指纹定位算法[J].上海大学学报(自然科学版),2013,02:126-131.

汪文君(1989—),男,安徽安庆人,硕士研究生,主要研究方向:计算机网络与信息处理,并行计算。

猜你喜欢

网络带宽轮询异构
试论同课异构之“同”与“异”
基于等概率的ASON业务授权设计∗
如何提升高带宽用户的感知度
异构醇醚在超浓缩洗衣液中的应用探索
overlay SDN实现异构兼容的关键技术
合理配置QoS改善校园网络环境
浅析泰州电视台超大型高清非编网建设
经典路由协议在战场环境下的仿真与评测
LTE异构网技术与组网研究
依托站点状态的两级轮询控制系统时延特性分析