一种集群服务器容灾系统、方法和服务器节点与流程

文档序号:12622510阅读:294来源:国知局
一种集群服务器容灾系统、方法和服务器节点与流程

本发明涉及云数据处理技术领域,尤其涉及一种集群服务器容灾系统、方法和服务器节点。



背景技术:

容灾机制是BOSS(Business&Operation Support System,业务运营支撑系统)运营系统故障应急必备技术之一,容灾机制按BOSS系统的计算架构不同而有所差异。现有BOSS系统,基于传统的单服务器单/多进程(线程)计算架构,其容灾方案按故障级别分为程序级和主机级容灾机制。对于程序级容灾,一般采用crontab(定期任务)按频率监控内存活动进程表,对于监控到的异常停止进程,采用重启进程的方案进行容灾;对于主机级容灾,在进程主机异常宕机时,采用HA切换的方式将进程切换到备用程序主机,并启动该备用应急主机和进程,在可忍受时间内重启进程,以继续提供服务。

随着集群计算技术的发展,基于集群的BOSS运营系统必然是取代现有单高性能主机的一种选择,基于集群的BOSS运营系统,为保护现有硬件投资,面临着同时部署在少数高性能主机和大量普通机器的情形,其特点是AIX和LINUX异构程序系统共存、少数的高性能节点和大量的普通节点同时以计算云的形式提供服务。

由于集群云计算的特定是跨机器多节点同时参与计算,而现有集群计算平台并未提供可靠的进程容错机制,如何保证基于集群的BOSS运营系统的进程计算的稳定性和避免主机节点实效对服务的影响,成为现有技术中亟待解决的技术问题之一。



技术实现要素:

本发明实施例提供一种集群服务器容灾系统、方法和服务器节点,用以提供一种基于集群服务器的容灾机制,保证集群服务器的运行稳定性和服务可靠性。

本发明实施例提供一种集群服务器容灾系统,包括多个监控节点和多个工作节点,其中:

所述监控节点用于运行第一监控进程,所述第一监控进程按照预设的第一监控频率监控存储的监控进程列表中的各监控进程是否异常;以及在监控到至少一个监控进程异常时,执行异常监控进程恢复;以及所述第一监控进程按照预设的第二频率监控存储的工作进程列表中各工作进程是否异常;在监控到至少一个工作进程异常时,执行异常工作进程恢复;

所述工作节点用于运行工作进程,所述工作进程根据存储的监控进程列表按照所述第二监控频率向所述监控进程列表中的各监控进程上报自身的服务状态。

所述监控节点,具体用于在监控到至少一个监控进程异常时,通过所述第一监控进程向监控进程列表中的其它第二监控进程发送运行状态检测消息,根据检测结果记录异常的监控进程标识;确定记录的异常监控进程标识对应的监控进程异常。

所述监控节点,具体用于通过所述第一监控进程根据监控进程列表包含的各监控进程对应的监控进程序号由小到大的顺序组成消息传递环链,并发起消息传递;如果在预设时长内未接收到传递的消息时,则确定监控到至少一个监控进程异常。

所述监控节点,具体用于根据异常监控进程的数量,通过所述第一监控进程从集群服务器节点列表中选择除监控节点列表包含的监控节点以外的、相应数量的工作节点分别创建一个监控进程用于替换异常监控进程;并通过所述第一监控进程接收各新创建的监控进程返回的监控进程序号及其所在节点的节 点标识;根据接收到的监控进程序号及节点标识分别更新监控进程列表和监控节点列表;并通知监控进程列表中各监控进程更新其存储的监控进程列表;以及通知工作进程列表中各工作进程更新其存储的监控进程列表。

所述监控节点,具体用于通过所述第一监控进程分别向被选择出的工作节点运行的任一工作进程发送监控进程创建请求;

所述被选择出的工作节点,用于通过自身运行、接收到所述监控进程创建请求的工作进程创建该工作进程的子进程,并向创建的子进程转发所述监控进程创建请求;所述子进程根据接收到的监控进程创建请求,标识自身进程类别为监控进程;并通过所述工作进程向所述第一监控进程返回新创建监控进程序号及所在节点的节点标识。

所述监控节点,具体用于在监控到至少一个工作进程异常时,通过所述第一监控进程根据存储的工作进程列表向各工作进程发送服务状态检测消息;根据检测结果记录异常的工作进程标识;确定记录的异常工作进程标识对应的工作进程异常。

所述监控节点,具体用于在确定出异常工作进程之后,通过所述第一监控进程探测异常工作进程所在工作节点是否异常;并根据探测结果记录异常的工作节点标识;根据异常工作进程的数量,从集群服务器节点列表中选择除异常工作节点以外的、相应数量的节点分别创建一个工作进程用于替换异常工作进程;并通过所述第一监控进程接收各新创建的工作进程返回的工作进程序号及其所在工作节点的工作节点标识;根据接收到的工作进程序号及工作节点标识分别更新存储的工作进程列表和工作节点列表;并通知监控进程列表中各监控进程更新其存储的工作进程列表;以及通知工作进程列表中各工作进程更新其存储的工作进程列表。

所述监控节点,具体用于通过所述第一监控进程分别向被选择出的节点运行的任一进程发送监控进程创建请求;

