一种集群环境下请求会话保持与调度的方法

文档序号:7851333阅读:198来源:国知局
专利名称:一种集群环境下请求会话保持与调度的方法
技术领域
本发明专利涉及一种集群环境下的会话保持与调度的方法,特别是在应用中存在较多SESSION的集群。
背景技术
首先对本发明中用到的缩写及名词进行定义
AS -.Access Server,接入服务器;
KSS Keep&Scheduler Server,保持与调度服务器;
SDSBS SESSI0N Data Store&Backup, SESSION 存储与备份服务器;
HB Heart Beart,心跳模块;
MS Monitor Server,监测服务器;
TS Target Server,目标服务器;
SESSION :一次请求服务所维持的会话;
MASTER,主服务器;
SLAVE,从服务器;
PMR !Performance Measuring Reporter,性能测量报告者
在集群应用中,负载均衡LB(Load Balance)和会话同步是很很重要的两个方面。目前广泛部署的集群应用中,相当一部分集群使用广播机制实现SESSION数据的同步,即将某一服务节点的SESSION数据同步广播给其他的服务节点,这种方式容易获得高可用性HA(High Availably)。但是,随着集群服务器的增加,在大范围内广播数据的机制就退化成一种性能落后的解决方案;数据广播模式要求各个服务节点增加广播与接收模块并运行数据同步算法,这样同时也增加了节点服务器的复杂度并降低了性能。目前广泛应用的负载均衡解决方案如F5-BIGIP、AppDirector、LVS等都是在调度服务器端使用轮询、最小连接、动态比率和散列调度算法,采用的解决办法是基于已知信息推测服务器的运行负载状态。因为负载均衡服务器主要使用“轮询”或本质上属于“轮询”的调度策略,而不是基于运行服务器的真实负载做出的调度选择,所以调度选择结果未必准确,同时也不能对运行任务的服务器进行有效的管理。获得较好的调度选择与SESSION数据的同步需要调度服务器与运行任务的服务器之间能够有效的交互运行时信息。实现负载均衡可以通过监测每台运行服务器的任务负载并动态的调整各个服务器的负载来实现。但是动态的调整服务器的负载状态也需要耗用一定的计算资源。为了获得更好的调度效果,H-SWEB提出了层级调度解决办法,每台服务器在收到客户端的请求后都判断自己的负载状态是否能够提供服务,如果能提供服务,则处理请求,否则先自己的下层服务器转发处理请求。这种解决方案虽然能够使集群的负载处于一个合理的状态,但是对有SESSION性质的请求,这样的处理在同步数据时存在不足。虽然处理负载均衡和SESSION数据的同步有多种解决办法,但是目前还没有出现并广泛应用的将之融合统一的方案,本发明为这种融合提出合理的模型和简洁有效的算法。

