基于操作系统虚拟化的Web请求负载均衡方法

xiaoxiao2020-10-23  14

基于操作系统虚拟化的Web请求负载均衡方法
【技术领域】
[0001] 本发明属于Web集群负载均衡技术领域,具体设及到一种基于操作系统虚拟化的 Web请求负载均衡方法。
【背景技术】
[0002] 随着社交网络、电子商务等互联网应用的迅猛发展,网络服务器面临着W下两方 面的问题;(1)访问数量成指数倍增加;似事务处理更加复杂。为了应对W上问题,为用户 提供一个高性能的网络服务环境,分布式的Web服务器系统(Web集群)应运而生,并用W 代替具有高性能的单台Web服务器。在Web集群中,每类服务包含多个服务实例副本,同一 服务的多个服务实例副本由多个不同的服务器承载。为了将用户请求合理地、均衡地分配 到不同的服务实例副本,确保各服务器及服务实例副本间的负载平衡,提高Web集群系统 的并发能力和系统资源的利用率,高效的负载均衡策略是问题的关键所在。
[0003] 传统Web集群是W物理机或虚拟机为单位承载服务实例副本,并根据负载均衡策 略将用户请求合理地分发给承载不同服务实例副本的物理机或虚拟机。然而,随着云计算 技术的发展,基于操作系统虚拟化的Docker容器作为一种新的承载服务实例的基本单位 出现了。由于Docker使用了基于操作系统的虚拟化技术,因此,与传统的基于完全虚拟化 的虚拟机相比,Docker能够实现运行时系统的资源弹性分配功能(即当Docker容器中无 任务执行时,Docker容器不占用CPU资源;有任务执行时Docker容器按照其CPU权重大小 占用所需的CPU资源),提高服务器资源的利用率。Docker的该一新特性,使得传统Web集 群上的负载均衡策略不再适用,因此,需要构建一种合理的、均衡的基于操作系统虚拟化的 Web请求负载均衡方法。

【发明内容】

