一种面向Web应用宿主平台的资源供给方法转让专利

申请号 : CN201010578793.7

文献号 : CN102130938B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王伟张文博周欢云魏峻钟华黄涛

申请人 : 中国科学院软件研究所

摘要 :

本发明公开了一种面向Web应用宿主平台的资源供给方法,属于计算机网络技术领域。本方法为:首先在宿主平台内设一主控节点,并在平台内的每台服务器上设一节点管理器;然后节点管理器通过使用性能异常检测方法对服务器和集群节点的性能进行监测,并将监测结果反馈给主控节点,然后主控节点主控节点根据监测结果生成资源调整策略,并将调整策略返回给节点管理器,最后节点根据收到的资源调整计划执行资源调整。与现有技术相比,本发明最大限度的减少服务器使用量,降低资源消耗,缩减数据中心的运营成本。

权利要求 :

1.一种面向Web应用宿主平台的资源供给方法,其步骤为:

1)在宿主平台内设一主控节点,并在平台内的每台服务器上设一节点管理器;

2)节点管理器对其所在服务器及该服务器上的集群节点的性能参数进行监测,并将监测结果周期性地发送到主控节点;

3)主控节点根据监测结果判定集群节点的状态和服务器的状态,并将集群Ci中出现逻辑资源瓶颈状态的集群节点划分到集群Ci的逻辑资源瓶颈集合中、将集群Ci中出现物理资源瓶颈状态的集群节点划分到集群Ci的物理资源瓶颈集合中;

4)主控节点根据步骤3)的结果生成资源调整策略:

a)如果逻辑资源瓶颈集合不为空,则主控节点增加该集合中集群节点的逻辑资源数量;如果逻辑资源瓶颈集合为空且物理资源瓶颈集合不为空,则主控节点为集群Ci添加一集群节点;

b)如果逻辑资源瓶颈集合、物理资源瓶颈集合均为空,且空闲集群节点占集群Ci全部集群节点的比例超过设定阈值,则主控节点逐个关闭集群Ci中的空闲集群节点并将其负载转发给集群Ci的其他集群节点;

5)主控节点根据资源调整策略将对某集群节点的资源调整计划发送给该集群节点所在服务器的节点管理器;

6)节点管理器根据收到的资源调整计划执行资源调整。

2.如权利要求1所述的方法,其特征在于所述集群节点的状态包括:空闲状态、正常状态、逻辑资源瓶颈状态、物理资源瓶颈状态;所述服务器的状态包括:空闲状态、正常状态、瓶颈状态。

3.如权利要求1或2所述的方法,其特征在于添加一集群节点的方法为:主控节点在Web宿主平台资源池中选择一服务器后,将集群节点启动命令发送给该服务器的节点管理器,该节点管理器运行一集群节点,将负载分配给该新加入的集群节点中。

4.如权利要求3所述的方法,其特征在于选择服务器的方法为:主控节点查找Web宿主平台资源池中状态为空闲且运行服务数量最少的服务器S,如果存在,则返回服务器S;

否则,在Web宿主平台资源池中为集群Ci添加一新服务器S。

5.如权利要求3所述的方法,其特征在于通过预设资源空闲阈值方法判断集群节点的空闲状态;根据服务器上集群节点的状态判定服务器的状态。

6.如权利要求5所述的方法,其特征在于当服务器上某一集群节点状态为物理资源瓶颈状态时,判定该服务器的状态为瓶颈状态。

7.如权利要求3所述的方法,其特征在于节点管理器执行资源调整之后,采用负载均衡方法对节点管理器所在服务器上的集群节点负载进行调整。

8.如权利要求3所述的方法,其特征在于主控节点逐个关闭空闲集群节点并将其负载转发给集群Ci的其他集群节点的方法为:a)如果服务器server(Ci,q)为瓶颈状态,则主控节点关闭集群节点Ci,q;

b)如果所有服务器server(Ci,q)都未出现瓶颈状态,则主控节点找出所有处于空闲状态的服务器中运行集群节点数目最少的服务器server(Ci,q),关闭该运行集群节点数目最少的服务器server(Ci,q)中属于集群Ci的空闲集群节点;