发明内容
本发明针对现有独立使用负载均衡和SESSION数据同步技术的不足和缺陷,提出了一种基于任务运行服务器真实负载数据并有机融合负载均衡和SESSION数据同步的解决方案。本发明提出融合负载均衡和SESSION数据同步的系统架构,基于此架构,可实现以服务器的真实负载状态为基准进行任务调度,并在调度端跟踪SESSION的运行轨迹,降低SESSION数据同步的计算消耗,并在服务器节点宕机时做到无缝切换,不丢失原有SESSION已计算数据,避免新建SESSION带来的计算消耗。本发明采用的技术方案是一种集群环境下请求会话保持与调度的方法,该方法包括以下步骤
1)目标服务器负载信息的获取
使用MS来获取目标服务器的状态,MS是整个系统目标服务器的性能监测中心,通过接收运行在目标服务器上的PMR定时发送的CPU、1/0、NETWORK、DISK运行状态信息,从而为KSS提供整个集群的负载信息;
2)KSS对服务请求的调度方法
通过请求数据中的SESSION ID项判断服务请求是否具有SESSION性质,对不同性质的请求采用不同的调度策略
2.I)对没有SESSION性质的服务请求的调度根据MS所提供的所有目标服务器的实时负载信息,选择一台负载最低的服务器作为运行任务的服务器;进行服务器负载调度的必要条件包括
(1)MS能够绘制全部服务器的负载信息状态;
(2)PMR能够对目标服务器的运行状态进行准确测量,并定时向MS提供;
(3)MS能接受目标服务器的各种运行时数据,计算出各个服务器的负载值,并排序。2. 2)对于有SESSION性质的服务请求的调度首先判断请求信息中SESSI0NID项的数据是否为0,如果为0,则为首次建立SESSION的情形,接入服务器需要生成一个唯一的SESSI0NID,并将该ID发送给服务请求端,数据继续传递给调度与映射服务器,调度与映射服务器运行首次调度策略选择一个目标服务器处理请求,并记录该服务器和SESSION ID的映射关系;同时选择另外一台负载次低的目标服务器为SESSION备份对象服务器;如果SESSI0NID项的数据项非0,则是已有SESSION性质的服务请求,KSS则据该SESSI0NID检索相应的目标服务器来处理请求;KSS需要能够识别服务请求是否有SESSION性质,对有SESSION性质的服务,需要能够将该SESSION后继的请求保持到同一目标服务器;需要能够将该SESSION的运行时数据备份在某台服务器上,KSS中维护SESSION与其备份服务器的映射关系。基于对目标服务器运行时真实负载数据进行监控,从而得到个服务器准确的负载信息,KSS初始调度总能选择负载最低服务器来完成用户请求的处理;对有SESSION性质的请求,KSS在初始调度后总能将后继请求保持到该服务器;KSS维护SESSION与其备份数据的映射关系,从而能使整个集群具有高可用性。3) SESSION数据不是在所有的目标服务器之间广播,而是选择一台或者两台服务器做数据的有限备份4) KSS服务器拥有SEESSION数据备份对应的信息,能够在某一目标服务器崩溃的时候,用备份数据恢复该SESSION,并建立新的备份。本发明专利实现的是一种集群环境下实现SESSION保持与调度的解决方案,由高性能网络接入服务器AS,调度与映射服务器KSS,SESSION存储与备份服务SDSBS,心跳模块HB,监测模块MS,性能测量报告模块PMR等主要模块组成。对于具有SESSION性质并且是首次建立连接的情形,服务请求先到接入服务器,此时请求信息中SESSI0NID项的数据为0,接入服务器需要生成一个唯一的SESSI0NID,并
将该ID发送给服务请求端,下次的请求要识别该ID,即需要在请求信息中的SESSI0NID项中填写该ID值。然后进行协议解析和分类处理,并传递给调度与映射服务器,调度与映射服务器将SESSI0NID作为KEY建立一个键值;同时调度与映射服务器运行首次调度策略选择一个服务器作为目标服务器TS,该服务器的IP地址被建立为VALUE值,调度与映射服务器存储(KEY,VALUE)到自己进程的嵌入式数据库(EDB)中,并将该请求发送到IP地址为VALUE目标服务器中去。首次调度策略的内容是监测模块会根据运行在每台服务器上的性能测量报告模块定时发送的服务器负载值所建立的服务器负载状态表中的数据选择一台负载最低的服务器作为该请求的运行服务器,同时选择另外一台次低的目标服务器为SESSION备份对象服务器。对于已有SESSION性质的服务请求,即请求项中SESSI0NID不为零的请求,则据该SESSI0NID首先到内嵌数据库中去检索,检索到相应的目标服务器并发送该服务请求给目标服务器,这种方式降低了系统的整体开销。同时各个目标服务器定时将运行时SESSION数据写入到热备的SESSION备份对象服务器的SESSION存储库中,这样即为系统提供了高可靠性性质。由于本发明专利使用SEDA请求处理方式(Staged Event Driven Architecture)作为业务处理层,所以具有很高的速度和并发处理能力,可以大大的提高整个集群的吞吐量。因为配置了 SESSION映射调度KSS和SESSION存储与备份SDSBS模块,所以能够实现会话的保持与调度,降低SESSION数据广播所带来的影响性能问题。因为SDSBS模块的存在,如果正在提供服务的目标服务器发生了宕机事故,但是其备份存储的SESSION依然存在,这时MS监测到该服务器已经发生宕机故障,会发送请求给调度与映射服务器KSS,KSS会根据其存储的数据得出那些SESSI0NID对应于那台备份服务器,对于后继的请求会由这些拥有SESSION备份数据的目标服务器去完成余下的处理任务,这一点对用户来讲是透明的。从而实现了整个系统的高可靠运行。处理后的请求在返回给KSS模块,KSS上传给AS,由AS返回给终端请求用户。由于监测模块MS服务器的存在,从而使得SESSION调度服务器能够实时的监测到下层目标服务器TS的CPU、MEM、I0、DISK的运行时状态,从而选择合适的TS运行请求服务。同时,若MS发现TS的持续运行状态超过一定的阀值,能够将运行在TS上的服务以线性递减方式关闭,并将计算任务转移到他对应的有SESSION备份的服务器,从而使相应的服务获得及时的响应。并且TS提供的监控服务能提供整个系统运行时状态监控的完整报表。服务器之间通过“心跳”协议进行交互,并且运行在浮动IP之上,当主服务器(MASTER)宕机时,可以由另外一台从服务器(SLAVE)无缝切换进行不间断服务。
有益效果本发明专利可以极大的降低集群服务器中SESSION复制的数据量,整体提升整个集群服务的性能、可靠性及可监测性,并且组件配置合理,运行稳定,是一种通用的SESSION保持与调度的高效解决方案。


