1.一种面向大规模云数据中心的服务器协同监控方法,其基于服务器协同监控模型实现,服务器协同监控模型的主要部件包括监控服务器,消息路由器,数据服务器,消息队列,监控路由表,守护进程;其协同监控的方法包括如下步骤:步骤一:所有数据服务器依次相连构成单向环形拓扑结构,每个数据服务器都有前继服务器和后继服务器且受后继服务器监控,数据服务器发生故障而失效时,由其后继服务器负责将数据服务器的失效情况汇报监控服务器;
步骤二:当数据服务器加入系统时其服务器协同监控方法为:重新建立包含该新数据服务器的单向环形拓扑结构,监控服务器将新数据服务器加入系统的情况通告给任务调度器;
当单个数据服务器发生故障而失效时其服务器协同监控方法为:该数据服务器的后继服务器负责发现并将这个情况报告给监控服务器,重新建立排除该故障数据服务器的单向环形拓扑结构,监控服务器将该数据服务器故障的情况通告给任务调度器,并继续进行监控;
当成片数据服务器失效时其服务器协同监控方法为:由后继于这些成片失效数据服务器的第一个正常数据服务器来负责依次发现并依次将数据服务器失效的情况报告给监控服务器,重新建立排除该故障数据服务器的单向环形拓扑结构,监控服务器依次将所有数据服务器故障的情况通告给任务调度器,并继续进行监控。
2.根据权利要求1所述的一种面向大规模云数据中心的服务器协同监控方法,其步骤二中,当数据服务器加入系统时其服务器协同监控方法如下:步骤1:系统首先判断当前加入系统的数据服务器是首次加入系统还是重新加入系统;若数据服务器是首次加入系统时,将会通过守护进程与消息路由器连接,请求消息路由器为该服务器创建一个独立的心跳队列,然后该服务器周期性向该心跳队列发布心跳消息,系统中若曾经有N个数据服务器加入过系统,无论这些服务器目前是否在线,消息路由器上都将存在N个心跳队列,在后续阶段,服务器将会周期性向属于自己的心跳队列发布消息;若数据服务器是重新加入系统,则消息路由器已经有了该服务器首次加入系统时为其创建的心跳队列,则不必重新创建,服务器周期性向自己对应的心跳队列发布心跳消息;
步骤2:数据服务器主动向监控服务器汇报,具体的做法是向消息路由器发布一个主题为“登录”的消息包,该消息包被填入消息路由器上的全局监控队列中;
步骤3:监控服务器在初始化时已订阅该全局监控队列,当监控服务器获得“登录”消息包时,立刻从该消息包中提取所需监控的服务器信息(NID,IP,QID),将该信息填入监控服务器本地维护的监控路由表中,对监控路由表中的该服务器的后继服务器的相关记录进行修改,并将相关信息发送给该后继服务器,以重建单向环形网络拓扑。
步骤4:监控服务器还需要将DNm+1加入系统的情况通告给任务调度器,后续再有新任务时,任务调度器可选择分配任务给DNm。
3.根据权利要求2所述的一种面向大规模云数据中心的服务器协同监控方法,其步骤
3中的修改方法具体为:
步骤(1):设数据服务器DNm+1加入系统,监控服务器根据其“登录”消息包中的信息在监控路由表末尾为DNm+1新增一条记录,同时修改列表中的DN1记录对应的信息,如表2所示;添加数据服务器DNm+1的信息意味着将DNm+1插入至DN1和DNm之间,因此将原来的DN1的前继指针(PreNode,PreQID)信息(DNm,Qm)填入DNm+1记录的前继指针对应项中,然后修改DN1的前继指针为(DNm+1,Qm+1);
步骤(2):监控服务器将表中服务器DNm+1对应记录中的前继指针(DNm,Qm)按照DNm+1的IP地址再发送给服务器DNm+1;还将DN1对应记录中的修改后的前继指针信息(DNm+1,Qm+1)按照DN1的IP地址再发送给服务器DN1;
步骤(3):服务器DNm+1向消息路由器申请订阅标识为Qm的心跳队列,服务器DN1向消息路由器申请订阅标识为Qm+1的心跳队列;网络拓扑重建完成,原来的DN1和DNm之间的监控关系被修正为DN1和DNm+1之间、DNm+1和DNm之间的监控关系。
4.根据权利要求1一种面向大规模云数据中心的服务器协同监控方法,所述的步骤二中当单个数据服务器发生故障而失效时其服务器协同监控方法如下:步骤1:如果服务器DNi+1连续几个心跳周期没有从Qi所标识的心跳队列中获得消息,则立刻向消息路由器发布一个主题为“故障”的消息包,该消息包将被填入消息路由器上的全局监控队列;
步骤2:监控服务器在全局监控队列中获得“故障”消息包时,从该消息包提取到发出故障信息的服务器为DNi+1,再由本地的监控路由表中发现DNi+1的监控对象即前继服务器为DNi;
步骤3:监控服务器判定DNi故障,然后更新监控路由表:首先将表中服务器DNi对应记录中的(PreNode,PreQID)信息(DNi-1,Qi-1)提取出来以更新DNi+1对应记录中的(PreNode,PreQID)信息,然后将DNi对应的记录删除;
步骤4:监控服务器按照DNi+1的IP地址将更新后的(PreNode,PreQID)信息再发送给服务器DNi+1,服务器DNi+1向消息路由器申请订阅标识为Qi-1的心跳队列,此时DNi+1和DNi-1建立起监控关系,单向环形网络拓扑也重建完成;
步骤5:监控服务器还需要将DNi故障的情况通告给任务调度器,后续再有新任务时, 任务调度器将不会分配任务给DNi,除非DNi恢复正常在线状态并重新加入系统。
5.根据权利要求1一种面向大规模云数据中心的服务器协同监控方法,步骤二中当成片数据服务器失效时其服务器协同监控方法如下:步骤1:在服务器DNi+1向连续几个周期没有从Qi所标识的心跳队列中获得消息,则立刻向消息路由器发布一个主题为“故障”的消息包,该消息包将被填入消息路由器上的全局监控队列;
步骤2:监控服务器在全局监控队列中获得“故障”消息包时,从该消息包提取到发出故障信息的服务器为DNi+1,再由本地的监控路由表中发现DNi+1监控对象为DNi,则判定DNi故障;
步骤3:监控服务器更新监控路由表:首先将表中服务器DNi对应记录中的(PreNode,PreQID)信息(DNi-1,Qi-1)提取出来以更新DNi+1对应记录中的(PreNode,PreQID)信息,然后将DNi对应的记录删除;
步骤4:监控服务器按照DNi+1的IP地址将更新后的(PreNode,PreQID)信息再发送给服务器DNi+1,服务器DNi+1向消息路由器申请订阅标识为Qi-1的心跳队列,DNi+1和DNi-1建立起监控关系;
步骤5:监控服务器还需要将DNi故障的情况通告给任务调度器,后续再有新任务时,任务调度器将不会分配任务给DNi,除非DNi恢复正常在线状态并重新加入系统;
步骤6:由于DNi-1也因故障而失效了,因此同样的,在服务器DNi+1连续几个周期没有从Qi-1所标识的心跳队列中获得消息时,则又立刻向消息路由器发布一个主题为“故障”的消息包,该消息包将被填入消息路由器上的全局监控队列;
步骤7:监控服务器在全局监控队列中获得“故障”消息包时,从该消息包提取到发出故障信息的服务器为DNi+1,再由本地的监控路由表中发现DNi+1监控对象为DNi-1,则判定DNi-1故障;
步骤8:监控服务器更新监控路由表:首先将表中服务器DNi-1对应记录中的(PreNode,PreQID)信息(DNi-2,Qi-2)提取出来以更新DNi+1对应记录中的(PreNode,PreQID)信息,然后将DNi-1对应的记录删除;
步骤9:监控服务器按照DNi+1的IP地址将更新后的(PreNode,PreQID)信息再发送给服务器DNi+1,服务器DNi+1向消息路由器申请订阅标识为Qi-2的心跳队列,DNi+1和DNi-2建立起监控关系,单向环形网络拓扑也再次重建完成;
步骤10:监控服务器还需要将DNi-1故障的情况通告给任务调度器,后续再有新任务时,任务调度器将不会分配任务给DNi-1,除非DNi-1恢复正常在线状态并重新加入系统。