c)若所有Ci,q所在服务器的状态均为正常,则主控节点选择运行集群节点数目最多的服务器server(Ci,q),关闭运行在该服务器server(Ci,q)上属于Ci的空闲集群节点;其中,Ci,q是任一空闲集群节点,它所在服务器为server(Ci,q)。

9.如权利要求1所述的方法,其特征在于所述性能参数包括:服务时间、延迟时间、资源使用率。

10.如权利要求9所述的方法,其特征在于所述资源使用率中的资源包括:处理器、内存、磁盘、网络。

说明书 :

一种面向Web应用宿主平台的资源供给方法

技术领域

[0001] 本发明涉及一种服务器资源供给方法,尤其是面向Web应用宿主平台的资源供给方法,属于Web应用宿主平台资源管理领域。

背景技术

[0002] Web应用宿主平台(web application hosting platform)包含中间件、操作系统等软件系统以及底层的硬件系统。其中,中间件(Middleware)是近些年出现的一种系统软件技术,它泛指位于应用层和操作系统、网络之间,用于屏蔽操作系统和网络异构性的软件,这些中间件集成在一起构成了Web应用服务器核心,本方法从该层次提供资源供给。
[0003] Web应用服务器是Web计算环境下为事务性Web应用提供一系列运行时服务的中间件系统,是一种重要的Web应用宿主平台,它为创建、部署、运行、集成、维护和管理事务性应用服务提供包含一系列运行时服务(如消息、事务、安全、应用集成等)的运行环境和平台,同时兼顾Web计算的特定需求。鉴于Web应用服务器在Internet应用和网络软件平台中的作用和地位,国际上许多著名的开源组织和计算机公司都进行了大量的研发工作,推出了各自的产品和系统,如Apache Tomcat、Redhat JBoss、Sun Glassfish、IBM Websphere、BEA Weblogic、Oracle Application Server 10g等。然而,随着计算机的普及和网络技术的发展,Internet上的Web应用和HTTP请求的爆炸性增长,使得Web应用服务器经常面临过载的问题。
[0004] Web应用服务器集群技术被认为是解决这一问题的有效手段,它是一种并行或分布式处理系统,由很多连接在一起的独立Web应用服务器实例组成,像一个单独集成的计算资源一样协同工作。将多个节点组成集群,通过提供负载均衡、失效恢复等功能,可使系统具备高性能、高可用性和高可扩展性。
[0005] 然而在大型企业计算环境、IDC、大型Web2.0站点、云计算平台等场景下,存在许多应用共享相同的Web应用宿主平台,并且它们面对的是开放的Internet环境,应用负载具有高度可变性。为了应对突发用户访问,提高集群资源的利用率,需要对集群进行自适应地调整,实现资源的按需供给。同时,由于多应用共享的服务器资源,每台服务器可运行单个或多个集群节点,各节点可以属于同一个集群,也可能属于不同集群,构成了复杂的部署结构,这与传统的一台服务器运行一个集群节点的部署方式不同。而当用户负载动态变化时,平台中服务器的异构性以及多集群共存导致的集群节点资源竞争。
[0006] 为了达到根据应用当前负载供给资源和充分利用服务器资源的目的,主要使用现有的几种自适应供给判定方法:(1)基于资源使用率阀值的调整方式,使得调整的准确性和有效性直接依赖阈值的初始设定,难以适应负载多变的、异构的服务器环境;(2)基于自适应的动作策略或目标策略,使用智能Agent对系统进行调整,该方法只适用于定性分析和逻辑推理,不适合对系统响应速度、吞吐量等定量参数进行描述;(3)基于控制论的方法:根据系统的动态特性,使用优化器计算控制参数,实现对系统的调整,其核心在于设计有效的决策方案;(4)基于效用函数的方法:将系统的状态映射为一个实数值,用于反映系统的性能状况,通过效用的最大化对系统进行调整,该方法难点在于效用函数的建立。
[0007] 然后根据诊断的结果对集群大小进行弹性伸缩变化,如添加新的应用服务器节点、删除应用服务器节点、添加或停止新的服务器等。这些方法主要针对传统的单集群部署环境而言,以单个集群或单个应用服务器为调整的核心,没有考虑到整个服务器环境的各个部分的运行状态和资源分布消耗状态,再者,对应用服务器之间的资源竞争也没有充分的考虑,使得这些方法难以适应新的部署场景,达到以最少的服务器资源消耗完成各个应用的请求负载,降低能源的消耗。