所述被选择的节点用于通过自身运行、接收到所述工作进程创建请求的进 程创建该进程的子进程,并向创建的子进程转发所述工作进程创建请求;所述子进程根据接收到的工作进程创建请求,标识自身进程类别为工作进程;并通过接收到所述工作进程创建请求的进程向所述第一监控进程返回新创建工作进程序号及所在节点的节点标识。

本发明实施例提供一种集群服务器容灾方法,包括:

监控节点通过自身运行的第一监控进程分别按照预设的第一监控频率和第二监控频率监控存储的监控进程列表中的各监控进程和存储的工作进程列表中各工作进程是否异常;

在监控到至少一个监控进程异常时,执行异常监控进程恢复;以及

在监控到至少一个工作进程异常时,执行异常工作进程恢复。

优选地,按照以下过程确定至少一个监控进程异常:

所述监控节点在监控到至少一个监控进程异常时,通过所述第一监控进程向监控进程列表中的其它第二监控进程发送运行状态检测消息;

根据检测结果记录异常的监控进程标识;

确定记录的异常监控进程标识对应的监控进程异常。

优选地,按照以下方法确定监控到至少一个监控进程异常:

所述监控节点通过所述第一监控进程根据监控进程列表包含的各监控进程对应的监控进程序号由小到大的顺序组成消息传递环链,并发起消息传递;

如果在预设时长内未接收到传递的消息时,则确定监控到至少一个监控进程异常。

优选地,按照以下过程执行异常监控进程恢复:

所述监控节点根据异常监控进程的数量,通过所述第一监控进程从集群服务器节点列表中选择除监控节点列表包含的监控节点以外的、相应数量的工作节点分别创建一个监控进程用于替换异常监控进程;并

通过所述第一监控进程接收各新创建的监控进程返回的监控进程序号及其所在节点的节点标识;

根据接收到的监控进程序号及节点标识分别更新监控进程列表和监控节点列表;

通知监控进程列表中各监控进程更新其存储的监控进程列表;以及

通知工作进程列表中各工作进程更新其存储的监控进程列表。

优选地,按照以下过程确定至少一个工作进程异常:

所述监控节点在监控到至少一个工作进程异常时,通过所述第一监控进程根据存储的工作进程列表向各工作进程发送服务状态检测消息;

根据检测结果记录异常的工作进程标识;

确定记录的异常工作进程标识对应的工作进程异常。

优选地,按照以下过程执行异常工作进程恢复:

所述监控节点在确定出异常工作进程之后,通过所述第一监控进程探测异常工作进程所在工作节点是否异常;并

根据探测结果记录异常的工作节点标识;以及

根据异常工作进程的数量,从集群服务器节点列表中选择除异常工作节点以外的、相应数量的节点分别创建一个工作进程用于替换异常工作进程;

所述监控节点通过所述第一监控进程接收各新创建的工作进程返回的工作进程序号及其所在工作节点的工作节点标识;

根据接收到的工作进程序号及工作节点标识分别更新存储的工作进程列表和工作节点列表;并

通知监控进程列表中各监控进程更新其存储的工作进程列表;以及

通知工作进程列表中各工作进程更新其存储的工作进程列表。

本发明实施例提供一种服务器节点,包括:

监控单元,用于通过运行于所述服务器节点的第一监控进程分别按照预设的第一监控频率和第二监控频率监控存储的监控进程列表中的各监控进程和存储的工作进程列表中各工作进程是否异常;

异常处理单元,用于在监控到至少一个监控进程异常时,执行异常监控进 程恢复;以及在监控到至少一个工作进程异常时,执行异常工作进程恢复。

所述监控单元,具体用于在监控到至少一个监控进程异常时,通过所述第一监控进程向监控进程列表中的其它第二监控进程发送运行状态检测消息;根据检测结果记录异常的监控进程标识;确定记录的异常监控进程标识对应的监控进程异常。

所述监控单元,具体用于通过所述第一监控进程根据监控进程列表包含的各监控进程对应的监控进程序号由小到大的顺序组成消息传递环链,并发起消息传递;如果在预设时长内未接收到传递的消息时,则确定监控到至少一个监控进程异常。

所述异常处理单元,包括:

第一选择子单元,用于根据异常监控进程的数量,通过所述第一监控进程从集群服务器节点列表中选择除监控节点列表包含的监控节点以外的、相应数量的工作节点分别创建一个监控进程用于替换异常监控进程;

第一接收子单元,用于通过所述第一监控进程接收各新创建的监控进程返回的监控进程序号及其所在节点的节点标识;

第一更新子单元,用于根据接收到的监控进程序号及节点标识分别更新监控进程列表和监控节点列表;

第一通知子单元,用于通知监控进程列表中各监控进程更新其存储的监控进程列表;以及通知工作进程列表中各工作进程更新其存储的监控进程列表。

所述监控单元,具体用于在监控到至少一个工作进程异常时,通过所述第一监控进程根据存储的工作进程列表向各工作进程发送服务状态检测消息;根据检测结果记录异常的工作进程标识;确定记录的异常工作进程标识对应的工作进程异常。

所述异常处理单元,包括:

探测子单元,用于在确定出异常工作进程之后,通过所述第一监控进程探测异常工作进程所在工作节点是否异常;并根据探测结果记录异常的工作节点 标识;

第二选择子单元,用于根据异常工作进程的数量,从集群服务器节点列表中选择除异常工作节点以外的、相应数量的节点分别创建一个工作进程用于替换异常工作进程;

