一種分布式集群系統及其實現方法
2023-06-09 01:26:31 1
專利名稱:一種分布式集群系統及其實現方法
技術領域:
本發明涉及計算機集群技術領域,具體涉及一種分布式集群系統及其實現方法。
背景技術:
目前的高性能計算集群規模都比較大,一個集群中包含上千個計算節點,在對這些計算節點管理和監控的過程中,需要通過分布式程序統一給這些節點發送請求,收集返回數據。傳統的分布式系統大多採用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日
發明者邸雙朋 申請人:浪潮(北京)電子信息產業有限公司