刘 芳, 吴 琼
(1.东北石油大学 计算机与信息技术学院, 黑龙江大庆 163318;
2.大庆油田有限责任公司 勘探开发研究院, 黑龙江大庆 163712)
基于Web的集群部署管理系统
刘芳1, 吴琼2
(1.东北石油大学 计算机与信息技术学院, 黑龙江大庆 163318;
2.大庆油田有限责任公司 勘探开发研究院, 黑龙江大庆 163712)
摘要:随着集群技术的广泛应用,对集群部署技术的研究也越来越多.采用Linux环境下Shell脚本技术及Web开发技术,在分析集群部署管理逻辑流程的基础上,设计和实现了集群部署管理系统.利用该系统可以对集群节点进行集中部署、部署日志查询及应用情况查询,满足了系统管理人员的工作需求.
关键词:集群部署管理; Linux; 集群Web管理; 脚本管理
集群系统凭借其超强计算能力、高性价比获得了越来越广泛的应用,对集群管理的研究也成为一个热门的方向[1-2].集群系统需要对集群内的计算资源、高性能计算应用进行有效的管理.目前,主要通过命令行和少量的Web管理功能进行集群管理[3],尤其是Web方式,已经成为集群监控和管理的一种主要手段[4-5].本文设计实现基于Web的集群部署管理系统,通过该系统实现Web图形用户接口(GUI),系统管理员在任何地方都可以对集群进行部署和管理,以降低集群系统的管理难度, 为管理员提供一个友好的界面,并支持远程的访问与管理.
1开发技术
1.1Shell脚本
Shell脚本常用于系统管理工作,或是结合现有程序以完成小型的、特定的工作[6].Shell可以简单被看成是批处理文件,也可以被看成是一个程序语言,这个程序语言是利用Shell与相关工具命令的,所以不需要编译即可执行,且拥有不错的排错工具,可以帮助系统管理员快速管理好主机[7].文献[8]利用Shell脚本技术和相关的工具命令,对集群部署过程进行了设计与实现,本文在此基础上,对现有脚本进行整合,形成脚本工具.
1.2 调用Shell脚本
Shell脚本存放在Linux服务器,本机执行脚本只需要直接执行命令即可,但本文是基于Web模式的系统,需要远程调用脚本,所以采用JSch技术对Shell脚本进行调用.JSch是SSH2的一个纯Java实现,它允许使用者连接到一个sshd服务器,使用端口转发、X11转发、文件传输等.Shell脚本通常都会有返回值,这些返回值以流的方式被获取,并且可以被利用,具体实现将在后文介绍.
1.3JSP技术
JSP技术为创建高度动态的Web应用提供了一个独特的开发环境,它提供在HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力[9].JSP技术是当今比较流行的Web开发技术,很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且能扩展到支持企业级的分布式应用中.JSP技术能够支持高度复杂的基于Web的应用,同时拥有Java编程语言“一次编写,各处运行”的特点.本文利用JSP技术对系统的Web界面进行设计.
2系统简介
2.1系统逻辑流程
集群部署管理系统流程图如图1所示.系统管理员通过Web界面发送各种请求信息到Linux管理服务器上,管理服务器接收请求信息后对Shell脚本进行触发.这些请求信息是Shell脚本的输入,不同的请求信息调用不同的Shell脚本,并发送到各个节点中, 节点根据不同的Shell脚本进行相关的操作执行,并将输出返回到服务器上,服务器整理各个节点返回信息, 形成结果发送到Web界面中,
图1 集群部署管理系统流程图
系统管理员就可以在Web界面上查看到相应的输出信息.
2.2系统功能
集群部署管理系统分为集群部署、日志管理、应用管理和脚本管理4个主要功能,图2所示为系统功能模块图.集群部署完成集群节点操作系统、应用软件、系统环境配置等工作,分为单节点部署和多节点部署;日志管理提供部署日志查询;应用管理功能提供部署节点应用软件查询,分为应用查询和应用同步两个子功能;脚本管理包括脚本编辑和脚本配置两个子功能.
图2 系统功能模块图
3系统实现
3.1Shell脚本实现
脚本的实现是所有功能模块的后台基础,为了实现脚本高效管理和模块化应用,对脚本进行了集中编辑和配置,这也是脚本管理中两个重要功能.为了达到上述目标,对每个脚本的编辑采用标注化方式,即标注化输入、标注化输出等,脚本执行中应用到的配置文件同样采用模块化方式,配置文件单独编写只在应用时被调用.下面介绍脚本编辑和脚本配置管理功能的实现.
(1)脚本编辑
以集群部署脚本ClusterDeploy.sh为例说明脚本编辑.脚本的设计包括输入、输出和脚本程序设计.输入输出设计为标注化界面实现打下基础,ClusterDeploy.sh的标注化输入为4个:开始节点、结束节点、软件、操作系统.标注化的输入根据所要在页面上显示的输出对脚本程序进行设计,如下所示代码为ClusterDeploy.sh脚本部分输出代码:
echo"Poweringoffnodesfordeploying:"
poweroff$INSTALLNODE
echo"Testingdeploynodespowerstat:"
powerstat$INSTALLNODE
echo"Poweringonnodesfordeploying:"
poweron$INSTALLNODE
echo"Testingdeploynodespowerstat:"
powerstat$INSTALLNODE
echo" $INSTALLNODEaredeploying!"
echo"Pleasewaiting..................."
echo"Thisprocessneedsafewminutes................"
nodeset$INSTALLNODEboot
servicedhcpdstop
echo"END"
/export/bin/ibminstall/ibmdeploy.sh
(2)脚本配置
本系统中有多个脚本文件支持调用,对这些脚本的管理采用集中配置的方法.编写脚本配置文件ShellMan.config对脚本运行管理,管理内容包括服务器Ip地址、脚本运行Ip地址、用户名、口令、脚本运行路径等,其中脚本路径赋值给变量,这些变量将在脚本调用中发挥重要作用,ShellMan.config文件内容如下:
manageNode=nodeList:10.65.69.1
shellIp=10.65.69.1
port=22
userName=root
password=11 1111
shell=/export/bin/ibminstall/ibmdeploy.sh
getLogListShell=/export/bin/ibminstall/ibmdeploylog.sh
getLogDetail=/export/bin/ibminstall/ibmdeploylogdetail.sh
cggShell=/runapp/cgg.sh
omega_father=/runapp/omega_father.sh
omega_cn=/runapp/omega_cn.sh
omega_py=/runapp/omega_py.sh
pgShell=/runapp/pg.sh
cggFilePath=d:/dqyjy/cgg
omegaFilePath=d:/dqyjy/omega
pgFilePath=d:/dqyjy/pg
nodedeployShell=/runapp/nodedeploy.sh
3.2 脚本调用实现
图3为脚本调用流程图.首先建立Session连接,设置Session参数包括用户名、口令、Ip地址和端口号,这些都已经在ShellMan.config文件中配置完成.开启Session连接后打开Exec通道执行脚本命令,待脚本执行完成后获取返回值.脚本调用采用JSch技术,利用该技术建立Session,代码如下:
图3 脚本调用流程图
Session=jsch.getSession(ShellConfigCache.getShellConfigCache().shellConfigEntity.getUserName(),ShellConfigCache.getShellConfigCache().shellConfigEntity.getIp(),ShellConfigCache.getShellConfigCache().shellConfigEntity.getPort());
Session.setPassword(ShellConfigCache.getShellConfigCache().shellConfigEntity.getPassword());
程序具体调用哪个脚本由ShellMan.config文件中定义的脚本名称变量决定,shell变量指向哪个脚本文件,就执行哪个脚本,其代码如下:
((ChannelExec)channel).setCommand(shell);
3.3页面实现
3.3.1集群部署
图4所示为系统部署运行界面,部署分为单节点部署和多节点部署两种方式,该界面为多节点部署界面.系统管理员在选择操作系统、节点名称和软件名称后就可以对相关节点进行部署,截图下半部分的部署日志是部署过程中的输出显示,包括相关的服务启动、节点安装准备、节点状态等信息.
图4 系统部署运行界面
3.3.2应用管理
图5是系统应用情况管理界面,界面上分布了五种节点应用类型的按钮和一个同步部署情况按钮.点击5个按钮中的任意一个,在下面会显示出该类型节点的部署情况,包括软件名称、节点个数和节点名称等.同步部署情况按钮完成节点当前部署情况的同步查询,按钮点击后会触发相关脚本查询所有节点并生成新的节点应用情况.
图5 系统应用情况管理界面
3.3.3日志管理
图6是日志管理界面,该界面中将部署时生成的日志以列表的形式列出,点击每个日志文件名称就会触发查询日志脚本,脚本成功执行后就会列出部署时间、部署软件、节点等信息.
图6 日志管理界面
4 结束语
本文研究了Linux环境下的Shell脚本技术以及Web开发中脚本调用技术,并利用Shell脚本和JSP技术,设计和实现了集群部署管理系统.该系统能够完成集群大批量部署和单节点部署,满足了系统管理人员对集群部署和应用情况查询的基本需求,简化了工作量,提高了集群系统管理效率.
参考文献:
[1]SandipA,ChristianP,JiantaoK.System-levelresourcemonitoringinhigh-performancecomputingenvironments[J].JournalofGridComputing,2003,1(3):273-289.
[2]RajermaniT,ElankovanS.Clustercontrolmanagementasclustermiddleware[C]// 4thAsianConference,ACIIDS2012.IntelligentInformationandDatabaseSystems.Taipei:TaiwanSpringerScience&BusinessMedia, 2012:73-82.
[3]冯胜鹏,郭雷.集群管理在Web上的设计与实现[J].计算机辅助工程, 2006,15(1):14-17.
[4]LeiYC,GongYL,ZhangSet al.ResearchonschedulingalgorithmsinWebclusterservers[J].JournalofComputerScienceandTechnology, 2003, 18(6): 703-716.
[5]MatthewLM,BrentNC,DavidEC.Thegangliadistributedmonitoringsystem:design,implementation,andexperience[J].ParallelComputing,2004,30(17):817-840.
[6]罗宾, 比博.Shell脚本学习指南[M].O'ReillyTaiwan公司,译.北京:机械工业出版社,2009.
[7]鸟哥,王世江.鸟哥的Linux私房菜基础学习篇[M].3版.北京:人民邮电出版社,2010.
[8]吴琼,王颖,梁金钤,等.Linux环境下基于Qt和xCAT的集群部署系统[J].计算机系统应用,2013,22(7):27-30.
[9]刘广红,董小社, 吴维刚, 等.基于Web的远程集群系统管理设计与实现[J].计算机应用研究,2003,20(5):123-125.
(编辑:郝秀清)
收稿日期:2014-07-26
基金项目:黑龙江省高等教育科学研究“十二五”规划课题(HGJXH B1110131)
作者简介:刘芳,女,lfliufang1983@126.com
文章编号:1672-6197(2015)02-0032-04
中图分类号:Tp393
文献标志码:A
Managementsystemofweb-basedclusterdeployment
LIUFang1,WUQiong2
(1.SchoolofComputerandInformationTechnology,NortheastPetroleumUniversity,Daqing163318,China;
2.ExplorationandDevelopmentResearchInstitute,DaqingOilfieldCompanyLimited,Daqing163712,China)
Abstract:With the cluster technology is widely used, the research of the cluster deployment technology is increasing. Based on the analysis of the logical process of cluster deployment management, using the Linux environment Shell script technology and Web development technology, the cluster deployment management system is designed and implemented. The system could centralize deploy Cluster nodes,query deployment log and query applications, and it satisfy the work requirement of the system management.
Key words:cluster deployment management; Linux; cluster web management; script management