close
書摘─實現雲端運算的關鍵技術
文/iThome (記者) 2010-04-23
原文轉自:http://www.ithome.com.tw/itadm/article.php?c=60737

雲端運算為當代資訊技術帶來一系列的創新與挑戰,有些是傳統運算平臺中的經典問題,有些則是雲端運算中的新問題、新技術 


雲端策略

陳瀅等/著
天下雜誌出版
售價:420元


 

雲端運算的理念生動地體現出網路時代的資訊服務特性,一系列技術創新不斷被更新,以解決網路平台的服務生命週期管理問題,大規模分散式運算、儲存、通訊,以及資源隨需供應、按量計費問題。接下來我們將更深入討論雲端運算,著重在快速部署、資源調度、多租戶、巨量資料處理、大規模訊息傳輸、大規模分散式儲存、授權管理與計費等關鍵技術。 

快速部署 
自資料中心誕生以來,快速部署就是項重要的功能需求。資料中心管理員和用戶不斷追求更快、更高效、更靈活、功能更齊全的部署方案。雲端運算環境對快速部署的要求將會更高。首先,在雲端環境中的資源和應用不但規模變化範圍大且動態性高,用戶所需的服務主要採用「按需部署」的方式,即用戶隨時呼叫對資源和應用,雲端環境管理程式負責分配資源,部署服務;其次,不同層次雲端運算環境中服務的部署模式是不一樣的,比如虛擬化的基礎架構雲上的應用都被封裝在虛擬機裡,而多租戶平台上的應用則會選擇輕型、較小的封裝方案。另外,部署過程所支援的軟體系統形式很多樣,系統結構各不相同,部署工具要能適應被部署物件的變化。 

串流的虛擬機部署方法可以有效減少單一虛擬機的部署時間。包含了作業系統、中介軟體、應用軟體的虛擬機映像,大小通常為幾個GB到幾十個GB,映像的複製速度會嚴重影響虛擬機的部署速度和用戶體驗;另外,虛擬機的啟動囊括整個軟體堆疊的組態和關聯,操作非常複雜,自動化程度的高低直接關係著虛擬機部署的效率。因此,即使採用了串流來部署,過程仍然會耗費大量時間。此外,在部署多個虛擬機時,串流式的虛擬機部署是順序的、串列的,若想進一步提高雲端環境中虛擬機的部署速度,則需要考慮平行部署或者協同部署技術。 

平行部署是指將傳統的順序部署方式改變為平行執行,同時執行多個雲部署任務,將虛擬機同時部署到多個實體伺服器上。如圖4.1所示。 


理想情況下,平行部署可以雙倍減少部署所需時間,但儲存映像檔所在部署伺服器的讀寫能力,或者部署系統有限的網路頻寬,卻也限制了實際的平行程度(即部署速度)。例如,在網路頻寬有限的情況下,同時運行多個部署任務時,這些任務會搶頻寬,當網路頻寬被佔滿時,部署速度就無法進一步提高。在這種情況下,協同部署技術可用來進一步提高部署速度。 

協同部署技術的核心是將虛擬機映像在多個目標實體伺服器間的網路中傳輸,而非僅在部署伺服器和目標實體伺服器之間傳輸,進而提高部署速度。透過協同部署,網路頻寬就不再是限制部署速度的瓶頸,部署的速度上限取決於各目標實體伺服器間的網路頻寬總和。利用虛擬化技術和協同部署技術,我們可以建構一個協同部署系統,進而確保大規模資料中心服務的部署速度、效率和品質。如圖4.2所示,協同部署系統的架構包括了部署伺服器節點(圖中的雲部署伺服器)和被部署節點(圖中的實體主機A、B、C),關鍵模組包括部署控制器、映像拷貝器、協同部署器和協同控制器等。 