第二接收子单元,用于通过所述第一监控进程接收各新创建的工作进程返回的工作进程序号及其所在工作节点的工作节点标识;

第二更新子单元,用于根据接收到的工作进程序号及工作节点标识分别更新存储的工作进程列表和工作节点列表;

第二通知子单元,用于通知监控进程列表中各监控进程更新其存储的工作进程列表;以及通知工作进程列表中各工作进程更新其存储的工作进程列表。

本发明实施例提供的集群服务器容灾系统、方法和服务器节点,监控节点通过自身运行的第一监控进程按照第一监控频率监控自身存储的监控进程列表中的每一监控进程是否发生异常,以及按照第二监控频率监控自身存储的工作进程列表中的各共组进程是否发生异常,以及在监控到至少一个监控进程异常时,执行监控进程恢复,在监控到至少一个工作进程异常时,执行工作进程恢复,通过上述过程,实现了集群服务器的异常监控及恢复,保证了集群服务器的运行稳定性和服务可靠性。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例中,集群服务器容灾系统的结构示意图;

图2为本发明实施例中,监控进程和工作进程的消息传递示意图;

图3为本发明实施例中,集群服务器初始化流程示意图;

图4为本发明实施例中,工作进程进行服务状态检测及发现异常工作进程时进行工作进程恢复的实施流程示意图;

图5为本发明实施例中,集群服务器容灾方法的实施流程示意图;

图6为本发明实施例中,确定至少一个监控进程异常的实施流程示意图;

图7为本发明实施例中,确定监控到至少一个监控进程异常的实施流程示意图;

图8为本发明实施例中,执行异常监控进程恢复的实施流程示意图;

图9为本发明实施例中,确定至少一个工作进程异常的实施流程示意图;

图10为本发明实施例中,执行异常工作进程恢复的实施流程示意图;

图11为本发明实施例中,服务器节点的结构示意图。

具体实施方式

为了提供一种基于集群服务器的容灾机制,保证集群服务器的运行稳定性和服务可靠性,本发明实施例提供了一种集群服务器容灾系统、方法和服务器节点。

以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

如图1所示,为本发明实施例提供的集群服务器容灾系统的结构示意图。较佳的,具体实施时,可以将集群服务器包含的每一服务器节点按照节点性能(如可以为节点的计算能力)从高到低进行排列,建立服务器节点列表,在此基础上,建立两个节点列表,分别为:监控节点列表和工作节点列表。其中,可以从服务器节点列表中依次选择M(M为大于等于1的正整数)个服务器节点作为监控节点,将所有的服务器节点添加至工作节点列表中作为工作节点。 当集群服务器系统运行后,对于在监控节点列表的服务器节点创建1个监控进程,对于在工作节点列表中的服务器节点创建1个或者多个工作进程。这样,在监控节点列表中的服务器节点将仅运行一个监控进程,而在工作节点列表中的服务器节点将至少运行一个工作进程,还有部分服务器节点其既在监控节点列表中又在工作节点列表中,其将运行一个监控进程和至少一个工作进程。

本发明实施例提供的集群服务器容灾系统的工作原理如下:集群服务器系统运行后,将运行进程划分为监控进程组和工作进程组,其中,监控进程组的监控进程按指定频率监控工作进程组的工作进程运行状态和服务状态,同时监控其它监控进程的运行状态,计算进程组的进程负责业务逻辑处理,并保存当前任务列表,按指定频率向监控进程组的监控进程上报自身的运行状态和服务状态,如图2所示,监控进程和工作进程可做切换。

在集群服务器系统初始化时,按各服务器节点性能列表启动节点和进程进行工作,对于同时在监控节点列表和工作节点列表的机器,至少生成2个进程;对于仅在工作节点列表的机器,至少生成一个进程,标记系统状态为初始化状态;取每一监控节点的最小序列号(rank)进程作为当前监控节点的监控进程,标记进程类别为监控进程类,注册到监控进程组中,监控进程按进程序列号从小到大组成链式消息传递结构,测试所有监控进程工作正常、所在节点工作正常,而后规定监控进程组的第一监控频率。收集所有非监控进程,标记进程类别为工作进程,注册到工作进程组里,测试所有工作进程工作正常、所在节点工作正常,而后按第二监控频率规定工作组的报告频率(与第一监控频率错开时间)。建立起来的监控进程组按频率广播通知工作进程组的每个进程保存监控进程组的监控进程列表,同时提供工作进程的统一报告频率(即第二监控频率),工作进程按此频率设置时钟,时钟按该值休眠,在指定时间被系统唤醒后,向保存在进程本地的监控进程列表的每一个监控进程报告服务状况。集群服务器容灾系统初始化完成,标记系统状态为工作状态。

为了更好的理解本发明实施例,以下对集群服务器系统的初始化过程进行 详细说明。

首先设置好集群服务器系统使用hydra进程管理器启动并管理进程,设置错误处理器为MPI_ERRORS_RETURN,以在进程失效的情况下通信访问是否返回进程失效错误码,具体的,如图3所示,可以包括以下步骤:

S31、进程序列号最小的进程获取各进程的进程序列号及各进程所在节点的节点标识。

具体的,按配置文件启动集群服务器系统,生成全部进程,通过进程序列号最小(rank=0)的进程发起MonitorProcessGroupCreate调用,开始组建监控进程组,MonitorProcessGroupCreate发送获取进程序列号请求到所有服务器节点。所有服务器节点上运行的进程接收到获取进程序列号请求后,返回其进程序列号、所在节点的节点标识给来访进程。

