引言
從技術(shù)角度看,云計算是并行計算(Parallel Cornputing)、分布式計算(Distributed Computing)、集群計算(Cluster Computing)和網(wǎng)格計算(Grid Computing)的發(fā)展結(jié)果。以云計算為后臺的負(fù)載均衡技術(shù)旨在通過經(jīng)濟(jì)有效的技術(shù)手段解決企業(yè)IT基礎(chǔ)架構(gòu)的性能問題,通過本地資源及云端資源的合理調(diào)集,滿足應(yīng)用系統(tǒng)對于資源的常規(guī)和突發(fā)需求,使IT服務(wù)質(zhì)量有突破性的提升,從而支持平臺在規(guī)模上的大幅度提高。
企業(yè)許多敏感的信息必須放在機(jī)構(gòu)的防火墻之內(nèi)。如何在信息化服務(wù)平臺的投資與性能之間進(jìn)行折衷是一件很困難的事。由于對于季節(jié)性等負(fù)荷不均勻的平臺整個平臺的負(fù)載可能呈現(xiàn)出某種脈沖特性,而不是一般理論研究偏好的泊松分布。這就導(dǎo)致一種特殊的現(xiàn)象,即在多數(shù)時間內(nèi)大部分平臺資源被閑置,帶來的突發(fā)訪問量出現(xiàn)時,卻往往會產(chǎn)生嚴(yán)重的服務(wù)諸塞問題。虛擬主機(jī)托管在某種意義上如同IT資源購置的分期付款,雖然可以降低平臺建設(shè)的初始投資,卻無法從根本上解決由于IT資源浪費(fèi)造成的高額費(fèi)用問題。平臺投資問題對其發(fā)展規(guī)模始終是一個很大的制約因素。
本文引進(jìn)了虛擬技術(shù),對虛擬化后的計算資源和存儲資源進(jìn)行整合,形成資源池之后,通過有效的算法進(jìn)行動態(tài)分配利用,實現(xiàn)對資源利用率的最大化。在虛擬化技術(shù)基礎(chǔ)上,通過資源調(diào)度算法,把云端的資源納入統(tǒng)一調(diào)度,優(yōu)先使用本地資源,在本地資源不足的情況下調(diào)用云端資源保證性能負(fù)載需要,實現(xiàn)以云計算為后臺的負(fù)載均衡。本文要毹決的關(guān)鍵技術(shù)難點是如何設(shè)計以云計算為后臺的負(fù)載均衡技術(shù)架構(gòu),并設(shè)計有效的收集與分配資源算法,達(dá)到合理的資源調(diào)度,實現(xiàn)高效的負(fù)載均衡。
1 以云計算為后臺的負(fù)載均衡技術(shù)設(shè)計
均衡負(fù)載技術(shù)的應(yīng)用,可以充分利用資源,提升系統(tǒng)整體性能。傳統(tǒng)的負(fù)載均衡技術(shù)通常是基于服務(wù)器的響應(yīng)速度、連接數(shù)或輪詢方法,使用均衡負(fù)載技術(shù),大大提升了系統(tǒng)的負(fù)載能力及整體系統(tǒng)性能。但由于均衡的對象粒度太大,實際上很難達(dá)到較高的負(fù)載均衡效果。而虛擬化技術(shù)的應(yīng)用,使均衡的對象粒度明顯減小,原來的一臺物理服務(wù)器,可以虛擬成多臺虛擬服務(wù)器,虛擬化后的資源更加變得可以量化。虛擬化技術(shù),將底層的計算資源切分或合并成一個或多個運(yùn)行環(huán)境,以軟件的方式模擬硬件,通過軟件的方式邏輯切分服務(wù)器資源,形成統(tǒng)一的虛擬資源池,創(chuàng)建虛擬機(jī)運(yùn)行的獨(dú)立環(huán)境。這種邏輯結(jié)構(gòu)提供了靈活可變、易配置、可擴(kuò)展的平臺服務(wù),并且可以實現(xiàn)靈活有效的分布存儲和計算,從而整體上為實現(xiàn)強(qiáng)大的計算和海量數(shù)據(jù)存儲能力提供基礎(chǔ)保障。
在參照國外非專用集群技術(shù)的基礎(chǔ)上,本文提出一種混合的以云計算為后臺的負(fù)載擴(kuò)展技術(shù)架構(gòu),該技術(shù)架構(gòu)是對傳統(tǒng)IT架構(gòu)的改進(jìn),是利用云計算的超級存儲與計算能力及按需服務(wù)特點,擴(kuò)展企業(yè)或單位IT基礎(chǔ)設(shè)施的負(fù)載均衡能力。它的總體技術(shù)架構(gòu)如圖1所示。
圖1 以云計算為后臺的負(fù)栽擴(kuò)展總體技術(shù)架構(gòu)
圖中系統(tǒng)以本地服務(wù)器為用戶提供訪問入口,然后再根據(jù)負(fù)載實際需要把任務(wù)分配到云端。充分利用云的“超級”能力;在實際應(yīng)用,可以根據(jù)具體情況調(diào)整本地服務(wù)和云中心服務(wù)的比例,達(dá)到最實用效果;改進(jìn)的隨機(jī)均衡策略的基本原理是由一個中心服務(wù)器維護(hù)一個服務(wù)組件列表,并根據(jù)它們所處節(jié)點的計算能力構(gòu)造一個概率分布;當(dāng)用戶請求到來時,中心服務(wù)器按照上述概率分布將其隨機(jī)分配給列表中的某個組件?紤]到完全依賴靜態(tài)策略無法應(yīng)對系統(tǒng)運(yùn)行過程中可能出現(xiàn)的異常情況,在此增加了一個動態(tài)反饋環(huán)節(jié),即由未過載的節(jié)點定期發(fā)送心跳消息,如果中心服務(wù)器接收不到來自某個節(jié)點的心跳消息,即將該節(jié)點上的組件從服務(wù)列表中刪除。
2 以云計算為后臺的負(fù)載均衡技術(shù)實現(xiàn)
高性能計算集群是解決企業(yè)或單位IT性能的傳統(tǒng)有效手段,一般通過中間件等軟件基礎(chǔ)設(shè)施將計算任務(wù)分配到不同計算節(jié)點上以提高整體計算能力。本技術(shù)方案可視為高性能計算集群的一種改進(jìn)。為了實現(xiàn)以云計算為后臺的負(fù)載均衡技術(shù)。關(guān)鍵的工作是在上述支撐軟件平臺中引入對云端資源的管理能力,建立空閑資源共享池。通過調(diào)度算法調(diào)用位于工作站池中的空閑資源得到高吞吐量,計算用戶可以從工作站池中的任何一臺機(jī)器提交任務(wù),系統(tǒng)優(yōu)先從資源池中查找最合適的空閑機(jī),再以遠(yuǎn)程執(zhí)行的方式把任務(wù)派給這些機(jī)器。這相當(dāng)于把空閑處理機(jī)的CPU資源分配給需要的用戶,從而實現(xiàn)資源的共享。
上述中間件的基本功能是實現(xiàn)一個集中式的信息收集和任務(wù)分配機(jī)制。它可以監(jiān)視局域網(wǎng)中各個主機(jī)的負(fù)載情況,將處于空閑狀態(tài)的機(jī)器加入動態(tài)資源緩沖區(qū)中,并且在用戶提出CPU資源申請時,為其分配空閑的處理機(jī)資源或云端資源。系統(tǒng)保證當(dāng)一個任務(wù)在局域網(wǎng)內(nèi)被派至遠(yuǎn)程執(zhí)行時,該任務(wù)使用的是原機(jī)器的執(zhí)行環(huán)境,不會使用遠(yuǎn)程主機(jī)的文件系統(tǒng),以維護(hù)遠(yuǎn)程系統(tǒng)的安全。系統(tǒng)還保證主機(jī)的擁有者對自己的機(jī)器擁有絕對控制權(quán),并實行本地用戶優(yōu)先的任務(wù)調(diào)度原則,即當(dāng)本地任務(wù)出現(xiàn)時,遠(yuǎn)程任務(wù)將被中止。系統(tǒng)還提供一種機(jī)制,使得本地主機(jī)可以在某些意義上像使用自己的資源一樣使用分配給它的云端資源。技術(shù)實現(xiàn)方法如下:
本地集群中有一臺處理機(jī)被指定為中央管理機(jī),上面運(yùn)行兩個守護(hù)進(jìn)程N(yùn)egotiator和Collector,其中Collector負(fù)責(zé)從各處理機(jī)收集負(fù)載及任務(wù)隊列信息,并對上述信息列表進(jìn)行周期性更新,Negotiator負(fù)責(zé)空閑處理機(jī)的分配。集群中的其他機(jī)器運(yùn)行另外兩個守護(hù)進(jìn)程,分別為Schedd和Startd。其中Schedd負(fù)責(zé)維護(hù)任務(wù)隊列及更新中央管理機(jī)保存的任務(wù)隊列信息,當(dāng)本地節(jié)點中有未完成的任務(wù)時,負(fù)責(zé)與中央管理機(jī)協(xié)商,以獲得空閑機(jī)器的資源;Startd負(fù)責(zé)周期性地檢查本地節(jié)點負(fù)載狀態(tài)并更新中央管理機(jī)的負(fù)載信息表,當(dāng)本地節(jié)點被指定為外來任務(wù)提供服務(wù)時,Startd還負(fù)責(zé)啟動并管理該任務(wù)。除此之外,系統(tǒng)還要提供云端資源的代理。上述代理的實例將被Negotiator和Collector視為虛擬的本地主機(jī),與真實的本地主機(jī)納入統(tǒng)一的調(diào)度策略。
當(dāng)用戶激活提交程序并提交任務(wù)時,將由用戶處理機(jī)上的Schedd發(fā)送調(diào)度信息到位于中央管理機(jī)上的Negotiator,后者通過如下幾個步驟為該任務(wù)分配遠(yuǎn)程資源:
(1)Negotiator從中央管理機(jī)維護(hù)的集群處理機(jī)列表中獲得各處理機(jī)信息,包括各處理機(jī)的負(fù)載能力等。
(2)Negotiator確定(或更新)各處理機(jī)的任務(wù)優(yōu)先權(quán)。處理機(jī)的優(yōu)先權(quán)的確定可以采用多種算法,例如可根據(jù)處理機(jī)實際負(fù)債能力進(jìn)行連續(xù)動態(tài)更新,使其隨等待排隊中的任務(wù)數(shù)增加而增加,隨已提交到它的任務(wù)數(shù)和正運(yùn)行的任務(wù)數(shù)(包括本地運(yùn)行的)增加而減少。優(yōu)先權(quán)也可根據(jù)處理機(jī)預(yù)設(shè)或分階段更新的負(fù)載能力,按照某個靜態(tài)均衡策略進(jìn)行計算,本文將討論基于隨機(jī)均衡策略的算法。
(3)Negotiator從具有最高優(yōu)先權(quán)的處理機(jī)開始查詢,該處理機(jī)把等待任務(wù)所需的OS、結(jié)構(gòu)和任務(wù)大小提供給Negotiator。
(4)Negotiator選擇滿足要求的處理機(jī),其條件包括CPU和鍵盤是空閑的、滿足任務(wù)標(biāo)識的需求、滿足上述條件的處理機(jī)即為遠(yuǎn)程服務(wù)機(jī)。
Negotiator將重復(fù)以上第(2)~(4)步驟,直到為所有的等待任務(wù)找到合適的處理機(jī)或沒有發(fā)現(xiàn)合適的處理機(jī)為止。
上述過程由中央處理機(jī)上的Negotiator、任務(wù)源處理機(jī)上的Schedd、服務(wù)處理機(jī)上的Startd,以及它們所派生的Shadow和Starter進(jìn)程協(xié)調(diào)完成。首先,Negotiator發(fā)送一個帶有服務(wù)處理機(jī)名的Permission消息到任務(wù)源處理機(jī)上的Schedd,Schedd派生一個Shadow進(jìn)程與遠(yuǎn)程服務(wù)機(jī)上的Startd協(xié)調(diào)。負(fù)責(zé)以后的遠(yuǎn)程執(zhí)行工作。Startd根據(jù)Shadow的傳輸要求再評估當(dāng)前的工作負(fù)載和存儲空間等運(yùn)行環(huán)境是否發(fā)生了變化,如沒有變化,則創(chuàng)建兩個通信端口并送端口號到原處理機(jī)的Shadow。Startd接到Shadow的確認(rèn)后派生出Starter進(jìn)程。由它繼承上述通信端口并負(fù)責(zé)遠(yuǎn)程任務(wù)的執(zhí)行,然后還要通知中央管理機(jī)上的Collector有關(guān)工作負(fù)載的變化情況。Startd此后將繼續(xù)跟蹤Starter的狀態(tài)變化、掛起信號、以及遠(yuǎn)程任務(wù)的檢查點。系統(tǒng)提供的檢查點機(jī)制用于實現(xiàn)進(jìn)程遷移、負(fù)載均衡和容錯等。
3 以云計算為后臺的本地負(fù)載均衡算法
資源虛擬化后。通過什么算法響應(yīng)資源需求是關(guān)鍵問題。本文提出了隨機(jī)均衡策略,其核心工作是構(gòu)造一個概率分布;當(dāng)用戶請求到來時,中心服務(wù)器按照上述概率分布將其隨機(jī)分配給運(yùn)行在個節(jié)點上的組件。為此引入一個簡單模型。假定:
(1)每個節(jié)點上只運(yùn)行一個服務(wù)組件;
(2)每個用戶請求對應(yīng)一個組件實例,所有實例的優(yōu)先級相同;
(3)用戶請求到達(dá)時間與服務(wù)時間都滿足泊松分布;
(4)平臺因任務(wù)調(diào)度而消耗的資源可以忽略,則V r>0,當(dāng)△t足夠小時,任意節(jié)點正在服務(wù)的用戶數(shù)從r轉(zhuǎn)移到r一1。r,r+1的概率與單隊列單服務(wù)臺簡單服務(wù)系統(tǒng)(M\M\1)中的情況完全相同,如圖2所示。
根據(jù)排隊論的研究結(jié)果可知,當(dāng)系統(tǒng)進(jìn)入穩(wěn)態(tài)時,節(jié)點i中正在接受服務(wù)的用戶數(shù)期望值將是:λi/(μi一λi)。
圖2 節(jié)點狀態(tài)轉(zhuǎn)移示意圖
4 原型試驗
為了實現(xiàn)均衡負(fù)載。參照一些云計算的關(guān)鍵技術(shù)與應(yīng)用實例[93作者還開發(fā)了一個基于云計算技術(shù)的負(fù)載均衡系統(tǒng)原型。其中心服務(wù)器被分解為Collector和Negotiator兩個部分,分別利用兩個無狀態(tài)會話EJB加以實現(xiàn)。
Collector的功能:主要負(fù)責(zé)收集各服務(wù)節(jié)點的心跳消息,并對服務(wù)對象/組件列表進(jìn)行周期性更新。為了便于云端節(jié)點訪問,把Collector發(fā)布為Web服務(wù)。
Negotiator功能:它是一個Dispatcher(分發(fā)器),因為其直接根據(jù)Collector維護(hù)的服務(wù)對象/組件列表把用戶請求分發(fā)到不同節(jié)點上。
該實驗開發(fā)了一個帶有用戶圖形界面(GUI)的服務(wù)節(jié)點控制與狀態(tài)信息收集器原型。該原型由一個主控臺和一個后臺探測器線程組成,可以半自動完成Collector的功能。服務(wù)對象/組件列表放在Negotiatot,并允許系統(tǒng)管理員通過主控臺對上述列表進(jìn)行操縱,從而實現(xiàn)對于各節(jié)點上的服務(wù)器,包括云端的虛擬服務(wù)器進(jìn)行激活(Activate)、去活(Deactivate)等控制。
對于Negotiator,其主要構(gòu)件包括一個代理工廠、一個服務(wù)對象/組件列表、以及一個負(fù)載均衡算法。當(dāng)客戶請求到達(dá)時,代理工廠先查詢上述列表以確定各服務(wù)器狀態(tài),再根據(jù)均衡算法針對特定節(jié)點上的服務(wù)對象/組件產(chǎn)生一個代理實例,并返回給客戶?蛻衾蒙鲜龃砑纯蓮暮线m的節(jié)點獲得服務(wù)。通過該原型進(jìn)行了試驗發(fā)現(xiàn),獲得結(jié)果是比較滿意。如圖3,圖4所示。
圖3 實驗客戶端
5 結(jié)論
通過實驗發(fā)現(xiàn),在本地負(fù)載不足時,通過啟用云端的資源,使得服務(wù)滿足負(fù)載波動需要,可以很好解決負(fù)載的“調(diào)蜂”問題。
圖4 負(fù)載均衡系統(tǒng)原型試驗
感謝廈門大學(xué)計算機(jī)系鄭建德教授對本文的研究工作提供的無私幫助。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:以云計算為后臺的負(fù)載均衡技術(shù)
本文網(wǎng)址:http://www.ezxoed.cn/html/support/1112157063.html