本发明涉及计算机系统维护技术领域,尤其涉及一种分布式维护系统的更新系统及方法。
背景技术:
随着高性能计算系统的发展,主机系统包含的节点数量倍增,以维护节点为主要任务的分布式维护系统的规模也在一起增加。分布式维护系统主要由大量的维护一级代理与二级代理构成,如何高效可靠地完成这些维护代理的文件和程序的更新并降低节点更换的管理成本是大规模分布式维护系统面临的难题。
维护一级代理与二级代理上的文件和程序在主机系统搭建的过程中有大量的更新需求,传统的更新做法是从管理结点启动大量线程将需要更新的文件传到目标维护代理群上,这种做法的优点是实现简单,缺点是受限于管理结点的可用线程数量、计算负载以及网络负载,极易导致网络堵塞、单线程执行时间长,因此只适用于较少的目标,如果更新目标规模庞大,就只能将所有目标拆分为多个更新任务串行执行,导致时间成本成倍增长。此外,在实践过程中节点需要经常更换,为及时更新新上节点,必须要掌握新上节点的情况,也极大增加管理和时间成本。大量的时间、管理开销也增加了出错概率,加大了后期维护的难度。
技术实现要素:
本发明的目的是针对现有技术的缺陷,提供了一种分布式维护系统的更新系统及方法,缩减大规模分布式维护系统的更新时间,降低更新时的网络负载和节点管理成本,提高更新可靠性。
为了实现以上目的,本发明采用以下技术方案:
一种分布式维护系统的更新系统,包括管理结点、一级代理、二级代理,所述管理结点上部署一级代理源库和二级代理源库,所述一级代理上部署二级代理镜像库;所述一级代理源库和二级代理源库均包括第一文件服务器和更新客户端,所述镜像库包括第二文件服务器、第一服务程序、第一更新执行体程序和第一守护程序,所述二级代理上部署第二服务程序、第二更新执行体程序和第二守护程序;
所述更新客户端,用于当一级代理源库和/或二级代理源库被修改后,生成新的库校验文件;
所述第一文件服务器,用于为一级代理提供库校验文件下载服务;
所述第二文件服务器,用于为直属的二级代理提供库校验文件下载服务;
所述第一服务程序,用于执行所述更新客户端发来的各种命令并返回结果;
所述第二服务程序,用于执行第一服务程序发来的各种命令并返回结果;
所述第一更新执行体程序、第二更新执行体程序,用于将需要更新的文件下载到本地,或将需要更新的程序保存为待更新文件;
所述第一守护程序、第二守护程序,用于守护进程,并检测是否有待更新程序的文件。
进一步的,所述一级代理与管理结点上部署一级代理源库同步;所述二级代理与一级代理上部署的二级代理镜像库同步。
进一步的,包括主动更新和被动更新;所述主动更新包括一级代理主动更新、二级代理主动更新,所述一级代理主动更新包括更新二级代理镜像库、更新一级代理;所述被动更新包括一级代理被动更新、二级代理被动更新。
进一步的,所述一级代理主动更新中更新二级代理镜像库包括步骤:
s11.获取一级代理源库中的库校验文件,若无损,则执行步骤s12;
s12.将所述获取的库校验文件中的每一个文件对应的校验值和第一更新执行体程序下载到本地的每一个更新文件对应的校验值进行比较,若不一致,则执行步骤s13;
s13.获取一级代理源库中与不一致更新文件相对应的文件,并保存为缓存文件;
s14.将所述缓存文件中每一个文件对应的校验值与获取的库校验文件中的每一个文件对应的校验值进行比较,若一致,则将缓存文件覆盖所述不一致更新文件相对应的文件;
s15.生成保存标志文件。
进一步的,所述一级代理主动更新中更新一级代理包括步骤:
s21.获取一级代理源库中的库校验文件,若无损,则执行步骤s22;
s22.将所述获取的库校验文件中的每一个文件对应的校验值和第一更新执行体程序下载到本地的每一个更新文件对应的校验值进行比较,若不一致,则执行步骤s23;
s23.获取一级代理源库中与不一致更新文件相对应的文件,并保存为缓存文件;
s24.将所述缓存文件中每一个文件对应的校验值与获取的库校验文件中的每一个文件对应的校验值进行比较,若一致,则所述缓存文件为待覆盖文件;
s25.判断所述待覆盖文件是否为程序,若不是,则将待覆盖文件覆盖所述不一致更新文件相对应的文件;若是,则通过第一守护程序覆盖不一致更新文件相对应的文件,并重新启动程序。
进一步的,所述二级代理主动更新包括步骤:
s31.获取二级代理源库中的库校验文件,若无损,则执行步骤s32;
s32.将所述获取的库校验文件中的每一个文件对应的校验值和第二更新执行体程序下载到本地的每一个更新文件对应的校验值进行比较,若不一致,则执行步骤s33;
s33.获取二级代理源库中与不一致更新文件相对应的文件,并保存为缓存文件;
s34.将所述缓存文件中每一个文件对应的校验值与获取的库校验文件中的每一个文件对应的校验值进行比较,若一致,则所述缓存文件为待覆盖文件;
s35.判断所述待覆盖文件是否为程序,若不是,则将待覆盖文件覆盖所述不一致更新文件相对应的文件;若是,则通过第二守护程序覆盖不一致更新文件相对应的文件,并重新启动程序。
进一步的,所述被动更新包括步骤:
s41.获取库校验文件,并判断所述获取的库校验文件为一级代理源库中的库校验文件还是二级代理源库中的库校验文件;
s42.若为一级代理源库中的库校验文件,则所述第一服务程序接收更新客户端发送的更新命令,并执行所述更新命令,生成更新结果并返回更新结果,执行步骤s45;
s43.若为二级代理源库中的库校验文件,则请求第一服务程序更新二级代理镜像库,并生成更新结果,并执行步骤s44;
s44.所述第一服务程序将更新客户端发送的更新命令发送至直属的第二服务程序,所述直属的第二服务程序执行第一服务程序发来的更新命令,生成更新结果并返回更新结果,执行步骤s45;
s45.显示结果并退出。
与现有技术相比,本发明能够极大减少全机维护系统的更新时间以及管理结点的计算负载,同时避免更新时的网络堵塞;新上节点的文件同步无需人工干预,减少管理成本;保障维护代理的文件完整性。
附图说明
图1是实施例一提供的一种分布式维护系统的更新系统结构图;
图2是实施例二提供的一级代理主动更新中的更新二级代理镜像库流程图;
图3是实施例二提供的一级代理主动更新中的更新一级代理流程图;
图4是实施例二提供的二级代理主动更新的方法流程图;
图5是实施例三提供的被动更新流程图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
本发明的目的是针对现有技术的缺陷,提供了一种分布式维护系统的更新系统及方法。
实施例一
一种分布式维护系统的更新系统,如图1所示,包括管理结点、一级代理、二级代理,其特征在于,所述管理结点上部署一级代理源库和二级代理源库,所述一级代理上部署二级代理镜像库;所述一级代理源库和二级代理源库均包括第一文件服务器和更新客户端,所述镜像库包括第二文件服务器、第一服务程序、第一更新执行体程序和第一守护程序,所述二级代理上部署第二服务程序、第二更新执行体程序和第二守护程序。
在本实施例中,构建包含源库(位于管理结点)和镜像库(位于一级代理)的分级多库结构。
分级多库结构基于分布式维护系统呈树形结构,如图1所示,管理结点上部署维护一级代理库(保存最新一级代理的文件和程序)和二级代理库(保存最新二级代理文件和程序)两个源库;一级代理上部署二级代理镜像库(与管理结点上的二级代理库同步)。
在本实施例中,建立源库的方法是在管理结点上部署第一文件服务器和更新客户端程序,其中,第一文件服务器为一级代理提供文件下载服务;更新客户端用于在源库被修改之后生成新的库校验文件,并提供被动更新命令给系统管理员。
建立镜像库的方法是在一级代理上部署第二文件服务器、第一服务程序、第一更新执行体程序和第一守护程序。其中,第二文件服务器为其直属二级代理提供文件下载服务;第一服务程序用于执行所述更新客户端发来的各种命令并返回结果,如更新一级代理自身或需要转发给直属二级代理的命令;第一更新执行体程序用于将需要更新的文件下载到本地,或将需要更新的程序保存为待更新文件;第一守护程序除了守护进程,还用于检测是否有程序的待更新文件,若有,则将待更新文件覆盖原文件,并重启程序。
二级代理是维护系统树的叶子节点,部署着第二服务程序、第二更新执行体和第二守护程序,第二服务程序用于执行一级代理服务程序发来的各种命令并返回结果,如更新二级代理自身或获取更新执行体程序的执行结果;第二更新执行体程序用于将需要更新的文件下载到本地,或将需要更新的程序保存为待更新文件;第二守护程序除了守护进程,还用于检测是否有程序的待更新文件,若有,则将待更新文件覆盖原文件,并重启程序。
在本实施例中,第二更新执行体程序与第一更新执行体程序的作用类似,第二守护程序与第一守护程序的作用类似。
在本实施例中,一级代理与管理结点上部署一级代理源库同步;二级代理与一级代理上部署的二级代理镜像库同步。
每次更改源库内容后,由更新客户端生成库校验文件,此文件包含库校验文件里所有文件的校验值。每次一级代理向管理结点上的一级代理源库同步或者二级代理向直属二级代理镜像库同步之前,先下载库校验文件,检查库校验文件无损之后逐个比对库文件校验值是否变化,有变化的文件才会被更新,进而减小大规模更新对网络的压力;校验失败的更新文件不会覆盖原文件,以保证文件完整性。
本实施例使用这套分级并行更新机制后,能够极大减少全机维护系统的更新时间以及管理结点的计算负载,同时避免更新时的网络堵塞。
实施例二
本实施例提供的一种基于分布式维护系统更新系统的更新方法与实施例一的不同之处在于:
本实施例公开一种分布式维护系统的主动更新方法,其中,主动更新包括一级代理主动更新、二级代理主动更新;一级代理主动更新包括更新二级代理镜像库、更新一级代理。
如图2所示为一级代理主动更新中的更新二级代理镜像库,一级代理启动时自动更新二级代理镜像库;如图3所示为一级代理主动更新中的更新一级代理,即向一级代理源库同步自身。
一级代理主动更新方法是将第一更新执行体程序添加到一级代理的系统启动脚本中,上机舱时能够自动运行,主动向一级代理源库获取变动的文件,无需人工干预,减少了管理成本。
一级代理在系统启动时运行两次第一更新执行体程序,第一次运行第一更新执行体程序更新镜像库,包括步骤:
s11.获取一级代理源库中的库校验文件,若无损,则执行步骤s12;
s12.将所述获取的库校验文件中的每一个文件对应的校验值和第一更新执行体程序下载到本地的每一个更新文件对应的校验值进行比较,若不一致,则执行步骤s13;
s13.获取一级代理源库中与不一致更新文件相对应的文件,并保存为缓存文件;
s14.将所述缓存文件中每一个文件对应的校验值与获取的库校验文件中的每一个文件对应的校验值进行比较,若一致,则将缓存文件覆盖所述不一致更新文件相对应的文件;
s15.生成保存标志文件。
具体为,第一更新执行体程序运行时先检测自身在全机中所处的位置,明确在一级代理源库的位置,然后删除保存标志文件,并从一级代理源库获取库校验文件,检查库校验文件无损后,逐个比对库校验文件中的每一个文件对应的校验值和本地文件的校验值,如果发现校验值不一致的文件,就从一级代理源库获取相应的文件,并将其保存为缓存文件,再将此缓存文件的校验值和库校验文件中的校验值进行比对,比对一致再将缓存文件覆盖原文件。对于校验值比对失败的文件就删除缓存文件,每一次更新失败的原因都会记录在日志文件中,方便排查故障。二级代理镜像库同步完成后,生成保存标志文件。
第二次运行第一更新执行体程序同步一级代理自身,包括步骤:
s21.获取一级代理源库中的库校验文件,若无损,则执行步骤s22;
s22.将所述获取的库校验文件中的每一个文件对应的校验值和第一更新执行体程序下载到本地的每一个更新文件对应的校验值进行比较,若不一致,则执行步骤s23;
s23.获取一级代理源库中与不一致更新文件相对应的文件,并保存为缓存文件;
s24.将所述缓存文件中每一个文件对应的校验值与获取的库校验文件中的每一个文件对应的校验值进行比较,若一致,则所述缓存文件为待覆盖文件;
s25.判断所述待覆盖文件是否为程序,若不是,则将待覆盖文件覆盖所述不一致更新文件相对应的文件;若是,则通过第一守护程序覆盖不一致更新文件相对应的文件,并重新启动程序。
具体为,第一更新执行体程序运行时先检测自身在全机中所处的位置,明确在一级代理源库的位置,然后从一级代理源库获取库校验文件,检查库校验文件无损后,逐个比对库校验文件中的每一个文件对应的校验值和本地文件的校验值,如果发现校验值不一致的文件,就从一级代理源库获取相应的文件,并保存为缓存文件,再将此缓存文件的校验值和库校验文件中的校验值进行比对,比对一致再将缓存文件重命名为待覆盖文件;接着判断待覆盖文件是否为程序,若不是程序类文件,就将待覆盖文件覆盖掉原文件;若是程序类文件,则通过第一守护程序覆盖不一致更新文件相对应的文件,并重新启动程序。对于校验值比对失败的文件就删除缓存文件,每一次更新失败的原因都会记录在日志文件中,方便排查故障。第一守护程序同时监护多个程序,一旦发现受监护程序的待覆盖文件,就会将原文件对应的进程关闭,并将缓存文件覆盖原文件,然后检查受监护进程是否有多开的情况,如果有则全部关闭,最后如果没有查到受监护的进程,就再启动它,这样就保证了文件的完整性。
如图4所示为二级代理主动更新的方法,即二级代理启动时等待其直属二级代理镜像库更新结束后自动向镜像库同步。
二级代理的主动更新方法是将第二更新执行体程序添加到二级代理的系统启动脚本中,上机舱时能够自动运行,主动向二级代理镜像库获取变动的文件,无需人工干预,减少了管理成本。包括步骤:
s31.获取二级代理源库中的库校验文件,若无损,则执行步骤s32;
s32.将所述获取的库校验文件中的每一个文件对应的校验值和第二更新执行体程序下载到本地的每一个更新文件对应的校验值进行比较,若不一致,则执行步骤s33;
s33.获取二级代理源库中与不一致更新文件相对应的文件,并保存为缓存文件;
s34.将所述缓存文件中每一个文件对应的校验值与获取的库校验文件中的每一个文件对应的校验值进行比较,若一致,则所述缓存文件为待覆盖文件;
s35.判断所述待覆盖文件是否为程序,若不是,则将待覆盖文件覆盖所述不一致更新文件相对应的文件;若是,则通过第二守护程序覆盖不一致更新文件相对应的文件,并重新启动程序。
具体为,第二更新执行体程序运行时先检测自身在全机中所处的位置,明确二级代理源库的位置,然后检测二级代理源库是否有标志文件,没有就等待,有就获取库校验文件,检查库校验文件无损后,逐个比对库校验文件中的每一个文件对应的校验值和本地文件的校验值,如果发现校验值不一致的文件,就从直属镜像库获取相应的文件,并保存为缓存文件,再将此缓存文件的校验值和库校验文件中的校验值进行比对,比对一致再将缓存文件重命名为待覆盖文件;接着判断所述待覆盖文件是否为程序,若不是程序类文件,就将待覆盖文件覆盖掉原文件;若是程序类文件,则通过第二守护程序覆盖不一致更新文件相对应的文件,并重新启动程序。对于校验值比对失败的文件就删除缓存文件,每一次更新失败的原因都会记录在日志文件中,方便排查故障。第二守护程序同时监护多个程序,一旦发现受监护程序的待覆盖文件,就会将原文件对应的进程关闭,并将缓存文件覆盖原文件,然后检查受监护进程是否有多开的情况,如果有则全部关闭,最后如果没有查到受监护的进程,就再启动它,这样就保证了文件的完整性。
本实施例使用这套分级并行更新机制后,能够极大减少全机维护系统的更新时间以及管理结点的计算负载,同时避免更新时的网络堵塞;且新上节点的文件同步无需人工干预,减少管理成本;且保障维护代理的文件完整性。
实施例三
本实施例提供的一种基于分布式维护系统更新系统的更新方法与实施例二的不同之处在于:
本实施例公开一种分布式维护系统的被动更新方法,如图5所示为被动更新流程图,包括步骤:
s41.获取库校验文件,并判断所述获取的库校验文件为一级代理源库中的库校验文件还是二级代理源库中的库校验文件;
s42.若为一级代理源库中的库校验文件,则所述第一服务程序接收更新客户端发送的更新命令,并执行所述更新命令,生成更新结果并返回更新结果,执行步骤s45;
s43.若为二级代理源库中的库校验文件,则请求第一服务程序更新二级代理镜像库,并生成更新结果,并执行步骤s44;
s44.所述第一服务程序将更新客户端发送的更新命令发送至直属的第二服务程序,所述直属的第二服务程序执行第一服务程序发来的更新命令,生成更新结果并返回更新结果,执行步骤s45;
s45.显示结果并退出。
被动更新与主动更新模式不同在于更新时机不是系统启动,而是由系统管理员指定。每当管理结点的一级代理源库和/或二级代理源库被修改并准备做维护系统的大规模更新时,执行更新客户端的程序,生成库校验文件,更新客户端根据更新对象类型的不同调整更新方式。
如果对象类型是一级代理,客户端与一级代理服务程序建立网络链接,由第一服务程序启动第一更新执行体程序并获取结果;
如果对象类型是二级代理,就先与所有相关的一级代理程序建立网络链接,请求一级代理更新二级代理镜像库,并即时获取结果,然后与各个一级代理的第一服务程序建立网络链接并发送更新请求,由一级代理的第一服务程序将请求转发给所有直属二级代理的第二服务程序,二级代理的第二服务程序将是否开始更新的结果返回给一级代理的第一服务程序,一级代理的第一服务程序再将结果返回给更新客户端,更新客户端显示结果后再次获取更新结果并显示,并可由系统管理员再次发起查询更新进展命令查看更新进展。
本实施例使用这套分级并行更新机制后,能够极大减少全机维护系统的更新时间以及管理结点的计算负载,同时避免更新时的网络堵塞;且新上节点的文件同步无需人工干预,减少管理成本;且保障维护代理的文件完整性。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。