一种分布式集群系统及其实现方法

文档序号:7893856阅读:258来源:国知局
专利名称:一种分布式集群系统及其实现方法
技术领域
本发明涉及计算机集群技术领域,具体涉及一种分布式集群系统及其实现方法。
背景技术
目前的高性能计算集群规模都比较大,一个集群中包含上千个计算节点,在对这些计算节点管理和监控的过程中,需要通过分布式程序统一给这些节点发送请求,收集返回数据。传统的分布式系统大多采用java,C等语言开发,管理端程序和代理端程序作为单独的进程运行在节点的操作系统中。这种方式开发和测试的时间较长,例如,中等规模的程序需要几个月的时间。因此,对于一些比较紧急的需求来说,目前的分布式系统在时间上是无法满足的。并且,传统的公布式系统中程序作为单独的进程运行在各节点上,势必占用计算节点的系统资源,降低高性能计算的效率。另外,传统的公布式系统的扩展性也很差,如果需要在程序中添加新的功能,则需要对程序进行修改和重新编译,编译完成后需要在集群中重新部署新的程序。可见,整个扩展过程复杂,而且耗时。不能满足快速扩展功能的需求。

发明内容
本发明所要解决的技术问题是,提供一种分布式集群系统及其实现方法,以解决传统的公布式系统开发测试时间过长的问题。为了解决上述技术问题,本发明公开了一种分布式集群系统,包括一个部署在管理节点上的管理端功能模块,以及部署在各计算节点上的代理端功能模块,其中所述管理端功能模块,根据用户指令向各代理端功能模块发送用于获取计算节点的运行状态数据的http请求,以及接收各代理端功能模块返回的运行状态数据,对接收到的运行状态数据进行处理和显示;所述代理端功能模块,接收所述管理端功能模块发送的http请求,根据所收到的http请求读取本计算节点的运行状态数据,并将读取的运行状态数据返回给所述管理端功能模块。较佳地,上述系统中,所述http请求中包含有所要获取的计算节点的url,以及所要获取的计算节点的运行状态数据。较佳地,上述系统中,所述管理端功能模块由shell脚本实现。较佳地,上述系统中,所述代理端功能模块,由部署在计算节点的web服务器httpd中一组cgi脚本实现。
较佳地,上述系统中,其特征在于,所述代理端功能模块,由部署在计算节点的web服务器httpd中一组cgi脚本实现指将所述cgi脚本保存在管理节点的共享目录中,计算节点的web服务器httpd通过共享服务调用所述cgi脚本以实现所述代理端功能模块的操作。
本发明还公开了一种分布式集群系统的实现方法,包括管理节点根据用户指令向各计算节点发送用于获取计算节点的运行状态数据的http请求;接收到所述http请求的计算节点,根据所收到的http请求读取本计算节点的运行状态数据,并将读取的运行状态数据返回给所述管理节点;所述管理节点收集各计算节点返回的 运行状态数据,对收到的运行状态数据进行处理并显示给集群用户。较佳地,上述方法中,所述http请求中包含有所要获取的计算节点的url,以及所要获取的计算节点的运行状态数据。较佳地,上述方法还包括,在所述管理节点上部署一管理端功能模块,由该管理端功能模块向各计算节点发送用于获取各计算节点的运行状态数据的http请求,其中,所述管理端功能模块采用shell脚本实现。较佳地,上述方法还包括,在各计算节点上部署一代理端功能模块,由该代理端功能模块接收所述http请求,根据所收到的http请求读取本计算节点的运行状态数据,并将读取的运行状态数据返回给所述管理节点,其中,该代理端功能模块由部署在计算节点的web服务器httpd中一组cgi脚本实现。较佳地,上述方法中,所述代理端功能模块由部署在计算节点的web服务器httpd中一组cgi脚本实现指将所述cgi脚本保存在管理节点的共享目录中,计算节点的web服务器httpd通过共享服务调用所述cgi脚本以实现所述代理端功能模块的操作。本申请技术方案使可以在集群系统中快速部署管理端程序和代理端程序,并通过集群的管理节点对各个计算节点进行管理和监控,具有开发部署速度快,可扩展性强的优点,并针对高性能计算集群的监控和管理方面提高了工作效率。


