引言
從技術角度看,云計算是并行計算(Parallel Cornputing)、分布式計算(Distributed Computing)、集群計算(Cluster Computing)和網(wǎng)格計算(Grid Computing)的發(fā)展結果。以云計算為后臺的負載均衡技術旨在通過經(jīng)濟有效的技術手段解決企業(yè)IT基礎架構的性能問題,通過本地資源及云端資源的合理調集,滿足應用系統(tǒng)對于資源的常規(guī)和突發(fā)需求,使IT服務質量有突破性的提升,從而支持平臺在規(guī)模上的大幅度提高。
企業(yè)許多敏感的信息必須放在機構的防火墻之內(nèi)。如何在信息化服務平臺的投資與性能之間進行折衷是一件很困難的事。由于對于季節(jié)性等負荷不均勻的平臺整個平臺的負載可能呈現(xiàn)出某種脈沖特性,而不是一般理論研究偏好的泊松分布。這就導致一種特殊的現(xiàn)象,即在多數(shù)時間內(nèi)大部分平臺資源被閑置,帶來的突發(fā)訪問量出現(xiàn)時,卻往往會產(chǎn)生嚴重的服務諸塞問題。虛擬主機托管在某種意義上如同IT資源購置的分期付款,雖然可以降低平臺建設的初始投資,卻無法從根本上解決由于IT資源浪費造成的高額費用問題。平臺投資問題對其發(fā)展規(guī)模始終是一個很大的制約因素。
本文引進了虛擬技術,對虛擬化后的計算資源和存儲資源進行整合,形成資源池之后,通過有效的算法進行動態(tài)分配利用,實現(xiàn)對資源利用率的最大化。在虛擬化技術基礎上,通過資源調度算法,把云端的資源納入統(tǒng)一調度,優(yōu)先使用本地資源,在本地資源不足的情況下調用云端資源保證性能負載需要,實現(xiàn)以云計算為后臺的負載均衡。本文要毹決的關鍵技術難點是如何設計以云計算為后臺的負載均衡技術架構,并設計有效的收集與分配資源算法,達到合理的資源調度,實現(xiàn)高效的負載均衡。
1 以云計算為后臺的負載均衡技術設計
均衡負載技術的應用,可以充分利用資源,提升系統(tǒng)整體性能。傳統(tǒng)的負載均衡技術通常是基于服務器的響應速度、連接數(shù)或輪詢方法,使用均衡負載技術,大大提升了系統(tǒng)的負載能力及整體系統(tǒng)性能。但由于均衡的對象粒度太大,實際上很難達到較高的負載均衡效果。而虛擬化技術的應用,使均衡的對象粒度明顯減小,原來的一臺物理服務器,可以虛擬成多臺虛擬服務器,虛擬化后的資源更加變得可以量化。虛擬化技術,將底層的計算資源切分或合并成一個或多個運行環(huán)境,以軟件的方式模擬硬件,通過軟件的方式邏輯切分服務器資源,形成統(tǒng)一的虛擬資源池,創(chuàng)建虛擬機運行的獨立環(huán)境。這種邏輯結構提供了靈活可變、易配置、可擴展的平臺服務,并且可以實現(xiàn)靈活有效的分布存儲和計算,從而整體上為實現(xiàn)強大的計算和海量數(shù)據(jù)存儲能力提供基礎保障。
在參照國外非專用集群技術的基礎上,本文提出一種混合的以云計算為后臺的負載擴展技術架構,該技術架構是對傳統(tǒng)IT架構的改進,是利用云計算的超級存儲與計算能力及按需服務特點,擴展企業(yè)或單位IT基礎設施的負載均衡能力。它的總體技術架構如圖1所示。

