孫鵬 許瀚 陳晶晶 曹旭東



摘要:為了解決現有監控系統因主控節點功能太過集中而導致某些時刻網絡流量過大、系統擴展性差和無法及時應對節點失效的問題,提出了一種基于仿生自主神經系統(BANS)的新型云資源監控系統。首先,系統中引入了多級存儲、分批上報的機制,將需要上報的監控信息分批次分時段上傳匯總,使得在任何單一時刻系統內不會產生過大的流量和負載,保證了系統的穩定性;其次,系統中加入了類動態主機配置協議(DHCP)的主動發現機制以及定期輪詢策略,使得系統在處理新節點加入,節點故障問題時,獲得了類似仿生自主神經系統一樣的自組織、自修復能力。實驗結果表明,基于BANS的云資源監控系統實現了自組織與自修復的功能,并且可以有效降低系統內的通信流量,某些單一時刻能將流量降低到僅有原來的三分之一。
關鍵詞:
云計算;資源監控;仿生自主神經系統;云監控;自組織;自修復
中圖分類號: TP391.8 文獻標志碼:A
0引言
近年來,社會信息化程度越來越高,尤其是云計算技術的普及和廣泛應用,促使IT領域向集約化、規?;?、復雜化的方向發展[1]。監控系統在保障大規模復雜系統正常運行方面起著至關重要的作用?,F有的監控系統都是借鑒分布式計算和網格計算[2]的設計經驗,并不適合對云服務平臺進行監控。一方面云資源具有虛擬性,除了監控物理資源外還要監控具有寄宿關系的虛擬資源;另一方面云資源具有動態伸縮性,資源按需動態加入和退出,傳統監控系統無法應對;第三方面云計算是一種新型的商業計算模型,用戶按需使用并支付一定的費用,要求監控系統的監控粒度細化到進程[3]。傳統的監控系統無法做到,為此需要根據云計算的特點設計適合云平臺的監控系統。
目前,云監控系統大多采用UC Berkeley大學發起的分布式監控系統Ganglia[4],其可用于監控數以千計的集群節點,為云平臺提供系統的性能度量數據,層次結構的設計也使其具有了良好的擴展性[5],但這套系統在實際使用中,仍存在缺點[6]。首先,系統中眾多異常狀況都會匯聚到主節點進行分析,再處理,且主節點需要記錄系統所有的歷史信息,這會讓系統在異常處理與歷史信息記錄的時候產生大量的網絡流量,使得系統在某些特定時刻具有較大的通信負載;其次,當系統有新節點加入時,需要配置多個文件,以決定諸如Web界面的訪問權限、組播地址、節點輪詢順序配置等屬性,過程十分重復繁瑣,不利于系統硬件設施的更新與淘汰;最后,層次型的結構會使得中間層節點發生意外宕機時,部分子節點的狀態信息會無法統計,只能被動地等待宕機節點重啟后,方能重新開始統計,這樣會導致監控系統無法及時地發出失效警告,甚至影響到系統狀態統計的準確性。
針對以上問題,本文基于仿生學原理[7-9],設計提出了一種基于仿生自主神經系統的云資源監控系統(Cloud Monitoring System based on Bionic autonomic nervous system, BCMS)。該系統在繼承現有云監控系統占用資源少、高擴展性、支持高并發等特性的同時,設計了新的信息匯總與異常上報機制,且加入了自組織、自適應的特性,從而降低了網絡通信負載,賦予了監控系統智能識別新節點、自修復的能力,使得監控系統在大規模、超大規模云環境下,更加易于擴展,且具有更高的可靠性。
1BCMS整體設計
BANS類似于生物學中的自主神經系統,是一種在無意識的狀態下對動物的身體機能進行控制。比如,人的手指接觸到熱水會無意識地迅速收回等。除此之外,動物的心跳、呼吸系統、膝反射、血壓和免疫系統等都由自主神經系統控制[7]。
通過模擬生物神經系統的組織構造,BANS賦予計算機系統類似的自主能力。BANS主要由神經突軸、神經元、周圍神經以及中樞神經四層構成。BCMS具備5層架構,如圖1所示。
第1層人機交互層(HumanMachine Interaction, HMI)是人機交互的窗口。類似中樞神經中有意識控制的部分。
第2層中樞神經(Central Nerve, CNE)類似中樞神經系統中的無意識控制部分,進行自主決策和部分通信。監控系統中樞CNE對下層上傳數據進行分析,并進行決策處理,若無法處理時,則上傳至交互層HMI,借助管理員進行最終決策。監控系統中樞CNE有自己的記憶單元CMDB,存儲通過神經纖維傳輸的周圍神經(Peripheral Nerve, PN)和神經元(Cyber Neuron, CN)的歷史匯總信息和異常告警信息。監控系統中樞CNE只定期接收來至周圍神經PN的歷史匯總和異常,減少了網絡通信量。
第3層PN代表宿主節點,其功能類似于周圍神經,多個PN構成了周圍神經系統(Peripheral Nerve System, PNS),每個獨立的周圍神經系統域內會選舉出一個PN作為管理節點,記為MPN(Manage Peripheral Nerve),負責該周圍神經系統內所有信息的收集,接受神經元CN的查詢和傳達高層CNE的指示,每個周圍神經PN中運行數據采集器(Collector Worker, CW),用于收集本節點的監控數據。周圍神經PN,也有自己的記憶單元PNDB(Peripheral Nerver DataBase),作為二級存儲,存儲周圍神經PN自身的監控信息以及運行在該周圍神經PN上的寄主神經元CN的歷史匯總信息。當歷史信息容量到達某一設定值,或接收到中樞神經CNE指令的時候,PN會上報歷史信息匯總到CNE。另外,該層的存在,有分治的思想,系統故障的預診斷處理由該層負責,而最終的決策交給中樞CNE。
第4層CN,寄宿在節點之上的虛擬機(Virtual Machine, VM)類似于神經元,VM模塊具備數據傳輸和基礎數據分析的功能。每個神經元VM都隸屬于某個周圍神經PN。神經元VM通過下層神經突軸(Cyber Axon, CA)進行監控數據采集,并對采集信息進行分析、處理和匯總,完成和宿主PH的交互通信。VM具備有限的記憶單元VMDB(Virtual Machine DataBase),作為三級存儲,存儲歷史匯總或異常信息,隨后定期上報給上層節點,減少了網絡通信負載。
第5層CA,其主要功能為感知和反射,它負責收集監控信息并執行上層下發的命令。CW類似神經突軸,CW包含各個插件,每個插件都完成某項采集任務,如CPU、Memory、Disk和NetIO。CW對監控信息進行搜集;同時可以接收上層下傳的指令,執行相應的動作,如改變收集頻率或預警閾值等。
2BCMS關鍵特性設計
2.1自組織
考慮到云平臺內資源的動態增加和減少,對于小規模的集群這些資源的改變通過手動去改動配置是可行的;但是對于大規模的集群,靠手工去更改配置,將極大地降低管理員的工作效率,因此BCMS引入了一種機制去自動感知資源的動態增加和減少。受局域網的動態主機配置協議(Dynamic Host Configuration Protocol, DHCP)啟發,在BCMS中設計了一種動態發現資源機制[10]。模仿DHCP網絡協議,中樞神經CNE就是DHCP服務器。網絡環境中新增的節點被視為新增的資源,以PN的身份加入到整體系統中,PN通過組播的機制向CNE獲取監控中心節點的IP、自身資源類型、宿主關系等初始化信息。當然也可以像設置靜態IP一樣,手動地去添加這些信息,這樣一來就增加了靈活性。對于資源的退出,監控中心節點通過心跳機制來感覺。當資源加入到云平臺中后,資源就會以一定的頻率去組播自己的心跳信息,當監控中心節點在一定的超時時間內無法檢測到心跳信息,將自動從數據庫中刪除該資源的記錄。
2.2自修復
自主監控系統在運行過程中,針對故障的特點,采取主動的應對措施可以通過自我修復能力一定程度地排除故障,恢復正常運行[11-12],達到自修復的目的。對以下幾種故障,本文設計了相應的故障修復策略。首先,當域內的MPN節點失效時,區域內的PN在設定的時間內,接收不到MPN的心跳信息,則會判定MPN失效,隨后在這個區域內的PN會通過簡單的選舉機制,選出一個PN作為新的MPN。此外,當PN由于異常導致匯總數據失真,也可以通過域內的MPN的歷史匯總數據去反饋給PN,隨后PN下載新的插件并比較現有插件的MD5碼,比較判斷后,更新、修復自身插件;最后,當某神經元CN的宿主節點,被篡改了IP地址,影響了宿主虛擬機單元的服務提供,但由于其域內的MPN保存有宿主機的歷史信息,所以可以通過反饋比較,進而復原更新此CN所在PN的IP地址。
3BCMS各組成部分實現方法
3.1PN和MPN的實現
PN運行在被監控的資源之上,而MPN是PN的升級版,它只是比PN多了一個發言人的模塊,用于管理域內的其他PN,其余功能和PN一樣。
PN/MPN加入系統后會啟動4個線程,其工作流程描述如下。
1)主進程啟動,讀取配置文件,解析出配置參數,啟動動態資源發現機制的客戶端操作,組播請求加入監控請求,若動態資源發現機制失敗,每隔2min重新組播請求,嘗試10次,若還失敗,則程序停止運行。
2)根據服務器端返回的信息,決定是否將自己升級為MPN,若是則啟動發言人線程,若不是,則啟動感知發言人線程。感知發言人線程與發言人線程是實現BCMS自組織與自修復功能的核心線程。
3)啟動PN和MPN共有的度量采集線程和接受指令線程。
感知發言人線程是PN特有的線程,PN根據心跳信息來判斷MPN是否存活。心跳信息有兩類:一類是正常的心跳信息,另一類是新的MPN掌權的通知信息。正常情況下,MPN定期組播掌權心跳信息,區域內的其他PN會接受該心跳信息,并重置超時時間;異常情況下,某個PN在3個超時間隔過去后,還沒有收到MPN的心跳信息,此時它認定MPN宕機,準備接手MPN的工作,加載MPN所需的模塊,并通知區域內其他PN,在此過程中為了保證頂替PN的唯一性,PN的超時間隔隨機產生,從而減小區域內所有PN在同一時刻發現MPN宕機的概率,避免沖突。
發言人線程是MPN特有的線程,它主要完成PN作為發言人需要完成的任務,包括定期向CNE組播區域存在心跳并這兩句不太通順,請作相應調整。、定期向區域內所有PN組播掌權心跳包括定期向CNE組播區域存在的心跳,以及定期向區域內所有PN組播掌權心跳,接受來自CN的輪詢請求,并向其提供區域內資源的性能信息,接受來自CNE的指令,并逐一發送給區域內的所有PN,接收來自PN的異常告警信息,根據異常的類型,決定是立即處理還是向CNE報告。
度量采集線程是監控系統最基本的功能,該線程主要有兩大功能:性能信息的采集和采集信息的接收和發送,采集宿主服務節點的性能信息,并將該信息通過網絡組播給區域內其他資源,接收區域內其他資源組播的信息,并存儲在內存中,而不是馬上發給主節點,這樣可以減少通信負載。組播后,經過一個sleep時間,線程開始繼續監聽組播地址。sleep時間是根據主進程讀取的配置文件中的采集頻率計算得來,在計算的過程中還要考慮程序的執行時間,對sleep的時間稍作微調。在每次性能信息收集完成之后還要和性能的閾值進行比較。若超過閾值,則會啟動異常處理線程,將異常信息上報,這樣也將進一步降低通信負載,隨后會根據反饋的結果進行相應的處理。
指令執行線程則負責接收上層下達的指令,分析下達的指令,并創建進程去執行指令,若指令要求返回數據,還應將數據返回。
3.2CNE的實現
CNE運行在監控中心節點之上,和PN/MPN一樣,它也是采用多線程技術實現。CNE初始化讀取配置文件后,依次啟動存活心跳檢測線程、動態資源發現機制服務器端線程、自主分析決策線程、與HMI的交互線程、輪詢數據獲取線程五個線程來完成CNE的功能。動態資源發現機制服務器端線程和存活心跳檢測線程共同負責資源域存活列表的維護,資源域存活列表是進程中的一個鏈表結構,每一個鏈表節點對應一項記錄,一項記錄是對某個資源域的描述包括資源域的標示、資源域的描述、資源域的發言人信息、超時計數等信息,動態資源發現機制服務器端線程向存活列表添加記錄,存活心跳檢測線程更新存活列表。
存活心跳檢測線程初始化后,啟動另一線程負責接收心跳信息;同時自身以一定的頻率去遍歷存活列表這一鏈表結構。負責接受心跳信息的線程創建阻塞式監聽套接字,根據到來的心跳信息判斷是否是新的發言人掌權通知信息。
CNE的動態資源發現機制線程實現了監控系統自組織功能在服務器端的響應機制,其流程如圖2所示,初始化時,創建監聽套接字,進入監聽狀態,如果有請求信息到來,解析請求信息,根據解析的信息去云平臺CC數據庫中查詢是否有對應資源域的記錄項(CC數據庫是云平臺的管理程序維護的數據庫,CC數據庫中存儲了資源上線時的信息包括MAC地址、宿主關系、所屬資源域等,但該數據庫內的信息是靜態的,即寫入后不會動態變化)。若不能查到對應記錄,則返回查詢失敗信息,若能查到對應記錄還應該判斷發送請求的資源是否是新增資源域中的第一個資源,如果是還應去資源域存活列表結構中添加一項新的資源域記錄項,判斷結束后,將查詢到的信息包括資源的類型、宿主關系、所在資源域名字、所在資源域的發言人聯系方式等返回給發送請求的資源。
自主分析決策線程初始化時根據主進程讀取的配置文件,隨后,提取監聽端口等信息,創建監聽套接字,進入監聽狀態等待異常到來,其處理流程如圖3所示。
輪詢數據獲取線程初始化時讀取配置文件獲取輪詢間隔,設定輪詢頻率,接著遍歷存活,依次和存活列表中的發言人進行通信,獲取發言人所代表資源域的性能信息,解析收到的信息并存儲到數據庫中。
與HMI交互線程根據主進程讀取的配置文件,創建監聽套接字,進入監聽狀態等待Web界面發送指令。
3.3HMI的實現
HMI界面的實現涉及到PHP(Hypertext Preprocessor)、HTML(Hyper Text Markup Language)、CSS(Cascading Style Sheets)、JavaScript等網頁制作技術。HMI界面主要分為三大部分:云平臺總覽、狀態監控、集中控制。云平臺總覽用于展示平臺一系列的資源信息;狀態監控實時曲線顯示資源的性能信息,能顯示各個資源域的資源性能情況;集中控制提供下達指令接口,負責將用戶輸入的指令傳輸給后臺處理程序。
狀態監控實時曲線顯示的原理是根據存儲的數據產生png圖片,將png圖片顯示在Web界面,為了能實時顯示曲線的變化,需要按一定頻率產生png圖片顯示在Web界面上。當監控頁面打開后,頁面會按一定的頻率去向CN請求數據,一次請求就會生成一張png圖片并顯示在Web界面,當請求的頻率足夠小就能達到一種實時的效果。
4云資源監控系統測試結果分析
本次實驗分別對自組織功能、自修復功能、云資源監控系統的監控效率和監控數據的準確進行了分析和驗證。實驗采用2臺DELL高密服務器(具有4個計算節點),每個計算節點配置為:CPU為16 Core; Memory為128GB;Disk為3TB; Bandwidth為1000Mb/s。運行KVM虛擬機,配置:CPU為2 core; Memory為4GB; Disk為50GB; Bandwidth為1000Mb/s。服務器采用Debian 6.0.5,虛擬機采用Windows Sever 2008操作系統。
計算節點的分布和配置情況如表1所示。節點N1作為控制節點,是云監控系統的中樞神經CNE。N2、N3、N4作為從屬節點加入到系統中。N1、N2同屬A服務器,N3、N4同屬B服務器。因N1屬于控制節點,因此僅負載10個虛擬機在其上運行,其他節點都各自負載30個虛擬機。每個節點作為一個單獨的域,其中所屬的所有虛擬機組成一個獨立的周圍神經系統PNS。
4.1自組織功能測試
實驗如下,首先配置好N1,作為控制節點啟動,待所屬虛擬機全部啟動,系統網絡數據傳輸量穩定后;同時啟動N2、N3、N4節點,指定每個節點的1號虛擬機作為周圍神經的管理節點MPN,待3個節點虛擬機建立完畢,網絡數據傳輸曲線趨于穩定后,實驗結束。在實驗中,將記錄N2、N3、N4啟動后各個時間點的網絡數據傳輸量,以及每個節點成功啟動的虛擬機的數量(MPN收到虛擬機作為PN發出的確認信號后,即判定此虛擬機成功啟動),隨后繪制曲線。
由圖4可知,在節點啟動后,一段時間內,新虛擬機的建立與加入使得系統內流量大大增加。流量的增加來至于此句不通順,請作相應調整。系統的類DHCP自組織功能的實現流量的增加來自于系統內DHCP自組織功能的實現,在虛擬機加入系統時,會自動與控制節點CNE與域控制節點MPN進行信息交互,并下載配置信息。因而在此階段,系統網絡中存在大量的信息交互。此外,圖5反映了虛擬機加入過程中,整個系統的總虛擬機數。值得一提的是,在虛擬機數量圖中,N2節點的虛擬機建立速度,明顯快于N3和N4。分析可知,N2與控制節點N1同屬一臺服務器A,因此,網絡信息的傳遞更快。
4.2自修復功能測試
實驗環境描述如下,部署好所有節點和虛擬機,且系統正常運行(周期性地收到監控信息)后,選取節點N2包含的周圍神經系統PNS作為實驗域。
首先,繪制一段時間內,N2節點域內的網絡流量信息曲線,如圖6所示。
因MPN會周期性地要求域內的PN上報監控信息,且PN也會根據閾值自動上傳信息,因此可以得到如圖6所示的一段時間內,N2節點內部的通信流量。由圖6可以看出存在明顯的周期性特征。
隨后,人為地關閉N2節點中,作為域控制節點MPN的1號虛擬機。一段時間后,獲取1號虛擬機關閉前后一段時間內N2節點域內的流量數據,繪制如圖7所示。
根據圖6所展示的監控流量時間周期、流量大小信息,以及圖7所展示的失效時間內系統監控流量的變化可知,從9s處開始,流量傳輸出現了異常狀況,而根據流量數據的摘取時間范圍屬于關閉1號虛擬機前后的時間段來看,正好可以判定,此時MPN節點出現了異常。隨后從時間17s處開始,N2節點域內恢復了正常的監控流量傳輸。由此可以說明,系統很好地實現了自修復功能,且能在MPN節點出現狀況后在較短時間內選出新的主監控節點,使系統恢復正常的監控狀態。
4.3監控系統效率分析
云平臺A采用一臺DELL并部署Ganglia(Ganglia3.0.3)監控軟件;云平臺B部署BCMS。平臺A、B各選取1個計算節點作為監控中樞,啟動gmetad服務和Ncontrol等相關服務進程。各選取余下3個計算節點,并啟動30臺虛擬機,均部署gmond服務和Nagent/Nspeake數據采集服務。
在云平臺A和B中每臺虛擬機上運行測試程序,分別在監控中樞服務器上使用tcpdump命令測試網絡通信帶寬,并將30min內的網絡通信流量結果保存到指定文件中。測試結果如圖8所示(橫軸表示時間,單位為分鐘;豎軸表示網絡通信量,單位為:kb/s)。
在基于BANS的云資源監控系統中,監控中樞的網絡流量總和=f(歷史數據匯總+異常報警信息);在安裝Ganglia監控系統中,網絡流量總和=f(實時數據)。從圖4可以看出基于BANS的云資源監控系統,由于各層具有自主決策能力,減少了不必要數據的傳輸,對比發現,在某些單一時刻,流量最多能降低到原來的1/3左右。
4.4監控系統數據驗證
在云平臺A和B中,分別在一臺虛擬機上運行測試程序,記錄30min內虛擬機上CPU利用率的情況。測試結果如圖9圖9中橫軸的單位為秒,而此處文字描述的單位為min?到底以哪個為準?請明確。所示。
從圖9可以看出,BCMS和Ganglia系統的監控結果是基本吻合的,由此可知,該監控系統提供數據的真實、有效,反映了實際狀況。
5結語
本文針對現有監控系統網絡負載過重、擴展繁瑣、低可靠性問題進行了改進,提出了基于BANS構造的云資源監控模型,通過分級存儲,分批上報機制,降低了系統的網絡負載;同時引入新的發現與輪詢機制,賦予了監控系統自主能力,使得系統中的節點具有本地自治與自修復能力。后續工作可根據不同的監控特征劃分不同的周圍神經系統,進行按任務為導向的動態區域監控,并增加對歷史數據的進一步挖掘分析,實現更多自主決策機制,進一步擴展模型。
參考文獻:
[1]
MA S. A review on cloud computing development [J]. Journal of Networks, 2012, 7(2): 305-310.
[2]
GAO J, XIAO Y, LIU J, et al. A survey of communication/networking in smart grids [J]. Future Generation Computer Systems, 2012, 28(2): 391-404.
[3]
ACETO G, BOTTA A, DE DONATO W, et al. Cloud monitoring: a survey [J]. Computer Networks, 2013, 57(9): 2093-2115.
[4]
MASSIE M L, CHUN B N, CULLER D E. The Ganglia distributed monitoring system: design, implementation, and experience [J]. Parallel Computing, 2004, 30(7): 817-840.
[5]
SACERDOTI F D, KATZ M J, MASSIE M L, et al. Wide area cluster monitoring with ganglia [C]// Proceedings of the 2003 IEEE International Conference on Cluster Computing. Piscataway, NJ: IEEE, 2003: 289-298.
[6]
YANG C T, CHEN T T, CHEN S Y. Implementation of monitoring and information service using Ganglia and NWS for grid resource brokers [C]// Proceedings of the 2nd IEEE AsiaPacific Service Computing Conference. Piscataway, NJ: IEEE, 2007: 356-363.
[7]
HINCHEY M, DAI Y S, RASH J L, et al. Bionic autonomic nervous system and selfhealing for NASA ANTSlike missions [C]// Proceedings of the 2007 ACM Symposium on Applied Computing. New York: ACM, 2007: 90-96.
[8]
KEPHART J O, CHESS D M. The vision of autonomic computing [J]. Computer, 2003, 36(1): 41-50.
[9]
CARAFFINI F, NERI F, PICINALI L. An analysis on separability for memetic computing automatic design [J]. Information Sciences, 2014, 265: 1-22.(無期)
[10]
DROMS R. Stateless Dynamic Host Configuration Protocol (DHCP) Service for IPv6 [EB/OL]. [20150920]. http://tools.ietf.org/html/rfc3736.
[11]
HUEBSCHER M C, MCCANN J A. A survey of autonomic computing—degrees, models, and applications [J]. ACM Computing Surveys, 2008, 40(3): Article No. 7.
[12]
MARSHALL T, DAI Y S. Reliability improvement and models in autonomic computing [C]// Proceedings of the 11th International Conference on Parallel and Distributed Systems. Piscataway, NJ: IEEE, 2005: 468-472.