劉 芳, 吳 瓊
(1.東北石油大學 計算機與信息技術學院, 黑龍江大慶 163318;
2.大慶油田有限責任公司 勘探開發(fā)研究院, 黑龍江大慶 163712)
基于Web的集群部署管理系統(tǒng)
劉芳1, 吳瓊2
(1.東北石油大學 計算機與信息技術學院, 黑龍江大慶 163318;
2.大慶油田有限責任公司 勘探開發(fā)研究院, 黑龍江大慶 163712)
摘要:隨著集群技術的廣泛應用,對集群部署技術的研究也越來越多.采用Linux環(huán)境下Shell腳本技術及Web開發(fā)技術,在分析集群部署管理邏輯流程的基礎上,設計和實現(xiàn)了集群部署管理系統(tǒng).利用該系統(tǒng)可以對集群節(jié)點進行集中部署、部署日志查詢及應用情況查詢,滿足了系統(tǒng)管理人員的工作需求.
關鍵詞:集群部署管理; Linux; 集群Web管理; 腳本管理
集群系統(tǒng)憑借其超強計算能力、高性價比獲得了越來越廣泛的應用,對集群管理的研究也成為一個熱門的方向[1-2].集群系統(tǒng)需要對集群內(nèi)的計算資源、高性能計算應用進行有效的管理.目前,主要通過命令行和少量的Web管理功能進行集群管理[3],尤其是Web方式,已經(jīng)成為集群監(jiān)控和管理的一種主要手段[4-5].本文設計實現(xiàn)基于Web的集群部署管理系統(tǒng),通過該系統(tǒng)實現(xiàn)Web圖形用戶接口(GUI),系統(tǒng)管理員在任何地方都可以對集群進行部署和管理,以降低集群系統(tǒng)的管理難度, 為管理員提供一個友好的界面,并支持遠程的訪問與管理.
1開發(fā)技術
1.1Shell腳本
Shell腳本常用于系統(tǒng)管理工作,或是結合現(xiàn)有程序以完成小型的、特定的工作[6].Shell可以簡單被看成是批處理文件,也可以被看成是一個程序語言,這個程序語言是利用Shell與相關工具命令的,所以不需要編譯即可執(zhí)行,且擁有不錯的排錯工具,可以幫助系統(tǒng)管理員快速管理好主機[7].文獻[8]利用Shell腳本技術和相關的工具命令,對集群部署過程進行了設計與實現(xiàn),本文在此基礎上,對現(xiàn)有腳本進行整合,形成腳本工具.
1.2 調(diào)用Shell腳本
Shell腳本存放在Linux服務器,本機執(zhí)行腳本只需要直接執(zhí)行命令即可,但本文是基于Web模式的系統(tǒng),需要遠程調(diào)用腳本,所以采用JSch技術對Shell腳本進行調(diào)用.JSch是SSH2的一個純Java實現(xiàn),它允許使用者連接到一個sshd服務器,使用端口轉發(fā)、X11轉發(fā)、文件傳輸?shù)?Shell腳本通常都會有返回值,這些返回值以流的方式被獲取,并且可以被利用,具體實現(xiàn)將在后文介紹.
1.3JSP技術
JSP技術為創(chuàng)建高度動態(tài)的Web應用提供了一個獨特的開發(fā)環(huán)境,它提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執(zhí)行程序代碼的能力[9].JSP技術是當今比較流行的Web開發(fā)技術,很容易整合到多種應用體系結構中,以利用現(xiàn)存的工具和技巧,并且能擴展到支持企業(yè)級的分布式應用中.JSP技術能夠支持高度復雜的基于Web的應用,同時擁有Java編程語言“一次編寫,各處運行”的特點.本文利用JSP技術對系統(tǒng)的Web界面進行設計.
2系統(tǒng)簡介
2.1系統(tǒng)邏輯流程
集群部署管理系統(tǒng)流程圖如圖1所示.系統(tǒng)管理員通過Web界面發(fā)送各種請求信息到Linux管理服務器上,管理服務器接收請求信息后對Shell腳本進行觸發(fā).這些請求信息是Shell腳本的輸入,不同的請求信息調(diào)用不同的Shell腳本,并發(fā)送到各個節(jié)點中, 節(jié)點根據(jù)不同的Shell腳本進行相關的操作執(zhí)行,并將輸出返回到服務器上,服務器整理各個節(jié)點返回信息, 形成結果發(fā)送到Web界面中,
圖1 集群部署管理系統(tǒng)流程圖
系統(tǒng)管理員就可以在Web界面上查看到相應的輸出信息.
2.2系統(tǒng)功能
集群部署管理系統(tǒng)分為集群部署、日志管理、應用管理和腳本管理4個主要功能,圖2所示為系統(tǒng)功能模塊圖.集群部署完成集群節(jié)點操作系統(tǒng)、應用軟件、系統(tǒng)環(huán)境配置等工作,分為單節(jié)點部署和多節(jié)點部署;日志管理提供部署日志查詢;應用管理功能提供部署節(jié)點應用軟件查詢,分為應用查詢和應用同步兩個子功能;腳本管理包括腳本編輯和腳本配置兩個子功能.
圖2 系統(tǒng)功能模塊圖
3系統(tǒng)實現(xiàn)
3.1Shell腳本實現(xiàn)
腳本的實現(xiàn)是所有功能模塊的后臺基礎,為了實現(xiàn)腳本高效管理和模塊化應用,對腳本進行了集中編輯和配置,這也是腳本管理中兩個重要功能.為了達到上述目標,對每個腳本的編輯采用標注化方式,即標注化輸入、標注化輸出等,腳本執(zhí)行中應用到的配置文件同樣采用模塊化方式,配置文件單獨編寫只在應用時被調(diào)用.下面介紹腳本編輯和腳本配置管理功能的實現(xiàn).
(1)腳本編輯
以集群部署腳本ClusterDeploy.sh為例說明腳本編輯.腳本的設計包括輸入、輸出和腳本程序設計.輸入輸出設計為標注化界面實現(xiàn)打下基礎,ClusterDeploy.sh的標注化輸入為4個:開始節(jié)點、結束節(jié)點、軟件、操作系統(tǒng).標注化的輸入根據(jù)所要在頁面上顯示的輸出對腳本程序進行設計,如下所示代碼為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)腳本配置
本系統(tǒng)中有多個腳本文件支持調(diào)用,對這些腳本的管理采用集中配置的方法.編寫腳本配置文件ShellMan.config對腳本運行管理,管理內(nèi)容包括服務器Ip地址、腳本運行Ip地址、用戶名、口令、腳本運行路徑等,其中腳本路徑賦值給變量,這些變量將在腳本調(diào)用中發(fā)揮重要作用,ShellMan.config文件內(nèi)容如下:
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 腳本調(diào)用實現(xiàn)
圖3為腳本調(diào)用流程圖.首先建立Session連接,設置Session參數(shù)包括用戶名、口令、Ip地址和端口號,這些都已經(jīng)在ShellMan.config文件中配置完成.開啟Session連接后打開Exec通道執(zhí)行腳本命令,待腳本執(zhí)行完成后獲取返回值.腳本調(diào)用采用JSch技術,利用該技術建立Session,代碼如下:
圖3 腳本調(diào)用流程圖
Session=jsch.getSession(ShellConfigCache.getShellConfigCache().shellConfigEntity.getUserName(),ShellConfigCache.getShellConfigCache().shellConfigEntity.getIp(),ShellConfigCache.getShellConfigCache().shellConfigEntity.getPort());
Session.setPassword(ShellConfigCache.getShellConfigCache().shellConfigEntity.getPassword());
程序具體調(diào)用哪個腳本由ShellMan.config文件中定義的腳本名稱變量決定,shell變量指向哪個腳本文件,就執(zhí)行哪個腳本,其代碼如下:
((ChannelExec)channel).setCommand(shell);
3.3頁面實現(xiàn)
3.3.1集群部署
圖4所示為系統(tǒng)部署運行界面,部署分為單節(jié)點部署和多節(jié)點部署兩種方式,該界面為多節(jié)點部署界面.系統(tǒng)管理員在選擇操作系統(tǒng)、節(jié)點名稱和軟件名稱后就可以對相關節(jié)點進行部署,截圖下半部分的部署日志是部署過程中的輸出顯示,包括相關的服務啟動、節(jié)點安裝準備、節(jié)點狀態(tài)等信息.
圖4 系統(tǒng)部署運行界面
3.3.2應用管理
圖5是系統(tǒng)應用情況管理界面,界面上分布了五種節(jié)點應用類型的按鈕和一個同步部署情況按鈕.點擊5個按鈕中的任意一個,在下面會顯示出該類型節(jié)點的部署情況,包括軟件名稱、節(jié)點個數(shù)和節(jié)點名稱等.同步部署情況按鈕完成節(jié)點當前部署情況的同步查詢,按鈕點擊后會觸發(fā)相關腳本查詢所有節(jié)點并生成新的節(jié)點應用情況.
圖5 系統(tǒng)應用情況管理界面
3.3.3日志管理
圖6是日志管理界面,該界面中將部署時生成的日志以列表的形式列出,點擊每個日志文件名稱就會觸發(fā)查詢?nèi)罩灸_本,腳本成功執(zhí)行后就會列出部署時間、部署軟件、節(jié)點等信息.
圖6 日志管理界面
4 結束語
本文研究了Linux環(huán)境下的Shell腳本技術以及Web開發(fā)中腳本調(diào)用技術,并利用Shell腳本和JSP技術,設計和實現(xiàn)了集群部署管理系統(tǒng).該系統(tǒng)能夠完成集群大批量部署和單節(jié)點部署,滿足了系統(tǒng)管理人員對集群部署和應用情況查詢的基本需求,簡化了工作量,提高了集群系統(tǒng)管理效率.
參考文獻:
[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上的設計與實現(xiàn)[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公司,譯.北京:機械工業(yè)出版社,2009.
[7]鳥哥,王世江.鳥哥的Linux私房菜基礎學習篇[M].3版.北京:人民郵電出版社,2010.
[8]吳瓊,王穎,梁金鈐,等.Linux環(huán)境下基于Qt和xCAT的集群部署系統(tǒng)[J].計算機系統(tǒng)應用,2013,22(7):27-30.
[9]劉廣紅,董小社, 吳維剛, 等.基于Web的遠程集群系統(tǒng)管理設計與實現(xiàn)[J].計算機應用研究,2003,20(5):123-125.
(編輯:郝秀清)
收稿日期:2014-07-26
基金項目:黑龍江省高等教育科學研究“十二五”規(guī)劃課題(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