圖1 以云計算為后臺的負栽擴展總體技術架構
圖中系統(tǒng)以本地服務器為用戶提供訪問入口,然后再根據(jù)負載實際需要把任務分配到云端。充分利用云的“超級”能力;在實際應用,可以根據(jù)具體情況調整本地服務和云中心服務的比例,達到最實用效果;改進的隨機均衡策略的基本原理是由一個中心服務器維護一個服務組件列表,并根據(jù)它們所處節(jié)點的計算能力構造一個概率分布;當用戶請求到來時,中心服務器按照上述概率分布將其隨機分配給列表中的某個組件。考慮到完全依賴靜態(tài)策略無法應對系統(tǒng)運行過程中可能出現(xiàn)的異常情況,在此增加了一個動態(tài)反饋環(huán)節(jié),即由未過載的節(jié)點定期發(fā)送心跳消息,如果中心服務器接收不到來自某個節(jié)點的心跳消息,即將該節(jié)點上的組件從服務列表中刪除。
2 以云計算為后臺的負載均衡技術實現(xiàn)
高性能計算集群是解決企業(yè)或單位IT性能的傳統(tǒng)有效手段,一般通過中間件等軟件基礎設施將計算任務分配到不同計算節(jié)點上以提高整體計算能力。本技術方案可視為高性能計算集群的一種改進。為了實現(xiàn)以云計算為后臺的負載均衡技術。關鍵的工作是在上述支撐軟件平臺中引入對云端資源的管理能力,建立空閑資源共享池。通過調度算法調用位于工作站池中的空閑資源得到高吞吐量,計算用戶可以從工作站池中的任何一臺機器提交任務,系統(tǒng)優(yōu)先從資源池中查找最合適的空閑機,再以遠程執(zhí)行的方式把任務派給這些機器。這相當于把空閑處理機的CPU資源分配給需要的用戶,從而實現(xiàn)資源的共享。
上述中間件的基本功能是實現(xiàn)一個集中式的信息收集和任務分配機制。它可以監(jiān)視局域網(wǎng)中各個主機的負載情況,將處于空閑狀態(tài)的機器加入動態(tài)資源緩沖區(qū)中,并且在用戶提出CPU資源申請時,為其分配空閑的處理機資源或云端資源。系統(tǒng)保證當一個任務在局域網(wǎng)內(nèi)被派至遠程執(zhí)行時,該任務使用的是原機器的執(zhí)行環(huán)境,不會使用遠程主機的文件系統(tǒng),以維護遠程系統(tǒng)的安全。系統(tǒng)還保證主機的擁有者對自己的機器擁有絕對控制權,并實行本地用戶優(yōu)先的任務調度原則,即當本地任務出現(xiàn)時,遠程任務將被中止。系統(tǒng)還提供一種機制,使得本地主機可以在某些意義上像使用自己的資源一樣使用分配給它的云端資源。技術實現(xiàn)方法如下:
本地集群中有一臺處理機被指定為中央管理機,上面運行兩個守護進程Negotiator和Collector,其中Collector負責從各處理機收集負載及任務隊列信息,并對上述信息列表進行周期性更新,Negotiator負責空閑處理機的分配。集群中的其他機器運行另外兩個守護進程,分別為Schedd和Startd。其中Schedd負責維護任務隊列及更新中央管理機保存的任務隊列信息,當本地節(jié)點中有未完成的任務時,負責與中央管理機協(xié)商,以獲得空閑機器的資源;Startd負責周期性地檢查本地節(jié)點負載狀態(tài)并更新中央管理機的負載信息表,當本地節(jié)點被指定為外來任務提供服務時,Startd還負責啟動并管理該任務。除此之外,系統(tǒng)還要提供云端資源的代理。上述代理的實例將被Negotiator和Collector視為虛擬的本地主機,與真實的本地主機納入統(tǒng)一的調度策略。
當用戶激活提交程序并提交任務時,將由用戶處理機上的Schedd發(fā)送調度信息到位于中央管理機上的Negotiator,后者通過如下幾個步驟為該任務分配遠程資源:
(1)Negotiator從中央管理機維護的集群處理機列表中獲得各處理機信息,包括各處理機的負載能力等。
(2)Negotiator確定(或更新)各處理機的任務優(yōu)先權。處理機的優(yōu)先權的確定可以采用多種算法,例如可根據(jù)處理機實際負債能力進行連續(xù)動態(tài)更新,使其隨等待排隊中的任務數(shù)增加而增加,隨已提交到它的任務數(shù)和正運行的任務數(shù)(包括本地運行的)增加而減少。優(yōu)先權也可根據(jù)處理機預設或分階段更新的負載能力,按照某個靜態(tài)均衡策略進行計算,本文將討論基于隨機均衡策略的算法。
(3)Negotiator從具有最高優(yōu)先權的處理機開始查詢,該處理機把等待任務所需的OS、結構和任務大小提供給Negotiator。
(4)Negotiator選擇滿足要求的處理機,其條件包括CPU和鍵盤是空閑的、滿足任務標識的需求、滿足上述條件的處理機即為遠程服務機。
Negotiator將重復以上第(2)~(4)步驟,直到為所有的等待任務找到合適的處理機或沒有發(fā)現(xiàn)合適的處理機為止。
上述過程由中央處理機上的Negotiator、任務源處理機上的Schedd、服務處理機上的Startd,以及它們所派生的Shadow和Starter進程協(xié)調完成。首先,Negotiator發(fā)送一個帶有服務處理機名的Permission消息到任務源處理機上的Schedd,Schedd派生一個Shadow進程與遠程服務機上的Startd協(xié)調。負責以后的遠程執(zhí)行工作。Startd根據(jù)Shadow的傳輸要求再評估當前的工作負載和存儲空間等運行環(huán)境是否發(fā)生了變化,如沒有變化,則創(chuàng)建兩個通信端口并送端口號到原處理機的Shadow。Startd接到Shadow的確認后派生出Starter進程。由它繼承上述通信端口并負責遠程任務的執(zhí)行,然后還要通知中央管理機上的Collector有關工作負載的變化情況。Startd此后將繼續(xù)跟蹤Starter的狀態(tài)變化、掛起信號、以及遠程任務的檢查點。系統(tǒng)提供的檢查點機制用于實現(xiàn)進程遷移、負載均衡和容錯等。
3 以云計算為后臺的本地負載均衡算法
資源虛擬化后。通過什么算法響應資源需求是關鍵問題。本文提出了隨機均衡策略,其核心工作是構造一個概率分布;當用戶請求到來時,中心服務器按照上述概率分布將其隨機分配給運行在個節(jié)點上的組件。為此引入一個簡單模型。假定:
(1)每個節(jié)點上只運行一個服務組件;
(2)每個用戶請求對應一個組件實例,所有實例的優(yōu)先級相同;
(3)用戶請求到達時間與服務時間都滿足泊松分布;
(4)平臺因任務調度而消耗的資源可以忽略,則V r>0,當△t足夠小時,任意節(jié)點正在服務的用戶數(shù)從r轉移到r一1。r,r+1的概率與單隊列單服務臺簡單服務系統(tǒng)(M\M\1)中的情況完全相同,如圖2所示。
根據(jù)排隊論的研究結果可知,當系統(tǒng)進入穩(wěn)態(tài)時,節(jié)點i中正在接受服務的用戶數(shù)期望值將是:λi/(μi一λi)。

