一种面向大规模计算机的监控管理系统
2015-05-29郑明玲蒋句平袁远李宝峰
郑明玲 蒋句平 袁远 李宝峰
摘 要:随着超级计算机系统性能的提升,系统规模越来越大,如何高效管理这些系统成为高性能计算机亟待解决的关键问题之一.本文提出了一种针对大规模计算机的监控管理系统——MMS(Monitoring and Management System).MMS采用分布式系统结构来提高监控管理系统的效率;监控信息的精细化处理降低了监控系统对计算网络的影响同时提高了基于web的客户端的反应速度;两级异步通信机制提高了MMS系统数据采集效率.理论分析与实验结果表明MMS运行效率高、可靠性好.
关键词:大规模计算机系统;计算机资源管理;带外管理;分布式系统结构
中图分类号:TP302 文献标识码:A
随着科学技术的进步与发展,高性能计算的应用领域越来越广泛.复杂科学计算、天气预报、核模拟与核应用、基因工程、石油勘探等应用对计算能力的需求越来越大.为了满足这些应用需求,高性能计算机系统规模不断扩大,性能不断提高.随着系统规模的扩大,系统的可靠性、可用性面临着越来越大的挑战\[1\].监控管理系统可以提高系统的可靠性和可用性,其基本功能是对大规模系统进行管理与监控,通过监控管理系统可以快速了解系统配置、各结点运行状态、系统资源使用情况以及系统各部件的健康状态等信息,管理员能够根据这些信息预测、发现并定位故障,提高系统的可靠性和可用性.
随着计算机系统规模的扩大,监控管理系统需要监管的结点数目达到几千甚至上万,如何实现监控管理系统的高效、稳定与可扩展是大规模计算机的监控管理系统面临的难题.本文提出了一种基于分布式的监控管理系统,通过双机热备的管理结点实现了分布式系统中中间代理的管理以及数据视图的一致性维护,独特的数据采集以及传输机制实现了对上层web服务的支持,进一步提高了监控管理系统的效率.
湖南大学学报(自然科学版)2015年
第4期郑明玲等:一种面向大规模计算机的监控管理系统
1 相关技术
大规模计算机系统结构不同,其监控管理软件架构也不尽相同.目前比较典型的集群管理软件包括ganglia,nagios,supermon和parmon.
Ganglia\[2\]是UC Berkeley发起的一个开源监控项目.Ganglia是目前应用最为广泛的集群监控软件之一\[3-5\].Ganglia能够得到广泛的应用主要得益于以下三点:1)Ganglia是一个开源项目.2)Ganglia采用分级的树状体系结构,该结构使得Ganglia具有良好的可扩展性,可支持不同规模的集群系统.3)Ganglia采用基于XML技术的数据传输机制,因此监控信息可以跨越不同的平台进行交互.Ganglia将结点划分成不同的区域,区域内的结点通过多播进行信息交互,因此每个结点都维护了一张本区域内所有结点状态的列表.这种组织方式使得Ganglia在不进行任何配置的情况下进行结点的删除与添加,但是其带来的代价很大.首先多播导致监控数据占用了系统网络带宽,其次每个结点都维护了一张本区域内的结点状态表,当区域较大时,这些全局冗余的数据的更新效率低下.
Nagios\[6\]是由Ethan Galstad开发的一款基于GPLv2的开源软件,用于对系统运行状态和网络信息进行监控,也是当前使用广泛的监控软件之一\[7\].其主要功能包括:网络服务监控(SMTP, POP3, HTTP, NNTP, ICMP,SNMP等)和主机资源监控(CPU负载、硬盘利用率和系统日志).Nagios与Ganglia都可用于高性能计算环境中,但是这两者对监控的侧重点不同.Ganglia更多地收集监控数据并随时跟踪这些数据而Nagios则致力于成为一种报警机制.
Supermon\[8\]是美国洛斯阿拉莫斯国家高级计算实验室开发的一套面向linux集群的监控系统.集群中的每个结点上都运行一个定制的内核模块mon,因此其信息采集效率高.Supermon依次与所有的mon进行通信来获取监控信息.Supermon是监控系统中的单一失效点,同时Supermon由于需要串行访问所有结点上的mon模块导致在大规模系统中监控效率下降.
Parmon\[9\]是由印度高性能计算中心为PARMON集群开发的监控软件.该软件采用c/s结构,每个结点上运行一个server程序负责本地信息收集,Client负责集中管理与信息显示.当系统规模较大时Client收集全系统信息需要的时间较长从而导致监控软件的实时性差.
上述管理软件在一定规模的集群系统上可以高效运行,但是当系统规摸不断扩大时,这些管理软件面临如下问题,这也是大规模计算机系统的监控管理所面临的问题.
1)实时性.当计算机系统规模扩大时,监控管理系统是否能够继续高效对系统进行管理与监控.随着应用需求的增长,系统规模扩大、性能提高是计算机系统的发展趋势.根据top500统计结果\[10\],2012年11月发布的top500中排名第一的系统理论峰值27112TFlops,包括560 640个CPU核,一年后排名第一的系统性能提升到54902TFlops,规模扩展到3 120 000个CPU核.系统性能翻了一翻,系统规模扩大了5倍多.传统的集中式监控已经无法适用于如此大规模的计算机系统.因此如何提高监控管理系统的实时性是大规模计算机系统监控管理软件面临的问题之一.
2)可靠性.监控管理软件是大规模计算机系统可靠性运行的保障之一,因此监控管理系统自身的可靠性是首先要解决的问题.
3)完备性.目前的监控管理软件基本上侧重于某个功能.例如Ganglia,Supermon和Permon都侧重于系统资源的监控,而Nagios则是侧重于对异常状态的管理.监控管理软件是提高大规模计算机系统可靠性和可用性的关键,因此功能完备的监控管理软件才能更好实现对大规模计算机系统的管理.
2 MMS系统组成
大规模计算机系统规模庞大,结点数目成千上万个,系统设备复杂,系统中除了计算结点外还包括存储设备、互连设备和基础架构(包括供电和制冷)等,因此监控管理系统需要在对系统软件资源管理的同时,对这些硬件设备进行监测与控制,实现一个功能完备的监控管理系统.
2.1 MMS系统功能
MMS提供了基于web的用户访问界面,管理员可以在远程或本地访问MMS.MMS实现了对系统资源管理,告警信息管理和系统配置信息的管理,其主要功能如图1所示.
图1 MMS功能示意图
Fig.1 Function of the MMS
2.1.1 系统配置与物理布局
监控管理系统提供了一个用户接口,通过该接口用户可以修改系统配置,调整物理布局.监控管理软件根据用户提供的配置信息进行信息的获取与查询,同时根据用户提供的物理布局进行系统整体状态显示.
2.1.2 资源管理
资源管理是MMS的主要功能之一.资源管理包括软件资源信息和硬件信息.软件资源主要包括系统资源、结点状态和全局存储信息.系统资源主要包括系统所有结点的状态和作业信息,包括结点是否空闲和可用、作业的运行状态、排队状态等.结点状态包括单个结点上的可用资源例如CPU、内存等的利用率等.全局存储信息主要显示全局存储资源的使用和健康状态.硬件信息主要包括电压、温度、风扇等信息、运行环境相关信息和系统功耗管理.系统管理员通过监控管理软件可以了解系统当前的健康状况、使用情况和功耗及运行环境状态.
2.1.3 告警信息
告警信息收集了全系统的告警信息包括软件资源和硬件模块的告警信息.
2.2 MMS系统结构
MMS采用分布式系统结构,如图2所示.MMS系统分为3个层次.底层结点由所有的被管理设备组成,中间层包括多个中间代理,最顶层是两个管理结点.最底层的每个结点上运行一个信息采集模块daemon,负责采集结点的资源信息,包括结点配置、结点资源(CPU、内存、网络、本地存储等)使用情况,结点负载,结点的用户及进程等相关信息.OOBmon是结点的带外监控程序,负责一个或多个结点的硬件状态监控.OOBmon和daemon采集到的信息发送到对应的client.在图2中,带箭头的实线表示数据通过计算网络进行传输,带箭头的虚线表示数据通过监控管理网络进行传输.从图2可以看出daemon与client之间的通信需要经过计算网络,对计算网络带来一定的影响.而OOBmon与client之间通过专用的监控管理网络进行互连,因此带外管理对系统性能没有影响.Client是中间代理模块,负责接收来自所管辖范围内结点信息采集模块发送的信息.双机热备的两个管理结点负责管理中间代理同时向用户提供基于web的人机交互界面.中间代理和管理结点上都使用mysql数据库来存储信息.
2.2.1 结点信息采集模块
结点信息采集模块包括带内daemon和带外OOBmon模块.Daemon运行在结点上,负责采集本地信息.Daemon将采集到的信息分成两类.其中一类是静态信息,主要是系统配置信息,例如:CPU的型号、内存的型号及容量,网络理论带宽和本地存储容量等信息.另一类是动态信息,包括CPU、内存和网络利用率,作业负载等动态变化的信息.因为改变结点配置时通常情况下需要重新启动结点才能生效,此时daemon程序也将被重启,所以只有在daemon程序每次重启之后进行一次静态信息采集.Daemon工作流程如图3所示.Daemon启动后,等待接收来自中间代理的信息,然后开始查询.将查询的静态信息和首次查询(包括daemon启动后的第一次和中间代理发生变化后的第一次查询)的动态信息发送到中间代理,后续的查询只针对动态信息.动态信息查询的结果与上次的状态进行比较,标记发生了变化的信息,将信息采集结果以及比较结果存放到公共数据区.中间代理在查询过程中只需要访问公共数据区即可.中间代理和结点之间只传输发生了变化的数据.这种策略减少了计算网络上传输的监控管理数据量,从而降低对计算网络的影响.
图2 监控系统结构
Fig.2 The architectureof the MMS
图3 Daemon工作流程
Fig.3 Work flow of the daemon
Daemon首次传输的数据结构如图4所示,数据包括了所有的信息以及心跳标志位.后续的数据格式与图4中的相同,只是totalnum<=n,因为没有变化的状态数据不需要传输.Heartbit位是每次传输的数据中必须包含的,其取值范围是0或1.Heartbit位由daemon程序进行更新,daemon在比较数据时,将上次的heartbit位取反作为本次查询的heartbit值.中间代理通过heartbit位来判断daemon的状态.
OOBmon是带外监控模块.硬件监控一般由结点上的嵌入式系统来实现.大规模计算机系统结构不同,硬件监控的实现方式有所不同.在松散耦合的机群系统中,通常情况下每个结点上都会有一个监控模块.该监控模块上运行嵌入式系统,硬件监控信息的采集以及对硬件的控制都是通过监控模块来实现的.在紧耦合系统中,通常多个紧耦合的结点共用一个监控模块.OOBmon运行在监控模块上,实现了对单个或多个结点的监控与管理,通过专用的监控管理网络将信息传输到中间代理模块.OOBmon对结点和系统网络性能没有任何影响.通过带内和带外两种方式都可以采集到的信息例如CPU温度、结点温度等全部由带外渠道进行采集与传输.
图4 Daemon与中间代里之间传输的数据结构
Fig.4 Data structure transferred between daemon and client
2.2.2 中间代理
中间代理层由多个中间代理组成.每个中间代理负责所属分区内结点的监控.如图5所示,中间代理包括4个功能模块.结点监听模块负责接收来自结点的静态信息和首次查询的动态信息.信息组播模块定时向所属分区内的结点发送中间代理的相关信息,保证故障结点恢复后知道自己所在分区.查询模块定时对所属结点进行动态信息查询,将查询的信息存储到本地数据库.在数据存储之前判断本次读取的数据中的heartbit位是否与数据库中的相同.如果相同表示结点上的daemon程序没有更新动态信息,从而判断daemon故障,需要重启结点上的daemon程序.中间代理采用在本地数据库中设置一个heartbit位,heartbit位的取值为0或1,查询模块在对所管辖范围内的结点查询结束后将heartbit位取反并存储到数据库中.管理结点通过该位来判断中间代理的状态.管理结点访问接口监听来自管理结点的查询,接收到查询请求后从数据库读取信息并发送到管理结点.
图5 中间代理的组织结构
Fig.5 The structure of the client
2.2.3 管理结点
管理结点主要功能包括:向用户提供基于web的监控界面,报警信息的接收、处理和转发以及中间代理管理.
管理结点提供了基于web的监控服务,用户通过浏览器可以实现系统的远程和本地监控.管理结点上的报警信息处理模块负责接收系统内所有的报警消息,对报警消息进行解析并存储到数据库,同时将报警消息发送到客户端.
管理结点上的状态查询服务定时从中间代理读取状态信息和中间代理上的heartbit位,并根据查询结果判断中间代理的健康状态.查询失败或者查询到数据库中的heartbit位没有变化,进行重试,超过设定的重试次数后判定代理故障.管理结点对系统重新进行分区划分,并通知所有代理.中间代理向所属区域的结点进行组播通知结点所在区域的中间代理发生了变化,从而实现故障代理的无缝屏蔽.管理结点通过查询将所有代理上的本地数据读取到管理结点进行集中式管理,并形成统一的用户视图.远程用户只需要访问管理结点即可获取全系统的状态,因此中间代理对用户是透明的.
系统中的两个管理结点利用结点心跳(heartbeat)机制来实现双机热备.两个管理结点采用masterslave模式,运行时master管理结点负责监控管理功能,当slave管理结点检测到master故障后,启动本地的监控服务.而两台管理结点上的数据库的备份利用mysql数据库的replication功能实现dualmaster模式复制架构.Dualmaster模式保证两个管理点之间的mysql数据库迅速完成切换,减少停机时间.当slave检测到master恢复正常后,将功能移交给master.
3 监控系统性能分析
MMS实现了针对大规模计算机系统全面的监控与管理,包括系统配置、系统软件资源、系统硬件状态和系统异常状态的实时监测,同时还实现了进一步的能耗控制与指导.
3.1 功能完备性
MMS具备了ganglia和nagios二者兼有的功能,实现了对系统的监控与管理和系统异常信息管理.MMS还集成了对运行环境的监控包括电源和制冷系统,从而支持系统功耗的深度控制.系统功耗控制可以在计算结点级进行也可以在资源管理一级进行.结点级的功耗控制主要是在系统空闲时CPU降频或者关闭某些部件.资源管理级的功耗控制可以根据系统负载以及作业的排队信息来指导哪些结点可以运行在省电模式甚至休眠模式.这两级的功耗控制是目前大部分监控管理系统都实现了的.MMS可以根据当前结点的状态进行运行环境的控制从而进一步达到节能目的.资源管理指导部分结点进入省电模式后,MMS根据区域内的温度信息逐步调整该区域的制冷设备,从而实现进一步的系统能耗调控.
3.2 实时性
集中式监控实现过程简单,而其在小规模系统上运行高效\[11\],但是在大规模系统中,无论是实时性还是可靠性上都存在缺陷.在集中式监控系统中,管理结点获取信息的方式有两种:轮询或被管理设备主动上报.随着系统规模的扩大,采用轮询获取结点信息会导致查询时间过长.如果采用被管理设备主动上报,则管理结点同时接收来自几千甚至上万个设备的信息,会导致丢包现象严重.因此集中式监控系统不适于大规模计算机系统.MMS采用分布式结构将大规模计算机系统分而治之,从而提高了监控效率.在分布式系统中,信息的整合和中间代理的管理成为分布式系统的难点.易昭华等人\[12\]提出了一种冗余的代理机制,并采用异步通信方式实现了监控管理的高效运行,该监控系统将中间代理的选择交给了唯一的控制台,因此控制台是单一失效点.文献\[13\]增加了一个LDAP目录服务器来实现对分布式数据的管理,使得监控系统具有良好的可扩展性,但是没有考虑系统的实时性.文献\[14\]采用了基于联邦的数据公告来管理这些分布式数据,管理协议复杂而其管理的只是临时性的数据.在MMS中,中间代理将收集到的信息存储在本地,代理之间是独立的.管理结点通过查询将代理上的本地数据集中存储到管理结点,同时在查询过程中通过heartbit位实现代理的管理,与文献\[12-14\]相比,其实现复杂度低、效率高.
在监控系统运行过程中,通过减小传输的数据量来提高监控系统的实时性.结点上的信息采集模块将数据分为静态数据和动态数据.静态数据的采样频率低,动态数据采样频率高.对采集到的动态数据与前一次的进行比较,如果数据没有变换则不需要进行数据传输.因此中间代理大部分时间只需要查询发生相对变化的信息.监控系统中的这种数据传输模式不仅减少了系统计算网络上的监控报文量而且还提高了web服务中客户端的反应速度.在大规模系统中,系统级的显示界面上包含的信息大,如果采用传统的方式,把所有状态更新一遍,用户感知到的延迟很大.如果只是更新发生了变化的状态,其延迟将会大大降低.因此MMS采用的数据采集及传输机制为用户界面的实时刷新提供了支撑.
本文对动态数据的处理方式是根据大规模计算机系统的使用统计提出的.表1给出了运行在天津超算中心的天河系统上的作业运行统计信息.表1统计的是3个月内天河系统上的作业运行时长及所占比例.从表1可以看出作业的平均运行时间低于5小时的作业占所有作业的8.9%,而且这些作业中最短运行时间为40分钟.系统负载变化频率较低,所以软件资源利用率变化频率较低.因此监控系统对动态数据采用处理方式可以提高监控系统的运行效率,降低对计算网络的影响.
在MMS中,监控信息的采集是通过两级异步通信来实现的.在结点上daemon负责将查询的信息存放到公共数据区,client直接从公共数据区读取数据,这是第一级异步传输.Client将从结点查询到的数据存放到本地数据库,管理结点从client本地数据库读取最新的信息,这是第二级异步传输.与同步通信相比,第一级异步传输隐藏了daemon的查询时间,第二级异步传输则是隐藏了client对所有结点的查询过程.MMS采用的异步通信机制的效率要远远高于同步通信机制.图6给出了在天河系统上MMS数据采集效率与采用同步通信机制时的数据采集效率的比较.在实验验证过程中设置了6个中间代理.MMS数据采集效率具有明显的优势.理想情况下MMS的数据采集时间与系统规模成线性关系,但是实验结果表明,随着系统规模的扩大,MMS数据采集需要的时间越来越长.这主要是由于随着规模的扩大,代理数目不变,client对所有结点的查询时间无法在第二级异步传输过程中完全隐藏.
3.3 可靠性
分布式监控系统提高了监控系统的实时性,但是分布式监控系统中代理的管理是保证监控系统可靠性的关键.在MMS中,中间代理由管理结点进行管理的,避免了传统分布式系统中通过复杂协议来保证各代理上信息的一致性.两个管理结点之间的热备避免了分布式系统中的单点故障,从而保证MMS自身的可靠性.
4 结束语
本文提出了一种针对大规模计算机的高效和高可靠的监控管理系统.监控管理系统采用分布式结构,双机热备的管理结点实现了多个中间代理之间的数据与视图的一致性,避免了传统分布式系统中各种复杂通信协议.特殊的动态数据处理机制降低了监控管理信息对计算网络带来的影响同时提高了远程客户端的反应速度.
参考文献
[1] 黄伟, 詹剑锋, 樊建平. DCFTKernel:一种基于组服务的机群容错管理系统的设计与实现[J]. 计算机研究与发展, 2005, 42(6):993-999.
HUANG Wei, ZHAN Jianfeng, FAN Jianping. DCFTKernel: afaulttolerant cluster middleware based on group service[J]. Journal of Computer Research and Development, 2005, 42(6):993-999.(In Chinese)
[2] MATTHEW L M, BRENT N C, DAVID E C. The ganglia distributed monitoring system: design, implementation and experience[J].Parallel Computing,2004,30(7):817-840.
[3] WEI Wenguo, DONG Shoubin, ZHANG Ling, et al. An improved ganglialike clusters monitoring system[C]//The 2th International Workshop on Grid and Cooperative Computing.2004:89-96.
[4] SACERDOTI F D, KATZ M J, MASSIE M L, et al. Wide area cluster monitoring with ganglia[C]//Proceedings of the IEEE Cluster Conference.2003:289-298.
[5] LIU Qingkun, SUN Aiting. Faulttolerant cluster monitoring system[J]. Computer Engineering and Design, 2010, 32(21):4599-4602.
[6] NAGIOS. http://www.nagios.org/
[7] EMIR I, DOBRISA D.Grid infrastructure monitoring system based on nagios[C]//Proceedings of the 2007 Workshop on Grid Monitoring. 2007:23-28.
[8] MATTHEW J S, RONALD G M. Supermon: a highspeed cluster monitoring system[C]//Proceedings of the International Conference on Cluster Computing. 2002:39-46.
[9] BUYYA R. PARMON: a portable and scalable monitoring system for clusters[J]. Software Practice and Experience Journal, 2000, 30(7):723-739.
[10]TOP500. http://www.top500.org/
[11]LI Min, ZHANG Yisheng. HPC cluster monitoring system architecture design and implement[C]//The Second International Conference on Intelligent Computation Technology and Automation. 2009:325-327.
[12]易昭华, 金正操, 杜晓黎.大规模机群监控系统数据采集通信模型和通信协议的研究[J]. 计算机工程与应用, 2004, 35:116-118
YI Zhaohua, JIN Zhengcao, DU Xiaoli. Research into large scale cluster monitoring system data gathering communication model and communication protocol[J]. Computer Engineering and Applications, 2004, 35:116-118.(In Chinese)
[13]范勇, 马梅, 杨大鉴.可扩展机群资源监控系统的设计与实现[J].计算机工程与应用, 2003, 26:150-152.
FAN Yong, MA Mei, YANG Dajian. Design and implementation of a scalable cluster monitoring system[J]. Computer Engineering and Applications, 2003, 26:150-152. (In Chinese)
[14]陈熠,孟丹,詹剑锋,等. 基于联邦的数据公告的设计与实现[J]. 计算机工程与应用, 2004, 25:107-110.
CHEN Yi, MENG Dan, ZHAN Jianfeng, et al. The design and implementation of federated data bulletin service[J]. Computer Engineering and Applications, 2004, 25:107-110. (In Chinese)