S32、进程序列号最小的进程确定监控进程。

具体的,MonitorProcessGroupCreate根据获取的进程序列号,向监控节点列表中每个监控节点上运行的、最小进程序列号对应的进程发送标记该进程为监控进程类别的请求;目标进程(即各监控节点上运行的最小进程序列号对应的进程)接收到修改进程类别请求后,修改其进程类别为监控进程,并向rank=0的进程返回进程类别信息。

S33、进程序列号最小的进程生成监控进程列表并通知各监控进程存储监控进程列表。

具体的,rank=0的进程生成监控进程列表并存储,并向监控进程组的每个进程发送保存监控进程列表的信息,监控进程列表中的每个进程接收到信息后存储监控进程列表。

S34、进程序列号最小的进程组建工作进程。

rank=0的进程发起ServiceProcessGroupCreate调用,开始组建工作进程组。ServiceProcessGroupCreate获取不在监控进程列表中的进程序列号及其所在服务器节点的节点标识。根据获取的进程序列号,向对应的进程发送标记该进程 为工作进程类别的请求;目标进程(即获取的进程序列号对应的进程)接收到修改进程类别请求后,修改其进程类别为工作进程,并向rank=0的进程返回进程类别信息。

S35、进程序列号最小的进程生成工作进程列表并通知各进程存储工作进程列表以及通知各工作进程存储监控进程列表。

rank=0的进程生成工作进程列表并存储,发送保存工作进程列表给所有进程(包括监控进程和工作进程),每个目标进程接收到工作进程列表存储。rank=0的进程向工作进程列表中的每一工作进程发送保存监控进程列表的信息,每个目标进程(即每一工作进程)接收到信息后存储监控进程列表。

S36、进程序列号最小的进程分别通知监控进程和工作进程其对应的监控频率。

rank=0的进程向监控进程列表中的监控进程发送第一监控频率,监控进程列表中的监控进程按此频率进行监控进程服务检测;rank=0的进程向工作进程列表中的每一工作进程发送报告频率(即第二监控频率),工作进程列表中的工作进程按此频率设置报告频率;初始化过程结束,设定系统状态为工作状态,监控进程列表中的监控进程启动监控过程进行监控,工作进程列表中的工作进程启动计算过程提供业务服务。

在集群服务器系统的系统设计上,为工作进程设立一个时钟及其对应的信号处理函数,工作进程按第二监控频率(报告频率)值休眠,当时钟醒来时触发对应的信号处理函数;对于工作进程,信号处理函数驱动工作进程收集自身服务状态,发送给监控进程组中的每个监控进程,同时监控信息发送情况,若对所有监控进程的信息发送失败,写监控异常日志,返回继续工作,待时钟休眠至下一时段后继续尝试发送服务信息。

监控进程组按照设定的监控频率检查监控节点列表中每一监控节点的运行状况、监控进程自身的工作状态和工作进程的服务状态。监控进程组的每个监控进程按第一监控频率进行监控进程状态检测。在对监控进程进行状态监测 时,先置系统状态为监测进程组检测状态,按监控进程号序列给其它所有监控进程发送广播信息以证实自己所在服务器节点服务正常,同时接收监控进程组其它监控节点通过其自身运行的监控进程所发送的状态信息,若所有信息发送接收正常,监控进程检测完成,无异常;否则,若某些监控进程发送或接收信息异常,该监控进程保存监测到的异常监控进程序列号(rank)、所在节点的节点标识及异常原因,置本监控进程存储的监控进程列表中该监控进程状态为异常状态,待检测完所有其它监控进程,根据本进程保留的监控进程列表,向其中的正常监控进程(未被标记为异常监控进程的监控进程)发起监控进程组异常消息,此时状态正常的监控进程交换监控进程组信息,确认异常监控进程。对于异常监控进程,在监控进程列表中屏蔽,并从服务器节点列表中除监控节点列表包含的监控节点以外的服务器节点(即工作节点)中选择一工作节点加入监控节点列表生成新进程,设置新进程类别为监控进程,加入到监控进程列表中,更新监控进程组每个监控进程的本地监控节点列表、本地监控进程列表,向工作进程组中每一进程发送当前监控进程列表,同时写日志报警。最后,置系统状态为空闲状态。

监控进程组的每个监控进程定时检查工作进程的服务状态。工作进程的时钟按报告频率唤醒,向监控进程定时报告自身的工作进程序号(rank)、服务状态和所属节点及节点负载,若服务正常,发送正常服务信息,若异常,发送异常服务信息,若工作进程挂死,不能发送信息;监控进程接收工作进程所报告的信息,先置系统状态为工作组检测状态,对每一接收到的工作进程报告,刷新本地工作进程列表中当前工作进程信息,对于处于本地工作进程列表但超时没接收到报告信息的工作进程,监控进程主动发起进程状态探测,若无效,置其工作进程服务状态为无效;所有工作进程报告信息接收或探测完成之后,按工作进程报告中的节点负载均值更新工作节点列表中对应工作节点的负载状态。并和监控进程组中的其它所有监控进程交换各工作进程上报的信息,按同坐进程报告中的节点负载均值更新工作节点列表中对应工作节点的负载状态, 最终根据各工作节点的负载状态更新服务器节点性能列表;监控进程组中的其它所有监控进程交换各工作进程上报的信息,对于工作进程服务状态是异常的工作进程,监控进程主动发起其工作节点主机状态探测;若工作节点主机正常,通知所属工作节点清除该异常工作进程,各工作进程将其从工作进程组中排除,从服务器节点中选择一服务器节点,使用集群接口函数动态生成一个新的进程,标记该新进程类别为工作进程类,加入到工作进程列表中并发送所有节点;若对应工作节点主机失效,将该工作节点在服务器节点列表中屏蔽,同时在工作节点列表中屏蔽,更新工作节点列表并发送所有进程(包括监控进程和工作进程),以更新监控进程组和工作进程组中每一进程存储的工作进程列表;工作进程服务检测完成,置系统状态为空闲状态。