圖2 節(jié)點狀態(tài)轉移示意圖
4 原型試驗
為了實現(xiàn)均衡負載。參照一些云計算的關鍵技術與應用實例[93作者還開發(fā)了一個基于云計算技術的負載均衡系統(tǒng)原型。其中心服務器被分解為Collector和Negotiator兩個部分,分別利用兩個無狀態(tài)會話EJB加以實現(xiàn)。
Collector的功能:主要負責收集各服務節(jié)點的心跳消息,并對服務對象/組件列表進行周期性更新。為了便于云端節(jié)點訪問,把Collector發(fā)布為Web服務。
Negotiator功能:它是一個Dispatcher(分發(fā)器),因為其直接根據(jù)Collector維護的服務對象/組件列表把用戶請求分發(fā)到不同節(jié)點上。
該實驗開發(fā)了一個帶有用戶圖形界面(GUI)的服務節(jié)點控制與狀態(tài)信息收集器原型。該原型由一個主控臺和一個后臺探測器線程組成,可以半自動完成Collector的功能。服務對象/組件列表放在Negotiatot,并允許系統(tǒng)管理員通過主控臺對上述列表進行操縱,從而實現(xiàn)對于各節(jié)點上的服務器,包括云端的虛擬服務器進行激活(Activate)、去活(Deactivate)等控制。
對于Negotiator,其主要構件包括一個代理工廠、一個服務對象/組件列表、以及一個負載均衡算法。當客戶請求到達時,代理工廠先查詢上述列表以確定各服務器狀態(tài),再根據(jù)均衡算法針對特定節(jié)點上的服務對象/組件產(chǎn)生一個代理實例,并返回給客戶。客戶利用上述代理即可從合適的節(jié)點獲得服務。通過該原型進行了試驗發(fā)現(xiàn),獲得結果是比較滿意。如圖3,圖4所示。

圖3 實驗客戶端
5 結論
通過實驗發(fā)現(xiàn),在本地負載不足時,通過啟用云端的資源,使得服務滿足負載波動需要,可以很好解決負載的“調蜂”問題。

圖4 負載均衡系統(tǒng)原型試驗
感謝廈門大學計算機系鄭建德教授對本文的研究工作提供的無私幫助。
核心關注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務領域、行業(yè)應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業(yè)務領域的管理,全面涵蓋了企業(yè)關注ERP管理系統(tǒng)的核心領域,是眾多中小企業(yè)信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網(wǎng)http://www.shjqjggc.cn/
本文標題:以云計算為后臺的負載均衡技術
本文網(wǎng)址:http://www.shjqjggc.cn/html/support/1112157063.html
