部署伺服器負責將協同部署器及用戶空間檔案系統(透過I/O操作截獲技術,將用戶的本地檔存取重定向到網路上)的安裝檔發送到被部署節點,並發起部署任務;部署控制器負責協調各個節點間的部署進度,交換檔案資訊;被部署的節點在部署任務開始以後,根據啟動順序向用戶空間文件系統,呼叫虛擬映像資料集,用戶空間檔案系統呼叫協同部署器獲取文件區塊。協同部署技術能大幅提高部署速度。由於實體伺服器間存在大量共用頻寬,因此協同部署可能會影響其他實體伺服器的網路頻寬。 

平行部署和協同部署技術同樣可以運用到實體解決方案的自動化部署過程中,加速部署過程。雲端環境中實體解決方案的部署,是指在實體平台上安裝軟體環境。首先,雲端的硬體環境搭建起來以後,需要在這些硬體上安裝雲端軟體環境,包括大規模的作業系統的部署、虛擬機運行平台的組態、雲基礎架構層管理軟體的安裝等。其次,在擴展雲平台架構的時候(例如為現有的資料中心加入新的實體伺服器),需要在新節點上面部署和組態作業系統、虛擬化平台、中介軟體等全套軟體。 

與虛擬機的部署相比,實體解決方案自動化部署的難處在於軟體的多樣化和解決方案的複雜性。為了能夠自動化部署實體解決方案,需要定義一種標準格式來封裝解決方案,將軟體程式檔、安裝組態script、metadata等內容一起封裝;還需要一個通用的部署引擎,以及一組自動化安裝組態流程。透過這種方式,部署引擎在接收到解決方案的封裝文件以後,解析解決方案的metadata,按照自動化流程驅動整個解決方案的安裝組態過程。 

資源調度 
資源調度指的是,在特定的資源環境下,根據一定的資源使用規則,在不同使用者間進行資源調整的過程。這些資源使用者對應著不同的運算任務(例如虛擬化解決方案),每個運算任務在作業系統中對應一個或者多個流程。運算任務的資源調度通常有兩種途徑:在運算任務所在硬體上調整資源使用量,或者將運算任務轉移到其他機器上。圖4.3是將運算任務搬移到其他機器上的例子。在這個例子中,實體資源A(如一台實體伺服器)的使用率遠高於實體資源B,透過將運算任務一從實體資源A搬移到實體資源B,使資源的使用更加均衡合理,達到負載平衡的目的。 


目前的技術已經可在幾秒內(暫時停機時間為毫秒級)將一個作業系統進程,從一台機器搬移到另一台機器。這種作業系統流程的動態搬移技術,能夠實現運算任務在不同機器間的搬移。虛擬機的出現,使得所有的運算任務都被封裝在一個虛擬機內部。由於虛擬機具有隔離特性,因此可以採用虛擬機的動態搬移方案,達到運算任務搬移的目的。 

雲端運算的巨量規模為資源調度帶來了新挑戰。資源調度需要考慮資源的即時使用情況,這就要求對雲端運算環境的資源進行即時監控和管理。雲端運算環境中資源的種類多、規模大,使得即時監控和管理變得十分困難。此外,一個雲端運算環境可能有成千上萬的運算任務,這對調度演算法的複雜性、有效性提出了挑戰。對於基於虛擬化技術的雲基礎架構層,虛擬機的大小一般都在幾個GB以上,大規模平行的虛擬機搬移作業,很可能會因網路頻寬等因素的限制,而變得非常緩慢。 

從調度的粗粒度來看,虛擬機內部應用的調度是雲端運算用戶更加關心的。如何調度資源滿足虛擬機內部應用的「服務層級協議」(SLA),也是目前待解難題之一。以效能為例,應用資源調度系統需要監控應用的即時效能指標,例如吞吐量、回應時間等。利用這些效能指標,結合歷史紀錄及預測模型,分析出未來可能的效能值,並與用戶預先制訂的優化規則進行比對,再結論應用是否需要,以及如何進行資源調整。目前,大多數虛擬化管理方案只能透過在虛擬機級別上的調度技術結合特定調度策略,嘗試為虛擬機內部應用做資源調度,普遍缺乏精確性和效果。

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 unix 的頭像
    unix

    程式開發ㄅㄆㄇ -歡迎光臨 Inuiüni 幼稚園

    unix 發表在 痞客邦 留言(0) 人氣()