图I为本发明所述的集群环境下请求会话保持与调度系统架构 图2为本发明所述的服务请求的会话保持及调度策略算法流程 图3为本发明所述的运行时会话数据的存储算法流程 图4为本发明所述的某台TS宕机的迁移算法流程图。
具体实施方式
下面结合附图和具体实施方式
对本发明作进一步说明
如图I所示一种集群环境下请求会话保持与调度的方法,该方法包括以下步骤
1)目标服务器负载信息的获取
使用MS来获取目标服务器的状态,MS是整个系统目标服务器的性能监测中心,通过接收运行在目标服务器上的PMR定时发送的CPU、I/O、NETWORK、DISK运行状态信息,从而为KSS提供整个集群的负载信息;
2)KSS对服务请求的调度方法
通过请求数据中的SESSION ID项判断服务请求是否具有SESSION性质,对不同性质的请求采用不同的调度策略
2.I)对没有SESSION性质的服务请求的调度根据MS所提供的所有目标服务器的实时负载信息,选择一台负载最低的服务器作为运行任务的服务器;进行服务器负载调度的必要条件包括
(1)MS能够绘制全部服务器的负载信息状态;
(2)PMR能够对目标服务器的运行状态进行准确测量,并定时向MS提供;
(3)MS能接受目标服务器的各种运行时数据,计算出各个服务器的负载值,并排序。2. 2)对于有SESSION性质的服务请求的调度首先判断请求信息中SESSI0NID项的数据是否为0,如果为0,则为首次建立SESSION的情形,接入服务器需要生成一个唯一的SESSI0NID,并将该ID发送给服务请求端,数据继续传递给调度与映射服务器,调度与映射服务器运行首次调度策略选择一个目标服务器处理请求,并记录该服务器和SESSION ID的映射关系;同时选择另外一台负载次低的目标服务器为SESSION备份对象服务器;如果SESSI0NID项的数据项非0,则是已有SESSION性质的服务请求,KSS则据该SESSI0NID检索相应的目标服务器来处理请求;KSS需要能够识别服务请求是否有SESSION性质,对有SESSION性质的服务,需要能够将该SESSION后继的请求保持到同一目标服务器;需要能够将该SESSION的运行时数据备份在某台服务器上,KSS中维护SESSION与其备份服务器的映射关系。基于对目标服务器运行时真实负载数据进行监控,从而得到个服务器准确的负载信息,KSS初始调度总能选择负载最低服务器来完成用户请求的处理;对有SESSION性质的请求,KSS在初始调度后总能将后继请求保持到该服务器;KSS维护SESSION与其备份数据的映射关系,从而能使整个集群具有高可用性。3) SESSION数据不是在所有的目标服务器之间广播,而是选择一台或者两台服务器做数据的有限备份
4) KSS服务器拥有SEESSION数据备份对应的信息,能够在某一目标服务器崩溃的时候,用备份数据恢复该SESSION,并建立新的备份。如图2所示服务请求的会话保持及调度策略。当大量的服务请求到达主服务器后,对没有SESSION性质的服务请求据监测模块感知的数据选择一负载最低的服务器来完成该次请求。对有SESSION数据的请求,若是首次服务请求,接入服务器会为其生成一个唯 一 KEY值作为为SESSI0NID,保持与调度服务器根据调度策略从机群中选择负载状态最低的TS作为目标服务器,将该服务器的IP记为VALUE值,将数据(SESSIONID,VALUE)存入到自己的内嵌数据库EDB中,同时选择一负载次低的目标服务器作为SESSION备份服务器,并记录该SESSI0NID与其的关系,同时将该关系发送给处理本次请求的服务器。然后将请求下发给目标服务器。若是已经建立SESSION的请求在到来时,则根据内嵌数据库中存贮的VALUE将该请求发给上次进行运算的服务器,从而将SESSION保持到上次进行处理的服务器上,从而降低了整个系统的运行负载。如图3所示运行时会话数据的存储。服务请求在目标服务器TS中进行运算时,当每个SESSION的阶段性运算完成时,将SESSION数据更新存储到SDSBS中,同时将该SESSION数据依据保持与调度服务器所指定的备份关系同步存储到另外一台从服务器中。如图4所示某台TS宕机的迁移。当某台目标服务器TS在运算过程中发生了宕机事故,性能监测模块MS会失去正常的接收性能测量报告者PMR发送的负载信息,预示MS检测到宕机事故。MS将该TS的IP加入到告警信息中发送给KSS,KSS根据其记录的备份信息将运行在该服务器上的SESSION标记到其它服务器上,再下次收到同一 SESSION的服务器请求时,则由有SESSION备份数据的目标服务器来进行运算。主服务器宕机事故时服务的迁移。主服务器和从服务器通过HB单元运行的心跳协议彼此通信获得运行时彼此的状态信息。当从服务器通过心跳协议发现主服务器发生宕机时候,浮动IP自动将请求指向从服务器,从服务器唤醒内部AS、KSS、MS等服务单元,主动开始对服务请求进行处理,所有服务切换是无缝的。从服务器接管服务后发出告警信息。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
权利要求
1.ー种集群环境下请求会话保持与调度的方法,其特征在于该方法包括以下步骤 1)目标服务器负载信息的获取 使用MS来获取目标服务器的状态,MS是整个系统目标服务器的性能监测中心,通过接收运行在目标服务器上的PMR定时发送的CPU、I/O、NETWORK、DISK运行状态信息,从而为KSS提供整个集群的负载信息; 2)KSS对服务请求的调度方法 通过请求数据中的SESSION ID项判断服务请求是否具有SESSION性质,对不同性质的请求采用不同的调度策略 · 2.I)对没有SESSION性质的服务请求的调度根据MS所提供的所有目标服务器的实时负载信息,选择一台负载最低的服务器作为运行任务的服务器; 2.2)对于有SESSION性质的服务请求的调度首先判断请求信息中SESSIONID项的数据是否为0,如果为0,则为首次建立SESSION的情形,接入服务器需要生成ー个唯一的SESSIONID,并将该ID发送给服务请求端,数据继续传递给调度与映射服务器,调度与映射服务器运行首次调度策略选择ー个目标服务器处理请求,并记录该服务器和SESSION ID的映射关系;同时选择另外一台负载次低的目标服务器为SESSION备份对象服务器;如果SESSIONID项的数据项非0,则是已有SESSION性质的服务请求,KSS则据该SESSIONID检索相应的目标服务器来处理请求; 3)SESSION数据不是在所有的目标服务器之间广播,而是选择一台或者两台服务器做数据的有限备份 4)KSS服务器拥有SEESSI0N数据备份对应的信息,能够在某一目标服务器崩溃的时候,用备份数据恢复该SESSION,并建立新的备份。
2.根据权利要求I所述的ー种集群环境下请求会话保持与调度的方法,其特征在于所述步骤2. I)中,进行服务器负载调度的必要条件包括 (1)MS能够绘制全部服务器的负载信息状态; (2)PMR能够对目标服务器的运行状态进行准确测量,并定时向MS提供; (3)MS能接受目标服务器的各种运行时数据,计算出各个服务器的负载值,并排序。
3.根据权利要求I所述的ー种集群环境下请求会话保持与调度的方法,其特征在于所述步骤2. 2)中,KSS需要能够识别服务请求是否有SESSION性质,对有SESSION性质的服务,需要能够将该SESSION后继的请求保持到同一目标服务器;需要能够将该SESSION的运行时数据备份在某台服务器上,KSS中维护SESSION与其备份服务器的映射关系。
4.根据权利要求I所述的ー种集群环境下请求会话保持与调度的方法,其特征在于所述步骤2)中,基于对目标服务器运行时真实负载数据进行监控,从而得到个服务器准确的负载信息,KSS初始调度总能选择负载最低服务器来完成用户请求的处理;对有SESSION性质的请求,KSS在初始调度后总能将后继请求保持到该服务器;KSS维护SESSION与其备份数据的映射关系。
全文摘要
发明公开了一种集群环境下请求会话保持与调度的方法,主要包含调度与数据备份同步的系统架构、服务请求的会话保持及调度策略、运行时会话数据的存储算法、目标服务器宕机及调度服务器宕机的切换策略。基于服务器真实负载进行任务调度并融合SESSION数据同步的系统架构引入调度与映射服务、监控服务、SESSION存储与备份服务等多个处理服务,实现实时监控目标服务器CPU、I/O、NETWORK、DISK的负载状态从而在首次调度时选出负载最低的服务器来处理请求,后继的同一SESSION请求会被保持到同一目标服务器,SESSION数据会在另外的服务器上备份而非在集群中广播。
文档编号H04L29/06GK102685237SQ201210151219
公开日2012年9月19日 申请日期2012年5月16日 优先权日2012年5月16日
发明者东方, 何宪英, 宋爱波, 罗军舟 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1