专利名称:一种基于HTTP协议的Linux集群监测系统及实现方法
技术领域:
本发明涉及信息技术领域,特别是一种基于HTTP协议的Li皿x集群监测系统及其 实现方法。
背景技术:
传统的所谓集群就是通过高性能网络将多台同构或异构的计算机连接起来并协 同完成特定任务的计算机机群,集群对外的表现为一个单一入口的高性能系统,其内部结 构对用户是透明的。Li皿x集群技术是基于开源Li皿x系统的高端技术,是Li皿x技术与网 络技术发展的产物。目前,Li皿x高性能集群中的节点服务器(简称节点)采用并行计算方 法,把一个海量的计算任务分解成若干个子任务,然后分配给各节点实施并行计算,并通过 标准化的消息传递接口 (PVM或MPI)实现各节点的同步和数据的汇集,从而实现可无限升 级的高性能计算。目前,Li皿x高性能集群逐步取代高性能巨型计算机,成为高性能计算领 域的最佳选择。随着因特网的高速增长,单台因特网服务器已无法满足人们的需求,Li皿x 负载均衡集群能够提供与节点个数成正比的负载能力,将系统的整体负载合理地分配到各 个节点上,使得每个节点都不会因为超负荷工作而崩溃,并且当对系统整体负载需求增大 时,可以通过增加节点,平滑地拓展集群的负荷能力。这类集群(Li皿x负载均衡集群)非 常适合提供大访问量的网络服务,已成为高性能因特网服务器最优解决方案。如Google的 搜索引擎就是由约2万台Li皿x节点构成负载均衡集群来提供24小时不间断的高速搜索 服务。 为了发挥Li皿x集群的作用,必须实时监测集群节点的运行情况,并根据节点的 负载情况进行合理调度。但是对于集群监测系统与实现方法还是一片空白。这样导致不 能很好的实时监测各节点的负载运行情况并进行合理调度并分配子任务,从而极大影响 Li皿x集群的处理能力。
发明内容
为了解决上述的技术问题,本发明的目的是提供一种能实时高效且可靠的基于 HTTP协议的Linux集群监测系统。 本发明的另一个目的是提供一种实现实时高效且可靠的基于HTTP协议的Linux 集群监测方法。 本发明解决其技术问题所采用的技术方案是 —种基于HTTP协议的Li皿x集群监测系统,其特征在于包括 —用于实时提取节点性能参数的CGI模块; —用于向所有节点发送HTTP请求的HTTP请求模块; —用于生成可控制定时器,并与HTTP请求模块结合使用的定时器模块; —用于根据CGI模块的返回,异步采集各节点性能参数数据,对HTTP请求失败进
行处理,同时结合专用算法,按照节点顺序集成所有节点各种实时的性能参数,为正确显示集群性能提供基础数据的HTTP异步采集数据模块。 进一步,还包括一展示集群实时性能,并提供用户对各种参数的控制或选择功能 的集群性能可视化模块。 进一步,所述集群性能可视化模块以直观的柱状图方式展示集群实时性能,并提 供用户对各种参数的控制或选择功能。 —种基于HTTP协议的Li皿x集群监测系统的实现方法,包括以下步骤 01、输入集群起始IP及有关参数; 02、绘图参数的初始化; 03、定时器模块启动定时器; 04、定时器是否超时,如果是超时则执行步骤0b,如果不是超时则执行步骤05 ; 05、 HTTP请求模块向所有节点发送HTTP请求; 06、 CGI模块远程执行CGI程序; 07、如果HTTP请求返回是出错则执行步骤08,如果HTTP请求返回没出错则执行步 骤09 ; 08、将节点性能参数充0,然后执行步骤Oa ; 09、 HTTP异步采集数据模块异步采集数据并分解出节点性能参数,然后执行步骤 Oa ; Oa、排序并生成节点参数记录; Ob、对性能参数进行归一化处理; 0c、定时器重新计时,执行步骤04。 进一步,所述步骤Ob与步骤Oc之间还包括步骤Od、集群性能可视化模块实现集 群性能参数的可视化。 进一步,所述步骤06包括以下步骤 11、计算内存占用率; 12、计算CPU使用率; 13、计算磁盘I0负载率; 14、计算网络输出流量; 15 、计算网络输入流量; 16、读取节点IP地址; 17 、以字符串形式按顺序输出上述数据。 进一步,所述步骤05包括以下步骤 21、调用定时器模块启动定时器; 22、按节点生成QHttp对象; 23、通过QHttp对象向所有节点发送HTTP请求; 24、调用HTTP异步采集数据模块接收QHttp对象返回数据; 25、定时器超时则执行步骤26,否则执行步骤24 ; 26、调用集群性能可视化模块显示图形; 27、定时器重新计时,执行步骤22。 进一步,所述步骤03包括以下步骤
31、生成定时器对象; 32、设定定时器参数; 33、启动定时器计时。 进一步,所述步骤09包括以下步骤 41、开辟内存缓冲区;42、 HTTP请求返回是出错则执行步骤43, HTTP请求返回没出错则执行步骤44 ; 43、将节点性能参数充0 ; 44、直接读取CGI返回数据存入内存缓冲区; 45 、按节点顺序对内存缓冲区数据排序。 进一步,所述步骤09包括以下步骤 51、绘图参数初始化; 52、从内存缓冲区提取性能参数; 53、对性能参数进行归一化处理; 54、生成QPainter绘图对象; 55、绘制性能参数图形。 本发明的有益效果是本发明系统通过CGI方式提取节点性能参数,CGI程序占用 节点资源少、快速、实用;通过专用算法模块实现HTTP无序返回结果的有序化,准确定位节 点的性能参数;本发明采用可任意设定超时时间的定时器来控制发送HTTP异步请求,根据 不同规模的集群设定不同的定时器,从而提高对Li皿x集群的适应性,并提高了集群监测 系统的处理性能。 本发明的另一个有益效果是本发明实现方法采用HTTP异步请求与异步数据采 集技术,极大地提高了监测系统的实时性,通过CGI方式提取节点性能参数,CGI程序占用 节点资源少、快速、实用;本方法充分发挥Linux集群的作用,实时监测集群节点的运行情 况,为根据节点的负载情况进行合理调度提供了数据支持。
下面结合附图和实施例对本发明作进一步说明。 图1是本发明Li皿X集群监测系统程序流程图; 图2是本发明CGI模块流程图; 图3是本发明HTTP请求模块流程图; 图4是本发明定时器模块流程图; 图5是本发明HTTP异步采集数据模块流程图; 图6是本发明集群性能可视化模块流程图。
具体实施例方式
参照图1, 一种基于HTTP协议的Li皿x集群监测系统,其特征在于包括 —用于实时提取节点性能参数的CGI模块101 ; —用于向所有节点发送HTTP请求的HTTP请求模块102 ; —用于生成可控制定时器,并与HTTP请求模块结合使用的定时器模块103 ;
6
—用于根据CGI模块的返回,异步采集各节点性能参数数据,对HTTP请求失败进 行处理,同时结合专用算法,按照节点顺序集成所有节点各种实时的性能参数,为正确显示 集群性能提供基础数据的HTTP异步采集数据模块104。 进一步,还包括一展示集群实时性能,并提供用户对各种参数的控制或选择功能 的集群性能可视化模块105。 进一步,所述集群性能可视化模块105以直观的柱状图方式展示集群实时性能, 并提供用户对各种参数的控制或选择功能。 —种基于HTTP协议的Li皿x集群监测系统的实现方法,包括以下步骤 01 、输入集群起始IP及有关参数; 02、绘图参数的初始化; 03、定时器模块103启动定时器; 04、定时器是否超时,如果是超时则执行步骤Ob,如果不是超时则执行步骤05 ; 05、 HTTP请求模块102向所有节点发送HTTP请求; 06、 CGI模块101远程执行CGI程序; 07、如果HTTP请求返回是出错则执行步骤08,如果HTTP请求返回没出错则执行步 骤09 ; 08、将节点性能参数充0,然后执行步骤Oa ; 09、 HTTP异步采集数据模块104异步采集数据并分解出节点性能参数,然后执行
步骤Oa ; Oa、排序并生成节点参数记录; Ob、对性能参数进行归一化处理; 0c、定时器重新计时,执行步骤04。 进一步,所述步骤Ob与步骤Oc之间还包括步骤Od、集群性能可视化模块105实 现集群性能参数的可视化。 进一步参照图2,所述步骤06包括以下步骤 11、计算内存占用率; 12、计算CPU使用率; 13、计算磁盘I0负载率; 14、计算网络输出流量; 15、计算网络输入流量; 16、读取节点IP地址; 17、以字符串形式按顺序输出上述数据。 进一步参照图3,所述步骤05包括以下步骤 21、调用定时器模块103启动定时器; 22、按节点生成QHttp对象; 23、通过QHttp对象向所有节点发送HTTP请求; 24、调用HTTP异步采集数据模块104接收QHttp对象返回数据; 25、定时器是超时执行步骤26,否则执行步骤24 ; 26、调用集群性能可视化模块105显示图形;
27、定时器重新计时,执行步骤22。 进一步参照图4,所述步骤03包括以下步骤 31、生成定时器对象; 32、设定定时器参数; 33、启动定时器计时。 进一步参照图5,所述步骤09包括以下步骤
41、开辟内存缓冲区;42、 HTTP请求返回是出错则执行步骤43, HTTP请求返回没出错则执行步骤44 ; 43、将节点性能参数充0 ; 44、直接读取CGI返回数据存入内存缓冲区; 45 、按节点顺序对内存缓冲区数据排序。 进一步参照图6,所述步骤09包括以下步骤 51、绘图参数初始化; 52、从内存缓冲区提取性能参数; 53、对性能参数进行归一化处理; 54、生成QPainter绘图对象; 55、绘制性能参数图形。 作为优选的实施方式,本发明采用以下具体的实现方法 本发明是一种基于HTTP协议的Li皿x集群监测系统及实现方法,在利用 CGI (Common Gateway Interface)技术获取单个Linux集群服务器或计算节点实时性能参 数的基础上,通过HTTP协议实现异步采集节点性能参数,最后,在监控节点上利用QT C++ 语言编程实现Li皿x集群系统性能的实时监测及其可视化。Li皿x集群监测系统的全部技 术都是基于Li皿x系统和QT开源开发环境下编程实现的。
具体实施方式
描述如下
1、 Linux集群监测系统总工作流程 启动监测系统(进程OO);根据集群的实际情况,输入集群起始IP及有关参数(进
程Ol);进行绘图参数的初始化(进程02);调用定时器模块,启动定时器(进程03);调用
HTTP请求模块向所有节点发送HTTP请求(进程05);远程调用CGI模块执行节点CGI程序 (进程06);开辟内存缓冲区,对HTTP请求返回进行处理,当HTTP请求返回出错时,将该节 点性能参数充0处理(进程08),当HTTP请求返回正常时,调用异步采集模块,异步采集节 点性能参数数据(进程09);使用专用算法集成并按节点顺序整理出对应节点负载的实时 参数(进程Oa);等待定时器超时,对性能参数进行归一化处理(进程Ob);调用可视化模
块对集群性能参数进行可视化(进程Od)。重新设定定时器,计时开始(进程OC);进入循
环,重新调用HTTP请求模块向所有节点发送HTTP请求,直至用户退出监测系统。
2、节点实时性能参数的提取
2. l节点性能参数 节点的实时性能参数主要包括CPU使用率、内存占有率、磁盘IO负载及网络负 载。在Linux系统中,内存虚拟文件系统实时记录了系统的运行参数,其中文件/proc/ stat记录了 CPU实时性能参数,包括用户模式(user)、低优先级的用户模式(nice)、内核 模式(system)以及空闲(idle)的CPU时间。CPU利用率通过进程12获得,计算公式为(user+nice+system) / (user+nice+system+idle) *100 % ;/proc/meminfo文件记录了当前 内存的使用量(usedmem)以及内存总量(totalmem)。 本发明中通过执行命令Sfree-m来读取参数并通过进程11获得。内存占有率计 算公式为(usedmem/totalmem)*100%;/proc/net/dev文件记录了从节点输出的数据包和 流入节点的数据包数,分别通过进程14、 15获得。/proc/diskstats文件记录了当前磁盘 10负载的相关数据,通过执行命令$iostat来读取参数并通过进程13获得。节点IP地址 作为节点标识,用于区分不同节点的性能参数,通过执行命令S/sbin/ifconfig来读取参 数并通过进程16获得。最后,通过进程17输出上述性能参数数据。
2. 2CGI程序实现节点性能参数的提取 启动各节点Web服务器的CGI功能后,使用C语言和Linux的Bash Shell编写 CGI程序来实时提取节点性能参数。CGI模块程序流程图如图2所示。
3、集群系统性能的实时监测及其可视化
3. 1 HTTP客户端的实现 QT是由挪威的Trolltech公司开发基于C++语法的跨平台应用程序框架,是开 源桌面系统KDE的基石,QT还支持Li皿x嵌入式开发。QT提供了 一个全新的网络模块 (QtNetwork)和功能强大的绘图功能。如下通过QT网络模块中QHttp类实现异步采集节 点服务器实时性能参数及其可视化功能。运行监测系统的节点作为HTTP客户端,使用基于 TCP/IP中HTTP协议的QHttp类,并启动定时器定时远程执行各节点的CGI程序,采用异步 工作方式通过QHttp类的get ()函数采集节点CGI程序返回的实时性能参数。当节点Web 服务器运行正常时,我们将获取到节点实时的性能参数;当节点Web服务器出现故障时, QHttp类将返回出错代码,此时,需要通过QHttp的槽函数httpRequestFinished()将节点 所有性能参数充"0"。图3、图5分别为HTTP请求模块流程图和HTTP异步采集数据模块流 程图。 3. 2各节点性能参数集成方法 由于采用HTTP协议的异步工作方式,每个节点返回信息是无序的,所以用于记录 节点性能参数的内存缓冲区file文件中的数据记录也是无序的。如何区分属于哪个节点 的性能参数是关键,因此,通过返回节点IP地址作为节点的唯一标识,来区分节点并实现 节点性能参数集成。 3. 3集群系统性能的可视化实现 集群系统性能的可视化以图示方式直接展示各节点的实时性能及故障情况,是 Li皿x集群负载实时监测系统的重要组成部分。图6为集群性能可视化模块流程图。
以上是对本发明的实施进行了具体说明,但本发明创造并不限于所述实施例,熟 悉本领域的技术人员在不违背本发明精神的前提下还可作出种种的等同变形或替换,这些 等同的变型或替换均包含在本申请权利要求所限定的范围内。
9
权利要求
一种基于HTTP协议的Linux集群监测系统,其特征在于包括一用于实时提取节点性能参数的CGI模块(101);一用于向所有节点发送HTTP请求的HTTP请求模块(102);一用于生成可控制定时器,并与HTTP请求模块结合使用的定时器模块(103);一用于根据CGI模块的返回,异步采集各节点性能参数数据,对HTTP请求失败进行处理,同时结合专用算法,按照节点顺序集成所有节点各种实时的性能参数,为正确显示集群性能提供基础数据的HTTP异步采集数据模块(104)。
2. 根据权利要求1所述的一种基于HTTP协议的Li皿x集群监测系统,其特征在于还 包括一展示集群实时性能,并提供用户对各种参数的控制或选择功能的集群性能可视化模 块(105)。
3. 根据权利要求2所述的一种基于HTTP协议的Li皿x集群监测系统,其特征在于所 述集群性能可视化模块(105)以直观的柱状图方式展示集群实时性能,并提供用户对各种 参数的控制或选择功能。
4. 一种基于HTTP协议的Li皿x集群监测系统的实现方法,其特征在于包括以下步骤·01、 输入集群起始IP及有关参数;·02、 绘图参数的初始化;·03、 定时器模块(103)启动定时器;·04、 定时器是否超时,如果是超时则执行步骤Ob,如果不是超时则执行步骤05 ;·05、 HTTP请求模块(102)向所有节点发送HTTP请求;·06、 CGI模块(101)远程执行CGI程序;·07、 如果HTTP请求返回是出错则执行步骤08,如果HTTP请求返回没出错则执行步骤·09 ;·08、 将节点性能参数充O,然后执行步骤Oa ;·09、 HTTP异步采集数据模块(104)异步采集数据并分解出节点性能参数,然后执行步 骤Oa ;Oa、排序并生成节点参数记录; Ob、对性能参数进行归一化处理; Oc、定时器重新计时,执行步骤04。
5. 根据权利要求4所述的一种基于HTTP协议的Li皿x集群监测系统的实现方法,其特 征在于所述步骤Ob与步骤Oc之间还包括步骤Od、集群性能可视化模块(105)实现集群性能参数的可视化。
6. 根据权利要求4所述的一种基于HTTP协议的Li皿x集群监测系统的实现方法,其特征在于所述步骤06包括以下步骤·11、 计算内存占用率;·12、 计算CPU使用率;·13、 计算磁盘IO负载率;·14、 计算网络输出流量;·15、 计算网络输入流量;`16、 读取节点IP地址;`17、 以字符串形式按顺序输出上述数据。
7. 根据权利要求4所述的一种基于HTTP协议的Li皿x集群监测系统的实现方法,其特 征在于所述步骤05包括以下步骤`21、 调用定时器模块(103)启动定时器;`22、 按节点生成QHttp对象;`23、 通过QHttp对象向所有节点发送HTTP请求;``24、 调用HTTP异步采集数据模块(104)接收QHttp对象返回数据;`25、 定时器超时则执行步骤26,否则执行步骤24 ;`26、 调用集群性能可视化模块(105)显示图形;`27、 定时器重新计时,执行步骤22。
8. 根据权利要求4所述的一种基于HTTP协议的Li皿x集群监测系统的实现方法,其特 征在于所述步骤03包括以下步骤`31、 生成定时器对象;`32、 设定定时器参数;`33、 启动定时器计时。
9. 根据权利要求4所述的一种基于HTTP协议的Li皿x集群监测系统的实现方法,其特征在于所述步骤09包括以下步骤`41、 开辟内存缓冲区;`42、 HTTP请求返回出错则执行步骤43, HTTP请求返回没出错则执行步骤44 ;`43、 将节点性能参数充0;`44、 直接读取CGI返回数据存入内存缓冲区; 45 、按节点顺序对内存缓冲区数据排序。
10. 根据权利要求4所述的一种基于HTTP协议的Li皿x集群监测系统的实现方法,其 特征在于所述步骤09包括以下步骤`51、 绘图参数初始化;`52、 从内存缓冲区提取性能参数;`53、 对性能参数进行归一化处理;`54、 生成QPainter绘图对象; 绘制性能参数图形。
全文摘要
本发明公开了一种基于HTTP协议的Linux集群监测系统及实现方法,系统包括一用于实时提取节点性能参数的CGI模块;一用于向所有节点发送HTTP请求的HTTP请求模块;一用于生成可控制定时器,并与HTTP请求模块结合使用的定时器模块;一HTTP异步采集数据模块。本发明采用可任意设定超时时间的定时器来控制发送HTTP异步请求,根据不同规模的集群设定不同的定时器,从而提高对Linux集群的适应性,并提高了集群监测系统的处理性能。本发明作为一种基于HTTP协议的Linux集群监测系统及实现方法可广泛应用于Linux高性能集群及Linux负载均衡集群中。
文档编号G06F9/445GK101778139SQ20101010936
公开日2010年7月14日 申请日期2010年2月5日 优先权日2010年2月5日
发明者彭土有 申请人:彭土有