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