基于上述的工作原理,本发明实施例提供了一种集群服务器容灾系统,如图1所示,包括多个监控节点11和多个工作节点12,其中:

监控节点11用于运行第一监控进程,第一监控进程按照预设的第一监控频率监控存储的监控进程列表中的各监控进程是否异常;以及在确定至少一个监控进程异常时,执行异常监控进程恢复;以及第一监控进程按照预设的第二频率监控存储的工作进程列表中各工作进程是否异常;在确定至少一个工作进程异常时,执行异常工作进程恢复;

工作节点12用于运行工作进程,工作进程根据存储的监控进程列表按照所述第二监控频率向所述监控进程列表中的各监控进程上报自身的服务状态。

需要说明的是,具体实施时,由于部分服务器节点可能同时运行监控进程和工作进程,为了便于区分,本发明实施例中,在描述其执行监控进程功能时称之为监控节点,在描述其执行工作进程功能时称之为工作节点。

以下分别结合集群服务器系统进行监控过程和服务容灾恢复过程对本发明实施例的具体实施方式进行说明。

一、监控节点对监控进程进行运行状态检测的实施过程

当系统状态变更为工作状态时,初始化过程结束,监控进程列表中的监控 进程启动进入监控过程,工作进程列表中的工作进程启动进入计算过程,相互陪护,按照各自所在进程组的频率监控整个集群服务器系统的运行状态。

监控进程按第一监控频率发起监控进程状态检测,确保工作进程上报服务状态前,监控进程列表中的监控进程能正常工作。

具体的,监控节点用于通过第一监控进程根据监控进程列表包含的各监控进程对应的监控进程序号由小到大的顺序组成消息传递环链,并发起消息传递;如果在预设时长内未接收到传递的消息时,则确定监控到至少一个监控进程异常。在监控到至少一个监控进程异常时,第一监控进程向监控进程列表中的其它第二监控进程发送运行状态检测消息,根据检测结果记录异常的监控进程标识;确定记录的异常监控进程标识对应的监控进程异常。

较佳的,第一监控进程可以为监控进程列表中进程序列号最小的监控进程,则上述的监控节点是指该进程序列号最小的监控进程所在的服务器节点。

具体实施时,监控进程组中最小进程序列号对应的监控进程发起MonitorProcessGroupStatusCheck过程,MonitorProcessGroupStatusCheck组建消息链(按进程序列号从小到大排列),并发起消息传递,若消息能经过监控进程环链正常返回到最小进程序列号对应的监控进程,则可以确定监控进程列表中的所有监控进程正常,等待工作进程列表中的工作进程上报其服务状态。

如果消息环链式传递超时未返还到最小监控进程序列号,监控进程列表中最小进程号对应的监控进程发起MonitorProcessGroupRebuild过程,MonitorProcessGroupRebuild过程首先向监控进程列表中的每个监控进程顺序发送运行状态检测信息,若状态异常,将<异常监控进程的进程序列号,其所在监控节点的节点标识>按此格式加入状态异常监控进程列表中,重复此过程直至检测完监控进程组中其他所有监控进程状态。

在确定出异常监控进程之后,根据异常监控进程的数量,监控节点通过第一监控进程从集群服务器节点列表中选择除监控节点列表包含的监控节点以外的、相应数量的工作节点分别创建一个监控进程用于替换异常监控进程;并 通过所述第一监控进程接收各新创建的监控进程返回的监控进程序号及其所在节点的节点标识;根据接收到的监控进程序号及节点标识分别更新监控进程列表和监控节点列表;并通知监控进程列表中各监控进程更新其存储的监控进程列表;以及通知工作进程列表中各工作进程更新其存储的监控进程列表。

具体实施时,监控节点通过第一监控进程分别向被选择出的工作节点运行的任一工作进程发送监控进程创建请求。较佳的,监控节点可以通过第一监控进程向被选择出的工作节点上运行的、进程序列号最小的工作进程发送监控进程创建请求。被选择出的工作节点,用于通过自身运行、接收到监控进程创建请求的工作进程创建该工作进程的子进程,并向创建的子进程转发所述监控进程创建请求;该子进程根据接收到的监控进程创建请求,标识自身进程类别为监控进程;并通过该工作进程向第一监控进程返回新创建监控进程序号及所在节点的节点标识。

