基于Nginx动态加权的Web集群负载均衡方法及系统转让专利
申请号 : CN202010883575.8
文献号 : CN112019620B
文献日 : 2021-12-28
发明人 : 盛宇轩 , 王斌 , 郝鹏飞
申请人 : 中南大学
摘要 :
权利要求 :
1.一种基于Nginx动态加权的Web集群负载均衡方法,其特征在于,包括以下步骤:获取待处理的用户请求和Web集群中各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数;
将所述用户请求量化成以CPU、内存、网络带宽、IO为维度的属性参数;
根据所述属性参数和各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数计算得到各个后端服务器的权值;
将所述用户请求转发至权值最大的后端服务器上处理;
还包括以下步骤:
在所述Web集群每处理完一次用户请求后,采集处理所述用户请求后端服务器以CPU、内存、网络带宽、IO为维度的资源使用数据,并实时统计采集次数,当采集次数达到预设次数后,使用PDSA‑DBSCAN算法对采集到的所有资源使用数据以CPU、内存、网络带宽、IO为维度进行聚类,得到多个类簇;
分别计算多个类簇在CPU、内存、网络带宽、IO维度的平均值和标准差,对于每一种维度的平均值和标准差进行以下处理:
将多个类簇的平均值与其类簇对应的平均阈值进行比较,将多个类簇的标准差分别与其类簇对应的标准阈值进行比较,根据比较结果判断所述Web集群的后端服务器是否能继续负载该维度的用户请求,当判断所述Web集群的后端服务器不能继续覆盖该维度的用户请求,则控制所述Web集群的后端服务器不再参与竞争负载该维度的用户请求;
使用PDSA‑DBSCAN算法对采集到的所有资源使用数据以CPU、内存、网络带宽、IO为维度进行聚类,包括以下步骤:
使用采集到的所有资源使用数据构建距离分布矩阵;
记DISTi×k为所述距离分布矩阵排序后的第i距离对象与最近的第k个对象的距离,对k取不同大小的值,并通过以下公式分别计算不同大小的k值对应的Epsk值:其中, 为所述距离分布矩阵中所有距离对象与最近的第k个对象的距离的数学期望值;
对于每个不同大小的k值对应的Epsk值:计算所述距离分布矩阵的每个对象在所述Epsk范围内的其他对象个数的均值,并取均值向上取整的数作为所述Epsk值的Minpts值;
分别使用多个不同的Epsk值及对应的Minpts值对采集的所有资源使用数据进行聚类,以得到多个不同k值对应的类簇数与噪点数;
通过多个不同k值及其对应的类簇数拟合类簇数–k的关系曲线,通过多个不同k值及其对应的噪点数拟合噪点数–k的关系曲线;分析所述类簇数–k的关系曲线和噪点数–k的关系曲线的稳定区域,并在所述稳定区域内寻找所述类簇数–k的关系曲线与所述噪点数–k的关系曲线的第一个相交点,并将所述第一个相交点处的k值所对应的Epsk值作为所述PDSA‑DBSCAN算法的最优Eps值,并使用所述最优Eps值及其对应的Minpts值对采集到的资源使用数据进行聚类,得到多个类簇;
分析所述类簇数–k的关系曲线和噪点数–k的关系曲线的稳定区域,包括以下步骤:找寻所述类簇数–k的关系曲线的峰值和谷值,并将所述峰值对应的类簇数和谷值对应的类簇数的进行减法运算,得到所述类簇数–k的关系曲线的第一谷峰差值,将所述第一谷峰差值的10%作为所述类簇数–k的关系曲线的M值,并将k值相邻的类簇数进行差分运算,得到第一差分值,得到diff_cluster数据集;
找寻噪声数‑k的关系曲线的峰值和谷值,并将所述峰值对应的噪声数和谷值对应的噪声数的进行减法运算,得到所述噪声数–k的关系曲线的第二谷峰差值,将所述第二谷峰差值的10%作为所述噪声数–k的关系曲线的M值,并将k值相邻的噪声数进行差分运算,得到第二差分值,得到diff_noise数据集;
观测所述类簇数–k的关系曲线和所述噪声数–k的关系曲线上是否存在同一区间,且所述同一区间内的所有k值所对应的第一差分值和第二差分值是否均不大于M值向上取整的数值,所述同一区间前后的相邻区间是否存在第一差分值或第二差分值大于2M;若所述类簇数–k的关系曲线和所述噪声数–k的关系曲线上存在同一区间,且所述同一区间内的所有k值所对应的第一差分值和第二差分值均不大于M值向上取整的数值,所述同一区间在后的相邻区间存在第一差分值或第二差分值大于2M,则判断所述同一区间为稳定区域;
根据比较结果判断所述Web集群是否能继续负载该维度的用户请求,包括以下步骤:当所述类簇的平均值未超出对应的平均阈值,且所述标准差未超出对应的标准阈值时,判断所述类簇内的服务器能够继续负载对应维度的用户请求;
当所述类簇的平均值超出对应的平均阈值或所述标准差超出对应的标准阈值时,判断所述类簇内的服务器不能继续负载对应维度的用户请求;
统计各个类簇中不能继续负载的类簇个数,判断不能继续负载的类簇个数是否超过类簇总个数的一半,当不能继续负载的类簇个数超过类簇总个数的一半,判断所述Web集群中各个后端服务器不能继续负载用户此类资源类型的请求,当所述不能继续负载的类簇个数未超过类簇总个数的一半,判断所述Web集群中各个后端服务器能继续负载用户此类资源类型的请求。
2.根据权利要求1所述的基于Nginx动态加权的Web集群负载均衡方法,其特征在于,计算所述用户请求以CPU、内存、网络带宽、IO为维度的属性数据,包括以下步骤:计算处理所述用户请求所需的CPU量、内存量、网络带宽量、IO量;
基于所述CPU量、内存量、网络带宽量、IO量,并通过加权算法计算用户请求的比重向量g=[g1,g2,g3,g4],其中,g1+g2+g3+g4=1,0≤gi≤1,i∈[1,4],其中,g1、g2、g3,以及g4分别表示CPU量、内存量、网络带宽量以及IO量的比重,基于所述比重向量将用户请求转化为属性数据r=[C,M,N,IO]*g,其中C、M、N与IO均为单位为1的方向向量,分别表示CPU量、内存量、网络带宽量以及IO量的方向向量。
3.根据权利要求2所述的基于Nginx动态加权的Web集群负载均衡方法,其特征在于,根据所述属性数据和各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能计算得到各个后端服务器的权值,通过以下公式得到:其中,effect_weighti表示第i个后端服务器的初始权值,pi=[pi1,pi2,pi3,pi4],并且满足0≤pij≤1,j∈[1,4],其中,其中,pi1、pi2、pi3,以及pi4均为所述第i个后端服务器的剩余性能参数,分别表示第i个后端服务器的剩余CPU量、剩余内存量、剩余网络带宽量以及剩余IO量的比重。
4.根据权利要求3所述的基于Nginx动态加权的Web集群负载均衡方法,其特征在于,将所述用户请求转发至权值最大的后端服务器的过程中,还包括以下步骤:实时监控所述后端服务器的实际剩余性能,并通过映射函数计算所述后端服务器的剩余性能,并根据所述剩余性能更新所述后端服务器的权值;
其中,所述后端服务器剩余性能中剩余内存量的映射函数为:所述后端服务器剩余性能中CPU、IO以及网络带宽剩余量的映射函数为:
5 4 3 2
y=14.423x‑36.058x+28.705x‑6.9996x+0.9325x‑0.0016;
其中,x为所述后端服务器的实际剩余性能;y为所述后端服务器输出的剩余性能,其中,在同一公式内,x、y分别表示同一维度的实际剩余性能以及对应的输出的剩余性能。
5.根据权利要求4所述的基于Nginx动态加权的Web集群负载均衡方法,其特征在于,分别计算多个类簇在CPU、内存、网络带宽、IO维度的平均值和标准差通过以下公式计算:其中,μij表示第i个类簇的第j个服务器的资源使用数据的平均值,σij表示第i个类簇的第j个服务器的资源使用数据的标准差,xij表示第i个类簇的第j个服务器的资源使用数据,N表示整个数据集中对象的个数。
6.一种计算机系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,处理器执行计算机程序时实现上述权利要求1至5任一方法的步骤。
说明书 :
基于Nginx动态加权的Web集群负载均衡方法及系统
技术领域
背景技术
构与负载均衡技术突显出其重要的位置。对于Web(World Wide Web,全球广域网)集群系
统,负载均衡的好坏将直接影响到用户对互联网产品的体验。
强大的服务器在工作。在集群工作环境中,任何一台机器发生故障,用户请求立即分发到其
它服务器上,因此支撑系统运行的服务不会停止。集群中负载均衡技术,在一定程度上保证
用户高并发请求访问的操作,集群内部可根据访问量级的大小,动态调整后端服务器的数
量,因此在用户访问的高并发数量下,保证了系统业务的正常运行。在Web集群中,负载均衡
的好坏直接影响到Web系统的性能。
统工作效率与计算资源利用率,保证后端服务器的可靠性与稳定性,然而现有的动态类型
的负载均衡方法在分配权重时往往只会考虑综合考量后端服务器本身的实时剩余性能(即
综合考量后端服务器的剩余IO(Input/Output,输入/输出)、内存、网络带宽以及CPU
(central processing unit,中央处理器),而忽略用户请求本身属性对后端服务器的需
求,导致综合计算出来的权重大的后端服务器可能并不适用于处理该用户请求的问题,如
存在一个内存剩余20、网络带宽剩余80、IO剩余80以及CPU剩余80的后端服务器,与一个内
存剩余30、网络带宽剩余30、IO剩余40以及CPU剩余40的后端服务器,当一个内存需求25、网
络带宽需求25、IO需求25以及CPU需求25的用户请求发送给均衡负载节点时,根据现有的均
衡负载方法(设内存权重为0.3、网络带宽权重0.3、IO权重0.3、CPU权重0.4)计算分配服务
器时,肯定会选用综合权值比较大的第一个后端服务器,然而第一后端服务器由于内存的
限制,并不能完全满足该用户请求,就会导致第一个后端服务器内存负载压力过大的问题。
问题。
发明内容
部部件负载压力过大的技术问题。
示CPU量、内存量、网络带宽量以及IO量的比重,基于比重向量将用户请求转化为属性数据r
=[C,M,N,IO]*g,其中C、M、N与IO均为单位为1的方向向量,分别表示CPU量、内存量、网络带
宽量以及IO量的方向向量。
余性能参数,分别表示第i个后端服务器的剩余CPU量、剩余内存量、剩余网络带宽量以及剩
余IO量的比重。
使用PDSA‑DBSCAN(自适应密度聚类算法)算法对采集到的所有资源使用数据以CPU、内存、
网络带宽、IO为维度进行聚类,得到多个类簇;
续负载该维度的用户请求,当判断Web集群的后端服务器不能继续覆盖该维度的用户请求,
则控制Web集群的后端服务器不再参与竞争负载该维度的用户请求。
曲线的稳定区域,并在稳定区域内寻找类簇数–k的关系曲线与噪点数–k的关系曲线的第一
个相交点,并将第一个相交点处的k值所对应的Epsk值作为PDSA‑DBSCAN算法的最优Eps值,
并使用最优Eps值及其对应的Minpts值对采集到的资源使用数据进行聚类,得到多个类簇。
作为类簇数–k的关系曲线的M值,并将k值相邻的类簇数进行差分运算,得到第一差分值,得
到diff_cluster数据集;
作为噪声数–k的关系曲线的M值,并将k值相邻的噪声数进行差分运算,得到第二差分值,得
到diff_noise数据集;
区间前后的相邻区间是否存在第一差分值或第二差分值大于2M;若类簇数–k的关系曲线和
噪声数‑k的关系曲线上存在同一区间,且所述同一区间内的所有k值所对应的第一差分值
和第二差分值均不大于M值向上取整的数值,同一区间在后的相邻区间存在第一差分值或
第二差分值大于2M,则判断同一区间为稳定区域。
用数据,N表示整个数据集中对象的个数。
个后端服务器不能继续负载用户此类资源类型的请求,当不能继续负载的类簇个数未超过
类簇总个数的一半,判断Web集群中各个后端服务器能继续负载用户此类资源类型的请求。
数;将用户请求量化成以CPU、内存、网络带宽、IO为维度的属性参数;根据属性参数和各个
后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数计算得到各个后端服务器的权
值;将用户请求转发至权值最大的后端服务器上处理,从而实现根据用户请求本身的属性
动态自适应地调整后端服务器权值,避免选取出的后端服务器局部部件负载过大的技术问
题。
群是否能继续负载某种维度的用户请求,并根据判断结果来动态调节后端服务器权值,使
Web集群的运行状态达到最佳。
附图说明
具体实施方式
所述方法的步骤。
将所述用户请求量化成以CPU、内存、网络带宽、IO为维度的属性参数;根据所述属性参数和
各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数计算得到各个后端服务器
的权值;将所述用户请求转发至权值最大的后端服务器上处理,从而实现根据用户请求本
身的属性动态自适应地调整后端服务器权值,避免选取出的后端服务器局部部件负载过大
的技术问题。
pi3,pi4]为第i个后端服务器的剩余性能参数,并且满足0≤pij≤1,j∈[1,4],其中,pi1、pi2、
pi3,以及pi4均为第i个后端服务器的剩余性能参数,分别表示第i个后端服务器的剩余CPU
量、剩余内存量、剩余网络带宽量以及剩余IO量的比重。
分别表示CPU量、内存量、网络带宽量以及IO量的比重,基于所述比重向量将用户请求转化
为属性参数r=[C,M,N,IO]*g,其中C、M、N与IO均为单位为1的方向向量,分别表示CPU量、内
存量、网络带宽量以及IO量的方向向量。
weight*p*g,计算总权重S,并选举出current_weight的最大值,选取第一大的current_
weight‑S台服务器,并将用户请求转发到此后端服务器上。
能参数,分别表示第i个后端服务器的剩余CPU量、剩余内存量、剩余网络带宽量以及剩余IO
量的比重。
由于服务器的计算资源与网络带宽资源是有限的,服务器处理用户请求需要消耗这些资
源,直到资源耗尽,此时服务器将会因为无法提供资源处理请求,导致其无法正常工作。为
此,设计一种映射函数,在资源使用率达到一定阈值的时候将当前值放大到满载状态,从而
告知负载均衡节点服务器当前负载压力很大,避免分配过多请求致使服务器无法正常运
行。通过尽可能压低被选中的服务器权值,同时不断恢复各个服务器权值,使得权值较小的
服务器能够尽早的被选中。从加权轮询算流程图中可以看出,被选中的服务器的权值会得
到极大地削减,同时又恢复所有服务器的权值,并且是按照初始的有效权值大小进行恢复,
这样就既能够保证权值低的服务器能够尽早选中,又能够保证权值高的服务器恢复速度,
从而保证了分配的均衡性。
预设次数后,使用PDSA‑DBSCAN算法对采集到的所有资源使用数据以CPU、内存、网络带宽、
IO为维度进行聚类,得到多个类簇;再本实施例中,预设次数可根据实际情况设定,在本实
施例中,设置为150次。
Minpts值对采集的所有资源使用数据进行聚类,以得到多个不同k值对应的类簇数与噪点
数;
一谷峰差值的10%作为所述类簇数–k的关系曲线的M值,并将K值相邻的类簇数进行差值运
算,得到第一差分值,得到diff_cluster数据集;
二谷峰差值的10%作为所述噪声数–k的关系曲线的M值,并将k值相邻的噪声数进行差值运
算,得到第二差分值,得到diff_noise数据集;
整的数值,所述同一区间前后的相邻区间是否存在第一差分值或第二差分值大于2M;若所
述类簇数–k的关系曲线和所述噪声数–k的关系曲线上存在同一区间,且所述同一区间内的
所有k值所对应的第一差分值和第二差分值均不大于M值向上取整的数值,所述同一区间在
后的相邻区间存在第一差分值或第二差分值大于2M,则判断所述同一区间为稳定区域。
算法的最优Eps值,并使用所述最优Eps值及其对应的Minpts值对采集到的资源使用数据进
行聚类,得到多个类簇。
数据量的情况下,k值的取值会有很多,但随着k值的增长,曲线逐渐趋于稳定,而k的最优解
的位置处于两条曲线前中期稳定区域的交接地带。为此,可采用噪点数量占数据集总量的
比重p作为方法终止的条件,方法首先需要判定出两条曲线的稳定区域,然后对两条曲线的
稳定区域进行交集运算,最终选取两条曲线相交稳定区域的第一个交点便即为所求。
(μij‑σij,μij+σij)的形式表示此类簇这一属性值,其中,i表示类簇的编号,j表示服务器资源
的编号,其中,μij表示第i个类簇的第j个服务器的资源的平均值,σij表示第i个类簇的第j
个服务器的资源的标准差,其中,
90%,标准阈值所述类簇平均值的20%。
中各个后端服务器不能继续负载用户此类资源类型的请求,当所述不能继续负载的类簇个
数未超过类簇总个数的一半,判断所述Web集群中各个后端服务器能继续负载用户此类资
源类型的请求,当判断所述Web集群的后端服务器不能继续覆盖该维度的用户请求,将所述
后端服务器的在该维度的属性设置为0,并将所述属性反馈给均衡负载节点,使均衡负载节
点控制所述Web集群的后端服务器不再参与竞争负载该维度的用户请求;当判断所述Web集
群的后端服务器能继续覆盖该维度的用户请求,将所述后端服务器的在该维度的属性设置
为1,并将所述属性反馈给均衡负载节点,使均衡负载节点控制所述Web集群的后端服务器
继续参与竞争负载该维度的用户请求。
户请求来到的那一刻,反馈对象将后台服务器节点的能否负载的结果优先于选举阶段(即
根据权值来选择服务器)告知均衡负载节点,将负载较重的服务器节点屏蔽掉,在而后的选
举方法中,其它处于空闲状态的服务器节点将有更多的机会去竞争得到用户请求,从而在
整体上提升系统负载均衡的能力与用户请求的处理效率。
性能参数;将所述用户请求量化成以CPU、内存、网络带宽、IO为维度的属性参数;根据所述
属性参数和各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数计算得到各个
后端服务器的权值;将所述用户请求转发至权值最大的后端服务器上处理,从而实现根据
用户请求本身的属性动态自适应地调整后端服务器权值,避免选取出的后端服务器局部部
件负载过大的技术问题。
是否能继续负载某种维度的用户请求,并根据所述判断结果来动态调节后端服务器权值,
使所述Web集群的运行状态达到最佳。
改、等同替换、改进等,均应包含在本发明的保护范围之内。