图I为本实施例提供的分布式集群系统的物理拓扑示意图;图2为本实施例中实现的集群系统的测试结果图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,下文将结合附图对本发明技术方案作进一步详细说明。需要说明的是,在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。实施例I本案申请人考虑到,可以利用Linux系统自带的web服务器httpd,编写cgi脚本,并将脚本部署到各计算节点的web服务器中来构建分布式程序。这样,程序运行过程中,通过管理节点向各计算节点发送http (超文本传送协议)请求,以调用各计算节点cgi脚本,然后管理节点收集并汇总各计算节点的数据即可。此种方案与传统搭建分布式系统的方式相比,实现快速,程序稳定,调试简单等特点。适用于需要快速搭建分布式系统的情况。基于上述思想,本实施例提供一种分布式集群系统,该系统包括有一个管理端功能模块和多个代理端功能模块,其中,管理端功能模块部署在集群系统的管理节点上,各代理端功能模块分别部署在集群系统的计算节点上。管理端功能模块,根据用户指令向各代理端功能模块发送用于获取计算节点的运行状态数据的http请求,以及接收各代理端功能模块返回的运行状态数据,对接收到的运行状态数据进行处理并显示。其中,管理端功能模块可以由shell脚本实现。而管理端功能模块根据用户指令所发送的用于获取计算节点的运行状态数据的http请求中,包含有所要获取的计算节点的统一资源定位符(Uniform Resource Locator,url),以及所要获取的运行状态数据。这样,管理端功能模块通过url即可将上述http请求发送到对应的计算节点上。还要说明的是,本实施例中计算节点的运行状态数据包括涉及CPU运行的参数 (例如CPU利用率)、涉及内存运行的参数(例如内存使用率)以及涉及网络负载的参数(例如网络流量)等等。而管理端功能模块所发送的http请求中包含的所要获取的运行状态数据是计算节点的运行状态数据中的部分或全部,具体由用户指令来确实。当然也可以事先配置运行状态数据分组标识,http请求中包含分组标识,即表示要获取这一组运行状态数据。例如,将运行状态数据中涉及CPU运行的参数作为一组运行状态数据,并配置该组运行状态数据的标识,当http请求中包含了该组运行状态数据的标识,即表示该http请求所要获取的一组运行状态数据为涉及CPU运行的参数。代理端功能模块,接收管理端功能模块发送的http请求,解析接收到的http请求,根据http请求的具体内容读取本计算节点上的运行状态数据,并所读取的运行状态数据返回给管理端功能模块。代理端功能模块可由一系列完成特定功能的Cgi脚本组成,这些脚本部署在每一个计算节点的web服务器httpd中,当httpd接收到管理节点发送的http请求后,httpd会解析http请求的内容(即http请求中所包含的本计算节点的运行状态数据),并根据请求的具体内容执行相应的cgi脚本完成服务端的请求(即代理端功能模块读取http请求所要获取的运行状态数据),并返回操作结果数据(即读取到的运行状态数据)。优选方案中,为了省去在各计算节点上分别部署的操作,简化脚本的部署过程,可以在部署cgi脚本时,将这些脚本放在管理节点的共享目录中,这样,各计算节点通过共享目录读取cgi脚本即可,而无需在各计算节点上分别进行部署了。另外,此种方式,还可以简化代理端功能模块的维护操作,即只需要在管理节点上维护共享目录中的脚本文件即可实现所有计算节点上的代理功能模块的维护,而不需要在每一个计算节点上面都维护一份同样的脚本文件。实施例2本实施例介绍一种集群系统的实现方法,该方法包括如下步骤管理节点根据用户指令向各计算节点发送用于获取计算节点的运行状态数据的http请求;上述用于获取计算节点的运行状态数据的http请求中,包含有所要获取的计算节点的统一资源定位符(Uniform Resource Locator, url),以及所要获取的运行状态数据。这样,管理节点即可通过url将上述http请求发送到对应的计算节点上。还要说明的是,本实施例中计算节点的运行状态数据包括涉及CPU运行的参数(如CPU利用率)、涉及内存运行的参数(如内存使用率)以及涉及网络负载的参数(如网络流量)等等。而管理节点所发送的http请求中包含的所要获取的运行状态数据是计算节点的运行状态数据中的部分或全部,具体由用户指令来确实。当然也可以事先配置运行状态数据分组标识,http请求中包含分组标识,即表示要获取这一组运行状态数据。例如,将运行状态数据中涉及CPU运行的参数作为一组运行状态数据,并配置该组运行状态数据的标识,当http请求中包含了该组运行状态数据的标识,即表示该http请求所要获取的一组运行状态数据为涉及CPU运行的参数。
接收到上述http请求的计算节点,根据所收到的http请求读取本计算节点的运行状态数据,将所读取的运行状态数据返回给管理节点;管理节点收集各计算节点返回的运行状态数据,对收到的运行状态数据进行处理并显示给集群用户。上述操作中,管理节点的操作是由其上部署的管理端功能模块执行的,而此管理端功能模块可通过shell脚本实现。而计算节点上的操作是由其上部署的代理端功能模块块执行的,该代理端功能模块可以由部署在计算节点的web服务器httpd中一组cgi脚本实现。具体实现方式是,将所述cgi脚本保存在管理节点的共享目录中,计算节点的web服务器httpd通过共享服务调用所述cgi脚本。下面结合附图,对上述方法做进一步详细说明。图I所示为本实施例提供的集群系统的物理拓扑示意图,其中,管理节点和各计算节点位于机房内。管理节点和计算节点均采用Iinux操作系统。管理节点的主机名称为mu,各计算节点的名称分别为cul, cu2, cu3, cu4, cu5, cu6。而图I所示的集群系统的具体实现过程如下步骤I :在管理节点上创建共享目录;该步骤,在管理节点上面创建一个目录cgi-scripts,并把该目录通过NFS共享。修改管理节点mu的/etc/exports文件,添加如下语句/tmp/cgi-scripts *(rw, async, no_root_squash)启动mu上面的NFS服务。[rootimu ~]#service nfs start而对于各计算节点,贝U需要将共享目录挂载到本地的/var/www/cgi-bin目录,并启动httpd服务。[rooticul ]#mount_t nfs mu :/tmp/cgi-scripts /var/www/cgi-bin[rooticul ]#service httpd start步骤2 :编写代理端脚本,即在各计算节点上部署代理端功能模块。该步骤中,需要取得每个计算节点的负载情况和内存使用情况,在mu的共享目录中创建文件名称为load的脚本,脚本的内容如下# ! /bin/shechohostnamecat/proc/loadavg
free | grep " Mem "
修改脚本的权限,使其可以被执行。[rootOmu ]#chmod 7551oad步骤3 :编写管理端脚本,即在管理节点上部署管理端功能模块。在mu的创建管理脚本,分别向各计算节点发送http请求,请求调用load脚本。管理脚本的名称为getload. sh,脚本内容如下# ! /bin/shfor i in' seq I 6'docurl http://cu$i/cgi-bin/loaddone修改getload. sh的权限,使其可以被执行。[rootimu ]#chmod 755getload. sh步骤4 :测试,即管理节点通过管理端功能模块向各计算节点发送http请求,计算节点通过代理端功能模块接收http请求,进行相应的操作,并将操作结果数据返回给管理节点,管理节点收集各计算节点返回的数据,对收到的数据进行处理后进行显示。具体地,该步骤可以在mu上面执行getload. sh脚本,该脚本在运行过程中会向计算节点cul-cu6分别发送http请求,请求获取各计算节点的运行状态数据,本例中的状态数据主要是指负载情况和内存使用情况。计算节点cul-cu6的httpd服务接收到管理节点发送的http请求后,会执行load脚本,获取负载数据和内存使用数据,并把数据返回给mu,显示到mu的屏幕上。执行脚本的命令如下[rootimu ]#· /getload. sh命令执行完成后得到的结果如图2所示。至此,完成了代理端功能模块和管理端功能模块的创建和部署过程,并且通过执行管理端功能模块获取了各计算节点的负载情况和内存使用情况。如果需要获得计算节点其他的数据信息,只要编写相应的脚本就可以,功能扩展简单方便。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。从上述实施例可以看出,本申请技术方案具有开发时间短,安装部署方便的优点。只需要编写好shell脚本,放到共享目录中保存即可。另外,本申请技术方案扩展方便。需要给程序增加新的功能时,只需要编写相应的脚本,而无需对整个程序进行修改和重新编译。以上所述,仅为本发明的较佳实例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种分布式集群系统,其特征在于,该系统包括一个部署在管理节点上的管理端功能模块,以及部署在各计算节点上的代理端功能模块,其中 所述管理端功能模块,根据用户指令向各代理端功能模块发送用于获取计算节点的运行状态数据的http请求,以及接收各代理端功能模块返回的运行状态数据,对接收到的运行状态数据进行处理和显示; 所述代理端功能模块,接收所述管理端功能模块发送的http请求,根据所收到的http请求读取本计算节点的运行状态数据,并将读取的运行状态数据返回给所述管理端功能模块。
2.如权利要求I所述的系统,其特征在于, 所述http请求中包含有所要获取的计算节点的url,以及所要获取的计算节点的运行状态数据。
3.如权利要求2所述的系统,其特征在于, 所述管理端功能模块由shell脚本实现。
4.如权利要求1、2或3所述的系统,其特征在于, 所述代理端功能模块,由部署在计算节点的web服务器httpd中一组cgi脚本实现。
5.如权利要求4所述的系统,其特征在于,所述代理端功能模块,由部署在计算节点的web服务器httpd中一组cgi脚本实现指 将所述cgi脚本保存在管理节点的共享目录中,计算节点的web服务器httpd通过共享服务调用所述cgi脚本以实现所述代理端功能模块的操作。
6.—种分布式集群系统的实现方法,其特征在于,该方法包括 管理节点根据用户指令向各计算节点发送用于获取计算节点的运行状态数据的http请求; 接收到所述http请求的计算节点,根据所收到的http请求读取本计算节点的运行状态数据,并将读取的运行状态数据返回给所述管理节点; 所述管理节点收集各计算节点返回的运行状态数据,对收到的运行状态数据进行处理并显示给集群用户。
7.如权利要求5所述的方法,其特征在于, 所述http请求中包含有所要获取的计算节点的url,以及所要获取的计算节点的运行状态数据。
8.如权利要求7所述的方法,其特征在于,该方法还包括 在所述管理节点上部署一管理端功能模块,由该管理端功能模块向各计算节点发送用于获取各计算节点的运行状态数据的http请求,其中,所述管理端功能模块采用shell脚本实现。
9.如权利要求6、7或8所述的方法,其特征在于,该方法还包括 在各计算节点上部署一代理端功能模块,由该代理端功能模块接收所述http请求,根据所收到的http请求读取本计算节点的运行状态数据,并将读取的运行状态数据返回给所述管理节点,其中,该代理端功能模块由部署在计算节点的web服务器httpd中一组cgi脚本实现。
10.如权利要求9所述的方法,其特征在于,所述代理端功能模块由部署在计算节点的web服务器httpd中一组cgi脚本实现指 将所述cgi脚本保存在管理节点 的共享目录中,计算节点的web服务器httpd通过共享服务调用所述cgi脚本以实现所述代理端功能模块的操作。
全文摘要
本发明公开了一种分布式集群系统及其实现方法,涉及计算机集群技术领域。本发明公开的系统包括部署在管理节点上的管理端功能模块,以及部署在各计算节点上的代理端功能模块,其中管理端功能模块,根据用户指令向各代理端功能模块发送用于获取计算节点的运行状态数据的http请求,以及接收各代理端功能模块返回的运行状态数据,对接收到的运行状态数据进行处理显示;代理端功能模块,接收http请求,根据所收到的http请求读取本计算节点的运行状态数据,并将读取的运行状态数据返回给管理端功能模块。本发明还公开了一种分布式集群系统的实现方法。本申请技术方案具有开发部署速度快,可扩展性强的优点。
文档编号H04L12/26GK102638372SQ201210113460
公开日2012年8月15日 申请日期2012年4月17日 优先权日2012年4月17日
发明者邸双朋 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1