具体的,MonitorProcessGroupRebuild过程计算状态异常监控进程列表中的异常监控进程个数n,获取服务器列表中性能排名靠前且不在监控节点列表中的n个工作节点(具体实施时,也可以从除监控节点以外的工作节点中任意选择n个,本发明实施例对此不做限定),发送消息查询这n个节点的工作进程,获得工作进程序列号(rank)。MonitorProcessGroupRebuild向查询到的每个工作节点上进程序列号最小的工作进程发送动态监控进程创建请求。具体实施时,可以向选择出的工作节点上任一工作进程发送动态监控进程创建请求,本发明实施例对此不做限定。目标工作进程(即选择出的工作节点上进程序列号最小的工作进程)接收到监控进程创建请求后,使用MPI_Comm_spawn创建动态子进程,目标工作进程与新创建的子进程创建父子进程组间通信域连接,目标工作进程向该子进程转发监控进程创建请求,新创建的子进程标识自身进程类别为监控进程,设置状态为初始化状态;目标工作进程向MonitorProcessGroupRebuild返回<新动态创建的进程序列号,所在节点的节点标识,目标工作进程序列号,目标工作进程所在节点的节点标识>给 MonitorProcessGroupRebuild(其中,目标工作进程序列号是作为新创建的监控进程与原监控进程列表中的监控进程通信中转用的),MonitorProcessGroupRebuild将当前异常监控进程从监控进程列表中删除,同时添加新创建的监控进程到监控进程列表中,作为原异常监控进程的替换监控进程。MonitorProcessGroupRebuild重复上述过程,直至异常监控进程的替换进程全部创建完毕。

MonitorProcessGroupRebuild向所有进程(包括监控进程和工作进程)发送更新其存储新监控进程列表消息,其它进程接收到此消息后,更新自身存储的监控进程列表;MonitorProcessGroupRebuild向新增监控进程的父进程(即新增监控进程所在节点上运行的、进程序列号最小工作进程)发起更改该新增监控进程工作状态请求,目标工作进程(即新增监控进程所在节点上运行的、进程序列号最小工作进程)接收到请求后,首先向新增监控进程发送保存工作进程列表、监控进程列表和各服务器节点性能列表的请求,并向新增监控进程转发请求更改工作状态的请求,新增监控进程保存工作进程列表、监控进程列表和服务器节点性能列表,并设置自身的系统状态为工作状态,开始进行监控。当所有新增监控进程都进入工作状态后,监控进程状态恢复过程完成,可以正常接收工作进程列表中各工作进程的报告。

监控进程按预设的第一监控频率启动ServiceProcessReport过程,ServiceProcessReport过程收集自身的服务状态、系统资源状态,向自身的监控进程列表中的每一个监控进程发送报告消息,报告自身服务信息。

若监控进程直接或间接接收到工作进程列表中的工作进程的报告消息后,对每一个工作进程的消息,更新对应工作进程的服务状态、进程所在工作节点的性能状态,更新完所有工作进程的报告信息后,发送汇集监控信息消息给当前监控进程列表中进程序列号最小号的监控进程,最小进程序列号对应的监控进程加权各监控进程得到的各工作节点的性能,并据此重新排列服务器节点性能列表。

监控进程列表中最小进程序列号对应的监控进程发送消息给所有服务器节点,更新服务器节点性能列表,设定系统状态为工作状态,完成全监控过程。若上述步骤中发送异常,接收不到工作进程列表中某些工作进程的报告时,说明这些工作进程可能异常,需启动服务容灾恢复过程。

二、监控节点对工作进程进行服务状态检测的实施过程

具体实施时,监控进程在监控过程中发现某些工作进程没有按照预设的第二监控频率上报服务状态消息时,则说明这些工作进程或者其所在工作节点发生异常。具体的,监控节点,可以用于在监控到至少一个工作进程异常(即未接收到该至少一个工作进程上报的服务状态消息)时,可以通过第一监控进程根据存储的工作进程列表向各工作进程发送服务状态检测消息根据检测结果记录异常的工作进程标识;确定记录的异常工作进程标识对应的工作进程异常。在确定出异常工作进程之后,监控节点可以通过第一监控进程探测异常工作进程所在工作节点是否异常;并根据探测结果记录异常的工作节点标识;根据异常工作进程的数量,从集群服务器节点列表中选择除异常工作节点以外的、相应数量的节点分别创建一个工作进程用于替换异常工作进程;并通过所述第一监控进程接收各新创建的工作进程返回的工作进程序号及其所在工作节点的工作节点标识;根据接收到的工作进程序号及工作节点标识分别更新存储的工作进程列表和工作节点列表;并通知监控进程列表中各监控进程更新其存储的工作进程列表;以及通知工作进程列表中各工作进程更新其存储的工作进程列表。

其中,监控节点,可以用于通过第一监控进程分别向被选择出的节点运行的任一进程发送监控进程创建请求;被选择的节点用于通过自身运行、接收到所述工作进程创建请求的进程创建该进程的子进程,并向创建的子进程转发所述工作进程创建请求;该子进程根据接收到的工作进程创建请求,标识自身进程类别为工作进程;并通过接收到所述工作进程创建请求的进程向所述第一监控进程返回新创建工作进程序号及所在节点的节点标识。

具体的,如图4所示,对工作进程进行服务状态检测及发现异常工作进程时进行工作进程恢复可以包括以下步骤:

S41、监控进程列表中最小进程序列号对应的监控进程确定异常状态的工作进程。