[0004] 本发明针对现有技术的不足,提供了一种基于操作系统虚拟化的Web请求负载均 衡方法。
[0005] 本发明方法的具体步骤是:
[0006] 步骤(1)建立服务器资源状态信息列表。Web集群中服务器集合S表示为:
[0007] S= {s。S2, ,Sj, . . . ,sj
[000引其中Sj.(l《j《n)表示Web集群中的某一服务器,n表示Web集群包含的服务器 总数。服务器Sj.总的资源Pj.表示为:
[0009] Pj-巧j_cpu,Pj_memory,Pj_i。,Pj_network)
[0010] 其中P^epu表示服务器Sj的CPU的计算能力,Pj.m。。。。表示服务器Sj.的内存处理能 力,PU。表示服务器Sj的硬盘I/O能力,P 表示服务器Sj的网络吞吐率。为了消除服 务器异构性及不同种类资源的差异性所带来的影响,采用Max-Min方法对服务器Sj.总的资 源P/直进行归一化,服务器Sj.总的资源归一化值P0j.表示为:
[0011]POj=(P0JCPU,P〇J_mem。。,P〇J_i。,POj-network)
[0012] 步骤(2)建立服务实例资源状态信息列表。设Web集群对外提供的服务集合F表 示为:
[0013] F=
[0014] 其中fi(l《i《m)表示集群对外提供的第i种服务,m表示集群提供的服务种类 总数。服务包含多个不同的服务实例副本集合Fi表示为:
[00巧]…,f化,…,
[0016] 其中fik(l《k《1)表示服务的实例副本,1表示服务fi的实例副本个数。服 务实例fik的资源状态f目息STik表不为:
[0017]
[001引其中鸟表示服务fi的实例副本fik所在的主机Sj,cpu_shareik表示服务fi的实 例副本fik的CPU权值,服务的实例副本fik的最大可占用内存。
[0019] 步骤(3)每隔周期时间T,负载均衡服务器会定期收集Web集群中所有服务器在该 周期时间T内的负载信息。主要负载信息包括:
[0020] 服务器Sj的CPU利用率;
[0021] CP& =CPU繁忙时间/^(CPU繁忙时间+CPU空闲时间)
[0022] 服务器sj的硬盘I/O负载:
[0023] lOj=硬盘10繁忙时间/(硬盘10繁忙时间+硬盘10空闲时间)
[0024] 服务器sj的网络负载:
[0025] Network尸(周期T内流入流量+周期T内输出流量)/ (周期T冲LnetwJ
[0026] 服务器Sj.上所有实例副本CPU权值数之和:
[0027]
[002引服务器Sj.上服务fi的实例副本fik内存利用率:
[0029]
[0030] 其中memory心se康示服务fi的实例副本f化已使用的内存值;
[0031] 步骤(4)负载均衡服务器根据收集的服务器负载信息W及现存服务器与服务实 例状态信息,计算部署在服务器Sj.上的服务实例fik的最终权值Wet如f,;;,并更新权值列表 中相应服务实例的权值信息。
[0032]
[0033] 其中aik、0ik、丫ik、5ik分别表示服务fi对CPU、内存、硬盘W及网络四类资源所 赋予的不同权值,且同一服务不同服务实例对该四类资源所赋予的权值相同。负载均衡服 务器根据每个服务实例的权值大小采用业界广泛使用的加权轮询算法分发相应服务的Web 请求。
[0034] 本发明所提供基于操作系统虚拟化的Web请求负载均衡方法由一组功能模块组 成,它们包括;静态信息收集模块、动态信息收集模块、权值计算模块和负载分发模块。
[0035] 静态信息收集模块在负载均衡方法初始化时收集服务器与服务实例的静态信息。 服务器的静态信息主要包括;Web集群中每台服务器总的CPU计算能力Pj.。。。、内存处理能力 Pjjiemory、硬盘I/O能力Py。、网络吞吐能力Pj_net?rk。服务实例的静态信息主要包括;服务fi 的服务实例fik所在主机与.,服务的服务实例fik的CPU权值cpu_share化,服务的服 务实例fik的最大可占用内存memoryikjMd。当Web集群中服务器或服务动态变更时,在静 态信息模板中需要更新相应服务器或服务的静态信息。
[0036] 动态信息收集模块主要收集服务器及服务实例动态变化的状态信息。每隔周期 时间T,动态信息收集模块会收集服务器及服务实例动态变化的状态信息。为了防止信息 收集过于频繁而造成网络负担,周期时间T的取值依据统计经验设定为5-10秒。此外,当 服务实例新增或删除时,动态信息收集模块也会执行收集动作。收集的状态信息主要包括 该周期时间T内服务器Sj. (1《j《n)的CPU利用率CPUj.、硬盘的I/O负载lOj.、网络负载 Networkj、服务器sj上所有服务实例副本的CPU权值之和完JWC风y/w巧[、服务器sj上服务fi的实例副本fik的内存利用率Mewo巧壬。
[0037] 权值计算模块根据所收集的服务器及服务实例的信息计算出每个服务实例的最 终权值。
[003引负载分发模块根据权值计算模块所得的服务实例权值,采用加权轮询调度算法, 将较多的Web请求分发给权值较大的服务实例,较少的服务请求分发给权值较小的服务实 例,达到同一服务不同服务实例间的负载均衡。
[0039] 本发明提出的方法利用基于操作系统虚拟化的Docker容器能够实现运行时系统 资源弹性分配的特点,即根据服务实例CPU权值大小将计算资源按比例分配给承载相应服 务实例的Docker容器,实现不同服务实例副本及服务器 间的负载均衡。该方法通过进一步 在服务实例权值计算公式中引入服务实例的CPU权值,从而避免了同一服务器上承载不同 服务实例的Docker容器对所在服务器剩余计算资源的恶性竞争而导致服务器负载过重的 情况。与传统方法相比,本发明所述方法可W有效避免同一服务器上的不同服务实例副本, 由于所在服务器负载较低而同时接收大量Web请求造成所在服务器超载的现象,实现服务 实例副本及服务器间的负载均衡,提高Web集群系统的并发能力,减少请求的平均响应时 间。
【附图说明】
[0040] 图1为集群中服务器、服务、服务实例副本关系示例图;
[0041] 图2为动态倍息收集流程图。
【具体实施方式】
[0042] 本发明所提供的基于操作系统虚拟化的Web请求负载均衡方法【具体实施方式】主 要分四步:
[0043] (1)服务器资源信息收集与归一化;似服务器及服务实例动态信息收集(3)根据 服务器资源信息w及周期性收集到的动态信息计算所有服务的服务实例副本的最终权值; (4)通过加权轮询分发请求。
[0044] (1)服务器资源信息收集与归一化
[0045] 静态信息收集模块收集Web集群中每台服务器的CPU计算能力P^tpu、内存处理能 力Pj_memDry、硬盘I/O能力Pu。、网络吞吐能力Pj_net?rk四项资源信息。并分别计算出他们的 最大最小值如下:
[0化4] 为了消除服务器异构性及不同种类资源的差异性所带来的影响,采用Max-Min方 法对服务器CPU计算能力P^Epu、内存处理能力P^memory、硬盘I/O能力Py。、网络吞吐能力Pj_ 。et,。A四项资源信息进行归一化操作,并分别用POLepu,POjJlem。。,POu。,POjJlet,。A表示归一化 后相对应的值。
[(K)巧]CPU计算能力归一化值POj.CPU:
[0063] (2)服务器及服务实例动态信息收集
[0064] 在Web集群中服务器、服务W及服务实例副本之间的关系如图1所示。在图1中, Web集群中si,S2,SsS个物理机运行着f1,f,,fsS个服务的8个服务实例副本(图1中 fll,fl2,f21,f22,f23,fsi,f32,fs3)。每隔周期时间T,动态信息收集模块根据图2所示的动态 信息收集流程对图1中=个服务器W及=个服务的八个服务实例副本进行动态信息收集, 然后通过权值计算模块重新计算所有服务的服务实例副本的权值。此外,当服务实例新增 或删除时,动态信息收集模块也会执行收集动作并重新计算服务实例副本的权值。
[0065] 动态信息收集模块收集的信息主要包括;周期时间T时间内服务器Sj.(l《j《n) 的CPU利用率CP&、硬盘的I/O负载啤,网络负载Network^,服务器Sj上所有服务实例副 本的CPU权值之和巧;,服务器Sj上服务fi的实例副本fJ勺内存利用 率Memory]压。
[0066] (3)服务实例副本权值计算
[0067] 根据步骤(1)中计算所得的服务器资源归一化值W及步骤(2)中所收集的服务器 及服务实例动态信息,计算部署在服务器Sj.上的服务实例fik的最终权值:
[0068]
[0069] (4)通过加权轮询分发请求
[0070] 根据第(3)步所得的服务实例权值讲权值结果更新后,负载分发模块采用加权轮 询调度算法,将同一服务的Web请求均衡地分发给该服务的不同服务实例副本,从而实现 不同实例副本W及服务器之间的负载均衡。
【主权项】
1.基于操作系统虚拟化的Web请求负载均衡方法,其特征在于该方法包括如下步骤: 步骤(1).建立服务器资源状态信息列表;Web集群中服务器集合S表示为: S {s" Sg, S3,···,Sj, ···,Sn} 其中Sj表;^ Web集群中的某一服务器,I < j < η,η表;^ Web集群包含的服务器总数; 服务器Sj总的资源Pj表示为: P P P P ) Ij= \丄 j_cpu,丄 j_memory,丄 j_io,丄 j_network7 其中PjjU表示服务器S j的CPU的计算能力,P j MOTy表示服务器S j的内存处理能力, Pj i。表示服务器s」的硬盘I/O能力,P j netwOTk表示服务器s」的网络吞吐率;采用Max-Min方 法对服务器Sj总的资源P」值进行归一化,服务器s」总的资源归一化值PO」表示为: P〇j (PO j-cpu,P〇j-memory,P〇j-i。,P〇j-network) 步骤(2).建立服务实例资源状态信息列表;设Web集群对外提供的服务集合F表示 为: F = {fi, f2, f3, - , fi, - , fj 其中4表示集群对外提供的第i种服务,I < i < m,m表示集群提供的服务种类总数; 服务A包含多个不同的服务实例副本集合F ,表示为: Fi= if π, fi2, fi3, - , fik, - ,fill 其中fik表示服务f i的实例副本,I < k < 1,I表示服务f i的实例副本个数;服务实例 4的资源状态信息ST ik表示为:其中尽表示服务fi的实例副本f ik所在的主机s』,cpu_shareil^示服务f满实例副 本4的CPU权值,memory ik_t(rtal表示服务f i的实例副本f ik的最大可占用内存; 步骤(3).每隔周期时间T,负载均衡服务器会定期收集Web集群中所有服务器在该周 期时间T内的负载信息;主要负载信息包括: 服务器sj^CPU利用率: CPUj= CPU繁忙时间ACPU繁忙时间+CPU空闲时间) 服务器Sj的硬盘I/O负载: IOj =硬盘IO繁忙时间八硬盘IO繁忙时间+硬盘IO空闲时间) 服务器Sj的网络负载: Network』=(周期T内流入流量+周期T内输出流量)八周期!^^』^^) 服务器\_上所有实例副本CPU权值数之和:服务器Sj上服务f i的实例副本f ik内存利用率:其中memoryik_used表示服务f i的实例副本f ik已使用的内存值; 步骤(4).负载均衡服务器根据收集的服务器负载信息以及现存服务器与服务实例状 态信息,计算部署在服务器Sj上的服务实例f ik的最终权值,并更新权值列表中相 应服务实例的权值信息:其中aik、f3ik、Yik、Sik分别表示服务fJ^CPU、内存、硬盘以及网络四类资源所赋予 的不同权值,且同一服务不同服务实例对这四类资源所赋予的权值相同;负载均衡服务器 根据每个服务实例的权值大小采用加权轮询算法分发相应服务的Web请求。
【专利摘要】本发明公开了一种基于操作系统虚拟化的Web请求负载均衡方法。本发明首先进行服务器资源信息收集与归一化;其次服务器及服务实例动态信息收集;然后根据服务器资源信息以及周期性收集到的动态信息计算所有服务的服务实例副本的最终权值;最后通过加权轮询分发请求。本发明可以有效避免同一服务器上的不同服务实例副本,由于所在服务器负载较低而同时接收大量Web请求造成所在服务器超载的现象,实现服务实例副本及服务器间的负载均衡,提高Web集群系统的并发能力,减少请求的平均响应时间。
【IPC分类】H04L29/08
【公开号】CN104902001
【申请号】CN201510160526
【发明人】黄彬彬, 张雪鹏, 俞东进
【申请人】杭州电子科技大学
【公开日】2015年9月9日
【申请日】2015年4月7日

最新回复(0)