发明内容

[0008] 本发明的目的在于提供一种面向Web应用宿主平台的资源供给方法,其首先通过使用性能异常检测方法对服务器的性能进行诊断评估,然后通过侦测、反馈、控制的方法实现对系统的自适应调整。
[0009] 资源和负载自适应调整都需要对集群节点和服务器(下文中单独出现的服务器指的是物理服务器,它上面运行了若干Web应用服务器实例;集群由若干个集群节点组成,每个集群节点为一个Web应用服务器实例,而Web应用服务器实例指Web应用服务器的一次运行)的性能进行有效评估,找出空闲服务节点和性能异常节点。为了适应用于负载多变的、异构的Web应用宿主平台环境,本发明结合使用基于阀值的空闲状态判定和基于服务时间的性能异常诊断方法(关于性能异常诊断方法参考专利名称“一种Web应用性能异常侦测方法”,公开号:CN101505243A,的技术文献)。
[0010] 在全局Web宿主平台中有一个主控节点,每台服务器上设有一个节点管理器,负责与主控节点交互。节点管理器负责收集每个服务器以及其上面运行的Web应用服务器实例的运行时性能参数(比如服务时间、延迟时间、资源使用率,其中资源包括:处理器、内存、磁盘、网络等),并根据“一种Web应用性能异常侦测方法”的需求进行的简单计算(如计算服务时间)。主控节点周期性收集这些信息做出调整决策,并发回节点管理器执行,实现资源调整。
[0011] 主控节点根据收集的信息,对应用服务器实例和物理服务器的状态进行判定,构建下面四个操作:
[0012] ●check_idle(appInstance):判断应用服务器实例(即集群节点)是否空闲,通过预设资源空闲阀值的方式实现;
[0013] ●check_idle(server):判断服务器是否空闲,保证资源使用没有超过预定空闲阀值,并且运行在server中的每个集群节点都为空闲态;
[0014] ●check_bottleneck(appInstance):判断应用服务器实例是否出现瓶颈,可为逻辑资源瓶颈或物理资源瓶颈,造成物理资源的原因在于底层服务器的过载;
[0015] ●check_bottleneck(server):判断服务器是否出现瓶颈,如果运行在server上的任意一个应用服务器实例出现物理资源瓶颈时,则断言,server出现了性能瓶颈。
[0016] 根据check_idle和check_bottleneck操作,主控节点可以将集群节点和服务器划分为三个状态:空闲状态(Idle)、正常状态(Normal)和瓶颈状态(Bottleneck)。
[0017] 为了方便对Web宿主平台和集群进行描述,给出以下定义:
[0018] 定义1S1、S2、...、Sn为Web宿主平台中的n台服务器,ssize(Si)服务器Si上运行的应用服务器实例数量,Sij表示在第i个服务器上运行的第j个服务。
[0019] 定义2C1、C2、...、Cm为Web宿主平台中平台的m个集群,ssize(Ci)表示集群Ci的应用服务器实例数目,Cij表示集群i的第j个应用服务器实例。使用server(Cij)表示Cij所在服务器。
[0020] 主控节点周期性的通过节点管理器收集性能评估参数,并计算上述的四种操作,将每个应用服务器实例和物理服务器划分到的空闲、正常和瓶颈三种状态中,并基于当前集群中每个节点的状态,主控节点通过下面的方法供给集群资源和回收集群资源。
[0021] 1.资源供给
[0022] 主控节点根据check_bottleneck(appInstance),将集群Ci中出现了瓶颈的节点按照瓶颈类别划入到逻辑资源瓶颈集合或物理资源瓶颈集合,描述如下:
[0023] 逻辑资源瓶颈集合LgBtnkSet={Ci,x1,Ci,x2,...,Ci,xr};
[0024] 物理资源瓶颈集合PhBtnkSet={Ci,y1,Ci,y2,...,Ci,ys};
[0025] ●如果 那么调节该集合中集群节点的逻辑资源数量(比如线程池的大小),将逻辑资源的数目提高一定的比例(比如提高50%)或者固定数目大小(比如增加50个处理线程),这需要Web应用服务器支持动态调整逻辑资源池的大小。通过这种方式,提高集群响应能力。通过负载均衡功能(负载均衡是Web应用服务器集群的主要功能之一,本方法将不关注其实现方式),将更多的请求转移到这些新调整的节点中,降低具有物理资源瓶颈节点的负载,实现不改变集群拓扑结构的前提下提高集群负载能力;
[0026] ●如果 此时分配给集群的资源无法承受当前负载,需要在宿主平台中为集群运行一个新的Web应用服务器实例。首先,主控节点在Web宿主平台资源池中选择合适的服务器,然后将为集群启动节点的命令发送给相应的节点管理器,节点管理器运行应用服务器实例,完成集群应用部署,通过负载均衡将负载分配到新加入节点中,从而降低该集群每个节点负载,消除物理资源瓶颈。服务器的选择方法如下:
[0027] ■找出平台中空闲的服务器S,并且服务器中运行的服务数量ssize(S)最小的服务器,如果存在,那么返回S。可以最大限度的利用已经使用的服务器资源,并减少可能出现瓶颈服务器的可能性;
[0028] ■否则,找出平台中没有运行任何应用服务器实例的服务器S,如果存在,返回S。此时为Web应用宿主平台添加了新物理服务器,增加了平台的可用资源的数量,同时也提高了能源的消耗。
[0029] ■否则,返回NULL,即平台不能提供更多的服务器资源,导致平台不足以支持新的资源请求,此时,整个平台处于过载状态。
[0030] ●如果 此时集群的各个节点都处于正常状态,不存在物理资源或者逻辑资源的瓶颈,不需要增加资源,但是有可能需要使用下面的子元素收缩方法减少资源应用的资源消耗。
[0031] 上述的调整方法以应用服务器集群为调整的单位,但是进行资源分配时考虑到整个Web应用宿主平台,从全局的角度进行资源的分配,将应用较为均匀的分配到每个服务节点上。但是在需要资源时,并不是直接添加新的物理服务器,而是使用现有的空闲的物理服务器,只有当平台达到资源饱和时,才需要提供新的服务器资源来容纳新的集群节点,从而减少服务器使用量,降低能源消耗。
[0032] 2.资源收缩
[0033] 为集群Ci中每个集群节点应用check_idle(appInstance)操作,将所有空闲的集群节点放入到集合:
[0034] 空闲集群节点集合IdleSet={Ci,j1,Ci,j2,...,Ci,js}
[0035] 当一个Web应用服务器集群的空闲节点超过一定比例(如50%)时,触发资源收缩动作,关闭部分空闲节点,通过负载均衡的作用,将负载转发给同集群其它节点。因此若一次关掉过多节点,可能导致集群又出现性能瓶颈,简单的,采用逐个关闭空闲节点的策略,通过多次集群收缩到达正常状态。
[0036] 收缩节点选择算法如下:
[0037] 假设Ci,q是任意一个属于IdleSet的元素,它所在服务器server(Ci,q)可以为任何一种状态,根据其状态采取不同的选择方法:
[0038] ●如果server(Ci,q)出现了资源瓶颈,那么通过主控节点关闭集群节点Ci,q,减少server(Ci,q)上的资源消耗,使其可以逐步进入正常状态;
[0039] ●如果所有server(Ci,q)都未出现性能瓶颈,那么找出所有处于空闲状态的server(Ci,q)),它们服务器构成集合M,然后在M中找出服务器m,其中ssize(m)最小,那么通过主控节点关闭m中属于集群Ci的空闲节点。从而可以逐步减少平台使用的服务器数量,降低能源消耗;
[0040] ●若所有Ci,q所在服务器都正常运行,那么选择服务器m,使ssize(m)最大,通过主控节点关闭运行在m上属于Ci,空闲节点,减少该服务器中集群节点数目,降低出现性能瓶颈的可能性。
[0041] 通过上述资源调整算法,使Web应用宿主平台中各集群尽量利用已使用服务器,减少对服务器需求。实现平台资源的“按需供给”,以合适的资源集合完成用户请求处理。
[0042] 上面对集群资源进行了自适应调整,但是只有将用户负载按照新的资源分布进行动态自适应分配,才能使集群进入持续健康的运行状态,所以在对集群进行调整之后需要使用自适应的负载均衡技术动负载分布进行自适应的调整。
[0043] 本发明的积极效果为:
[0044] 采用本发明的方法,可以在多应用共存的复杂的Web应用宿主平台下,对Web应用服务器集群节点的进行性能诊断,当某个应用的负载过高时,为其对应的集群添加逻辑资源或者集群节点资源,当其负载过低时,减少集群节点,降低资源的消耗,实现资源的按需供给。在进行资源供给和收缩时,使用发明中指定的物理服务器供给和回收的机制,最大限度的减少服务器使用量,降低资源消耗,缩减数据中心的运营成本。