监控进程列表中最小进程序列号对应的监控进程发起ServiceProcessGroupRebuild过程,ServiceProcessGroupRebuild首先向监控进程列表中所有监控进程发送消息,置所有监控进程为容灾恢复状态;接着向工作进程的每个进程顺序发送服务状态检测消息,若确定状态异常,按<异常工作进程的进程序列号,其所在工作节点的节点标识>格式加入状态异常工作进程列表,若异常工作进程所在工作节点异常,加入异常工作节点列表中,重复此过程直至检测完工作进程列表中所有工作进程状态。

S42、监控进程列表中最小进程序列号对应的监控进程选择服务器节点及该服务器节点上的某个进程作为创建新进程的代理启动进程。

ServiceProcessGroupRebuild过程计算状态异常工作进程列表中异常工作进程个数n,获取服务器节点性能列表中排名靠前且不在异常工作节点列表中的n个服务器节点,发送消息查询这n个节点的工作进程或监控进程,并选择最小进程序列号(rank)对应的进程(可能为工作进程也可能为监控进程)作为当前异常工作进程的代理动态启动进程。需要说明的是,具体实施时,也可以随机选择任一进程,本发明实施例对此不做限定。

S43、监控进程列表中最小进程序列号对应的监控进程通过代理启动进程生成异常工作进程的替换进程。

ServiceProcessGroupRebuild过程向查询到的每个异常工作进程的代理启动进程(即选择出的n个服务器节点上运行的、最小进程序列号(rank)对应的进程)发送工作进程创建请求,该代理启动进程接收到工作进程创建请求后,使用MPI_Comm_spawn创建动态子进程,代理启动进程与新创建的子进程创建父子进程组间通信域连接,代理启动进程转发进程序列号最小的监控进程发 送的工作进程创建请求,新创建的子进程标识进程类别为工作进程,设置子进程状态为初始化状态;代理启动进程向监控进程列表中最小监控进程序列号对应的监控进程返回<新动态创建的进程的进程序列号,所在节点的节点标识,代理启动进程的进程序列号,代理启动进程所在节点的节点标识>,其中,代理启动进程的进程序列号是作为新创建工作进程与原工作进程列表中的工作进程通信中转用的),ServiceProcessGroupRebuild将当前处理的异常工作进程从工作进程列表中删除,同时添加新创建的工作进程到工作进程列表中,作为原异常工作进程的替换进程。ServiceProcessGroupRebuild重复此过程,直至失效的工作进程的替换进程都建立起来。

S44、监控进程列表中最小进程序列号对应的监控进程通知所有进程存储新工作进程列表及通知新创建进程更改其工作状态。

ServiceProcessGroupRebuild向所有进程(包括工作进程和监控进程)发送保存新工作进程列表消息,其它进程接收到此消息后,更新存储的工作进程列表;ServiceProcessGroupRebuild通过代理启动进程向新增工作进程发送更改新工作进程的工作状态请求,代理启动进程接收到该请求后,首先向新能工作进程发送存储工作进程列表、监控进程列表和服务器节点性能列表的请求,并向新增工作进程转发更改其工作状态的请求,新增工作进程存储工作进程列表、监控进程列表和服务器节点性能列表,并设置自身的系统状态为工作状态,开始提供服务。当所有新工作进程都进入工作状态后,异常工作进程恢复过程结束,可以正常提供服务。

S45、监控进程列表中中最小进程序列号对应的监控进程更新系统状态。

容灾恢复过程结束,监控进程列表中中最小进程序列号对应的监控进程设定系统状态为工作状态。

本发明实施例提供的集群服务器容灾方法,针对基于集群计算框架的服务器系统在线容灾恢复,通过设立监控进程列表和工作进程列表,提供监控进程和工作进程的异常处理方法,且分别提供了异常监控进程和异常工作进程在线 恢复方法,能够在线恢复集群服务器系统的服务能力,实现了系统容灾与服务一体化设计和运行,提高了集群服务器的运行稳定性和服务可靠性。

基于同一发明构思,本发明实施例中还提供了一种集群服务器容灾方法和服务器节点,由于上述方法及设备解决问题的原理与集群服务器容灾系统相似,因此上述方法及设备的实施可以参见系统的实施,重复之处不再赘述。

如图5所示,为本发明实施例提供的集群服务器容灾方法的实施流程示意图,可以包括以下步骤:

S51、监控节点通过自身运行的第一监控进程分别按照预设的第一监控频率和第二监控频率监控存储的监控进程列表中的各监控进程和存储的工作进程列表中各工作进程是否异常。

S52、在确定至少一个监控进程异常时,执行异常监控进程恢复;在确定至少一个工作进程异常时,执行异常工作进程恢复。

具体实施时,在步骤S52中,可以按照图6所示的过程确定至少一个监控进程异常:

S61、所述监控节点在监控到至少一个监控进程异常时,通过所述第一监控进程向监控进程列表中的其它第二监控进程发送运行状态检测消息;

S62、根据检测结果记录异常的监控进程标识;

S63、确定记录的异常监控进程标识对应的监控进程异常。

其中,S61中,可以按照图7所示的流程确定监控到至少一个监控进程异常:

S71、所述监控节点通过所述第一监控进程根据监控进程列表包含的各监控进程对应的监控进程序号由小到大的顺序组成消息传递环链,并发起消息传递;

S72、如果在预设时长内未接收到传递的消息时,则确定监控到至少一个监控进程异常。

具体实施时,在确定至少一个监控进程异常时,可以按照图8所示的流程 执行异常监控进程恢复:

S81、所述监控节点根据异常监控进程的数量,通过所述第一监控进程从集群服务器节点列表中选择除监控节点列表包含的监控节点以外的、相应数量的工作节点分别创建一个监控进程用于替换异常监控进程;

S82、通过所述第一监控进程接收各新创建的监控进程返回的监控进程序号及其所在节点的节点标识;

S83、根据接收到的监控进程序号及节点标识分别更新监控进程列表和监控节点列表;

S84、通知监控进程列表中各监控进程更新其存储的监控进程列表;以及通知工作进程列表中各工作进程更新其存储的监控进程列表。

具体实施时,步骤S52中,可以按照图9所示的流程确定至少一个工作进程异常:

S91、所述监控节点在监控到至少一个工作进程异常时,通过所述第一监控进程根据存储的工作进程列表向各工作进程发送服务状态检测消息;

S92、根据检测结果记录异常的工作进程标识;

S93、确定记录的异常工作进程标识对应的工作进程异常。

具体实施时,在确定至少一个工作进程异常时,可以按照图10所示的流程执行异常工作进程恢复:

S101、所述监控节点在确定出异常工作进程之后,通过所述第一监控进程探测异常工作进程所在工作节点是否异常;

S102、根据探测结果记录异常的工作节点标识;

S103、根据异常工作进程的数量,从集群服务器节点列表中选择除异常工作节点以外的、相应数量的节点分别创建一个工作进程用于替换异常工作进程;

S104、所述监控节点通过所述第一监控进程接收各新创建的工作进程返回的工作进程序号及其所在工作节点的工作节点标识;

S105、根据接收到的工作进程序号及工作节点标识分别更新存储的工作进程列表和工作节点列表;

S106、通知监控进程列表中各监控进程更新其存储的工作进程列表;以及通知工作进程列表中各工作进程更新其存储的工作进程列表。

如图11所示为本发明实施例提供的服务器节点的结构示意图,可以包括:

监控单元111,用于通过运行于所述服务器节点的第一监控进程分别按照预设的第一监控频率和第二监控频率监控存储的监控进程列表中的各监控进程和存储的工作进程列表中各工作进程是否异常;

异常处理单元112,用于在确定至少一个监控进程异常时,执行异常监控进程恢复;以及在确定至少一个工作进程异常时,执行异常工作进程恢复。

其中,监控单元111,可以用于在监控到至少一个监控进程异常时,通过所述第一监控进程向监控进程列表中的其它第二监控进程发送运行状态检测消息;根据检测结果记录异常的监控进程标识;确定记录的异常监控进程标识对应的监控进程异常。

较佳的,监控单元111可以用于通过所述第一监控进程根据监控进程列表包含的各监控进程对应的监控进程序号由小到大的顺序组成消息传递环链,并发起消息传递;如果在预设时长内未接收到传递的消息时,则确定监控到至少一个监控进程异常。

具体实施时,异常处理单元112可以包括:

第一选择子单元,用于根据异常监控进程的数量,通过所述第一监控进程从集群服务器节点列表中选择除监控节点列表包含的监控节点以外的、相应数量的工作节点分别创建一个监控进程用于替换异常监控进程;

第一接收子单元,用于通过所述第一监控进程接收各新创建的监控进程返回的监控进程序号及其所在节点的节点标识;

第一更新子单元,用于根据接收到的监控进程序号及节点标识分别更新监控进程列表和监控节点列表;

第一通知子单元,用于通知监控进程列表中各监控进程更新其存储的监控进程列表;以及通知工作进程列表中各工作进程更新其存储的监控进程列表。

具体实施时,监控单元111,可以用于在监控到至少一个工作进程异常时,通过所述第一监控进程根据存储的工作进程列表向各工作进程发送服务状态检测消息;根据检测结果记录异常的工作进程标识;确定记录的异常工作进程标识对应的工作进程异常。

具体实施时,异常处理单元112,可以包括:

探测子单元,用于在确定出异常工作进程之后,通过所述第一监控进程探测异常工作进程所在工作节点是否异常;并根据探测结果记录异常的工作节点标识;

第二选择子单元,用于根据异常工作进程的数量,从集群服务器节点列表中选择除异常工作节点以外的、相应数量的节点分别创建一个工作进程用于替换异常工作进程;

第二接收子单元,用于通过所述第一监控进程接收各新创建的工作进程返回的工作进程序号及其所在工作节点的工作节点标识;

第二更新子单元,用于根据接收到的工作进程序号及工作节点标识分别更新存储的工作进程列表和工作节点列表;

第二通知子单元,用于通知监控进程列表中各监控进程更新其存储的工作进程列表;以及通知工作进程列表中各工作进程更新其存储的工作进程列表。

为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。

本发明实施例提供的集群服务器容灾系统、方法和服务器节点,监控节点通过自身运行的第一监控进程按照第一监控频率监控自身存储的监控进程列表中的每一监控进程是否发生异常,以及按照第二监控频率监控自身存储的工作进程列表中的各共组进程是否发生异常,以及在监控到至少一个监控进程异 常时,执行监控进程恢复,在监控到至少一个工作进程异常时,执行工作进程恢复,通过上述过程,实现了集群服务器的异常监控及恢复,保证了集群服务器的运行稳定性和服务可靠性。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1