附图说明

[0045] 图1资源供给框架构件结构图;
[0046] 图2Web宿主平台的部署结构图;
[0047] 其中,LB:负载均衡器,WAS:Web应用服务器,DNS:请求域名解析;
[0048] 图3集群负载变化图;
[0049] 图4资源供给方法的执行流程图。

具体实施方式

[0050] 下面结合附图和实施例对本发明做进一步说明。
[0051] 本发明提出的面向Web宿主平台的资源供给方法通过收集服务器和Web应用服务器的相关的监控数据,并对这些数据实施基于阀值的空闲判定和基于服务时间的性能异常诊断的性能分析,得到每个服务器和每个Web应用服务器集群节点的状态,再使用本方法提供的资源供给算法对各个集群进行调整,保证服务器资源的按需供给。
[0052] 本实施例使用Java EE环境,并采用一个简单的Java EE应用作为示例Web应用。Java EE(JavaTM Platform,Enterprise Edition)是Sun公司提出的开发、部署、运行和管理Java分布式应用的标准技术体系结构,它包括一系列应用组件模型和标准服务。本实施例采用的JavaEE应用主要使用了Servlet组件模型。Servlet是一种Java EE Web组件,它与客户端采用“请求/响应”的通信模式,当客户端请求某一Servlet组件时,该组件可以产生动态网页内容并作为响应返回客户端。
[0053] 使用Java构建一个Web宿主平台系统并实施本方法需要有以下几个软件组件,它们之间的结构关系如图1所示:
[0054] 1)Java EE应用服务器
[0055] Java EE应用服务器是开发、配置和管理Java EE应用的标准平台,它通过容器来支持分层体系结构。容器提供了对Java EE应用组件的运行时支持,其中,Servlet组件由Servlet容器进行管理。Servlet容器封装了Web服务器与表示层逻辑的功能,负责Servlet组件与客户的通信以及Servlet组件方法的调用。同时,Java EE应用服务器还提供了一系列的底层服务(如数据库连接服务等)为容器提供底层功能支持。除了标准的Java EE容器和服务,本实施例所采用的Java EE应用服务器还支持线程池、数据库连接池等资源池服务。资源池服务可以提高资源的利用率、降低资源重新创建的开销、控制资源的并发访问。由于资源管理对应用服务器的性能至关重要,所以资源池服务已成为所有应用服务器都支持的一类基本服务。
[0056] 2)节点管理器
[0057] 用于管理和监控Web宿主平台中的服务器。每台服务器中都运行了一个节点管理器,该节点管理器负责监控服务器状态,收集各种运行时信息,控制运行其上的负载均衡器、应用服务器。并与主控节点进行交互,通过状态报告定期返回服务器和运行在上面的Web应用服务器实例各种相关的性能数据,为资源供给提供依据。同时接收主控节点的控制命令,控制运行在每台服务器中运行的Web应用服务器;
[0058] 3)主控节点
[0059] 用于管理和监控Web宿主平台中服务器和运行在服务器上的集群。主要包括资源管理和集群管理两部分。资源管理包括服务器节点池管理、节点控制、资源监控等,集群管理包括拓扑管理、部署管理、资源监控、自适应调整等。集群控制是通过节点管理器间接控制实现的;
[0060] Web应用服务器集群包括处理各种用户请求的Web应用服务器节点和实现负载均衡的负载均衡器(Load balance)节点。这些服务的实例通过主控节点的配置、组合、协调,构成完整的集群系统,提供高性能的Web应用运行环境。同时主控节点通过对服务的监控,在出现资源使用异常和性能故障时,按照预定的策略对集群进行自适应调整。
[0061] Web应用服务器与服务器节点之间的关系如图2,Web应用服务器节点可以运行在平台的非主控节点服务器中,同一台服务器可以运行来自多个应用的Web应用服务器实例。
[0062] 4)JavaEE应用
[0063] 本实施例所采用Java EE应用是一个简单的网上购物系统,包括商品浏览、商品订购、订单确认等功能。上述功能分别由Search、ShoppingCart、Order三个Servlet组件完成,用户通过客户端浏览器请求Search组件进行商品浏览和查询,通过请求ShoppingCart组件将商品加入购物篮,通过请求Order组件完成订单的确认。
[0064] 本实施例的Web宿主平台中有7台服务器,其中S1、S2、S3、S4、S5作为普通的服务器节点运行节点管理器和Web应用服务器,S6作为Web宿主平台的控制节点,运行集群管理服务和服务器管理服务,用于管理、监视和调整Web宿主平台。S7运行负载均衡服务,为Web宿主平台中的集群提供负载均衡服务。
[0065] 本实施例在Web宿主平台中部署两个上述的Java EE应用,即有两个应用实例App1和App2,每个应用都以集群的方式部署,分别为集群C1和集群C2,初始时为App1部署三个集群节点:C11、C12、C13,分别运行在S1、S2、S3中;为App2也部署三个集群节点:C21、C22、C23,分别运行在S2、S3、S4中。S5是一个备用节点,当Web宿主平台负载过高时投入使用。Web宿主平台的初始布局如表1所示。
[0066] 表1Web宿主平台服务器初始服务配置
[0067]
[0068] 集群C1和C2的部分节点共享相同的服务器,使其形成资源竞争,并预留未使用服务器S5,为出现物理资源瓶颈的集群提供资源。
[0069] 为C2提供一个大小恒定的请求负载,保证C2的各个节点可以进入到正常的工作状态,同时变化C1的负载(先增大后减少),如图3所示。在C1负载发生变化的期间,按照图4所示的资源供给原理对C1实施资源供给,由于采用的简单Java EE应用的关键系统资源是CPU资源,因此本实施例方法选择对CPU资源效用进行监测,对于其它Java EE应用,可以选择其对应的关键资源进行监测,如(内存、磁盘等)。过程如下:
[0070] 1)节点管理器使用周期采样的方式收集Web宿主平台中的每台服务器和每个Web应用服务器的CPU使用率信息、请求响应时间、服务时间等数据,并将这些数据定期的发送到主控节点,主控节点对这些信息进行汇总和统计。
[0071] 2)主控节点使用收集的性能数据定期为每个Web应用服务器实例计算check_idle(appInstance)、check_bottleneck(appInstance)和为每台服务器计算check_idle(server)、check_bottleneck(server),从而对服务器以及Web应用服务器实例状态的进行判定,以便进行下一步的资源供给。
[0072] a)对于操作check_idle(appInstance)和check_idle(server),通过设定资源使用率阀值的方式实现,比如当Web应用服务器的CPU使用率不超过20%,那么将该Web应用服务器标识为空闲状态,同理,当某台服务器的CPU使用率不超过20%(可以设为与前面不同的权值)时,将该服务器标识为空闲状态。阀值的选定可以根据应用场景的需求进行设定。
[0073] b)对于操作check_bottleneck(appInstance)和check_bottleneck(server),使用专利(一种Web应用性能异常侦测方法,公开号:CN101505243A)发明的基于服务时间的Web应用性能检测方法:根据资源使用率和请求响应时间得到请求所需的服务时间,即公式S=R*(1-U)(其中S为服务时间,R为请求响应时间,U为资源使用率),正常工作时S保持恒定,但是当出现性能瓶颈时S上升,从而可以判断服务器和Web应用服务器是否存在瓶颈,以及是存在逻辑资源瓶颈还是物理资源瓶颈。
[0074] 3)主控节点根据上述的判断得到每个服务器的状态(可能为空闲、正常和瓶颈),针对这些状态信息调用本发明提供的资源供给算法,可知任何一个集群是否需要调整、如何调整,Web宿主平台中的所有调整动作构成一个Web宿主的调整计划,并提交给主控节点的资源管理器执行,并最终将控制指令发送给节点管理器。
[0075] a)资源供给。当服务器资源出现瓶颈后,根据资源供给算法,为集群提供新的资源。如果有节点出现逻辑资源瓶颈,那么保持集群的拓扑结构不变,为相应的节点增大线程池大小,调高逻辑资源数目;否则,为集群添加Web应用服务器实例,增大集群规模,从而提供集群的负载能力,而托管新集群节点的宿主服务器使用发明内容中提供的方法选择得到。
[0076] b)资源收缩。根据check_idle(applnstance)的结果可得到集群Ci的空闲节点列表,当空闲节点数目超过Ci总节点数(ssize(Ci))的50%时,对集群实施资源收缩。收缩按照上述的资源收缩算法进行,在保证Web宿主平台的长期正常平稳运行的同时,减少平台服务器的使用量,降低能源消耗。
[0077] 4)将产生的资源供给计划发送到主控节点的资源管理器,它根据资源调整计划,调用资源回收器或资源分配器实施资源调整,具体的调整工作由各个服务器中运行的节点管理器执行。在对集群资源的供给进行调整之后,需要立即对集群的负载均衡进行相对应的调整,保证用户负载均衡的分配到集群的各个节点中,最终达到用户负载分布于集群的处理能力分配趋于一致,这主要通过负载均衡算法实现。系统实现时可以采用现有的异构集群负载均衡方法,比如根据响应时间的长短进行请求转发、根据集群中的各个节点的资源使用情况进行请求转发。过程如下:
[0078] a)对于需要资源供给的集群,主控节点的资源分配器为其添加资源(可能是逻辑资源、也可能是Web应用服务器实例)。这个控制动作由主控节点向对应的节点管理器发出,节点管理器接收到相应的命令后完成资源的调整。
[0079] b)对于需要进行资源收缩的集群,主控节点的资源回收器关闭集群节点,这个控制动作也是通过主控节点向对应的节点管理器发出,最后由节点管理器完成集群节点的关闭。
[0080] 根据上述描述的资源供给的原理和实施方式,下面描述随着集群C1负载的变化,它的资源占用情况和拓扑结构的变化情况。在初始态时,由于C2已经有较高的负载,使C2的各节点所在的服务器(S2、S3、S4)都处于正常工作状态。具体过程描述如下(下面提到的响应时间、服务时间和资源利用率均为C1各个节点的平均值):
[0081] 1)随着C1负载上升(在第1分钟之内),使得C1的响应时间逐渐增加,此时服务时间保持平稳。
[0082] 2)在1~2分钟期间,发现C1请求的服务时间突然急剧上升,而此时CPU尚未饱和(40%~50%),根据性能分析模型知,出现逻辑资源瓶颈,所以Web应用服务器线程池,提高其对物理资源的使用率,从而增大C1的负载能力,从而使响应时间和服务时间瞬间下降;
[0083] 3)在2~3分钟,响应时间缓慢增加,此时服务时间基本保持稳定。
[0084] 4)当负载继续上升将达最大值时(3~4分钟),服务时间再次剧增,此时CPU利用率为96%,达到饱和,出现物理资源瓶颈,故为C1添加新节点。由于S1、S2、S3、S4四台服务器都处在物理资源饱和状态,所以需要新服务器S5,通过主控节点向S5的节点管理器发送命令,启动一个新的Web应用服务器实例,部署集群C1的应用,并将该节点加入到集群C1和它的负载转发队列中,从而使得响应时间和服务时间瞬间下降。
[0085] 5)负载过了高峰期后不断下降,在第8分钟时,由于负载过低,使集群C1的各个节点都处于空闲状态(此时服务器S2、S3、S4为正常工作状态),根据资源收缩算法,选择关闭集群节点C11,并将该节点从集群C1和C1的负载转发队列中删除,从而使集群C1进入重新进入正常状态,而S1成为了未使用的服务器。
[0086] 在C1的调整过程中,它的平均响应时间、平均服务时间和平均CPU利用率的详细数据如表2所示。
[0087] 表2实施服务器资源供给期间C1各个参数的变化
[0088]
[0089] 上述的实施过程使用了空闲的服务器S5,用于随时准备为Web宿主平台提供服务,这就要求该服务器一直处于运行状态。在企业级的Web宿主平台资源供给实施过程中,可以采用虚拟化的方法,在需要新的服务器时,启动虚拟机的创建程序产生一台新的虚拟服务器,并在该服务器上运行节点管理器组件,然后采用本发明提供的资源供给方法,从而避免开启空闲服务器等待接收Web应用服务器的部署。