- 云計算概論:基礎、技術、商務、應用(第二版)
- 湯兵勇
- 3039字
- 2020-02-26 13:38:23
2.2 基礎設施即服務(IaaS)
基礎設施層使得經過虛擬化后的計算資源、存儲資源和網絡資源能夠以基礎設施即服務(IaaS)的方式通過網絡被用戶使用和管理。雖然不同云提供商的基礎設施層在其所提供的服務上有所差異,但是作為提供底層基礎資源的服務,該層一般都具有以下基本功能。
2.2.1 資源抽象
當要搭建基礎設施層的時候,首先面對的是大規模的硬件資源,比如通過網絡相互連接的服務器和存儲設備等。為了能夠實現高層次的資源管理邏輯,必須對資源進行抽象,也就是對硬件資源進行虛擬化。
虛擬化的過程一方面需要屏蔽掉硬件產品上的差異,另一方面需要對每一種硬件資源提供統一的管理邏輯和接口。值得注意的是,根據基礎設施層實現的邏輯不同,同一類型資源的不同虛擬化方法可能存在著非常大的差異。目前,存儲虛擬化方面的主流技術有IBM SAN Volume Controller、IBM Tivoli Storage Manager(TSM)、Google File System、Hadoop Distributed File System和VM Ware Virtual Machine File System等。
另外,根據業務邏輯和基礎設施層服務接口的需要,基礎設施層資源的抽象往往是具有多個層次的。例如,目前業界提出的資源模型中就出現了虛擬機(Virtual Machine)、集群(Cluster)、虛擬數據中心(Virtual Data Center)和云(Cloud)等若干層次分明的資源抽象。資源抽象為上層資源管理邏輯定義了操作的對象和粒度,是構建基礎設施層的基礎。如何對不同品牌和型號的物理資源進行抽象,以一個全局統一的資源池的方式進行管理并呈現給客戶,是基礎設施層必須解決的一個核心問題。
2.2.2 資源監控
資源監控是負載管理的前提,是保證基礎設施層高效率工作的一個關鍵任務。基礎設施層對不同類型的資源監控方法是不同的。對于CPU,通常監控的是CPU的使用率。對于內存和存儲,除了監控使用率,還會根據需要監控讀寫操作。對于網絡,則需要對網絡實時的輸入、輸出及路由狀態進行監控。
基礎設施層首先需要根據資源的抽象模型建立一個資源監控模型,用來描述資源監控的內容及其屬性。例如Amazon公司的Cloud watch是一個提供給用戶來監控Amazon EC2實例并負責負載均衡的Web服務,該服務定義了一組監控模型,使得用戶可以基于模型使用監控工具對ECZ實例進行實時監測,并在此基礎上進行負載均衡決策。同時,資源監控還具有不同的粒度和抽象層次。典型的資源監控是對某個具體的解決方案整體進行監控。一個解決方案往往由多個虛擬資源組成,整體監控結果是對解決方案各個部分監控結果的整合。通過對結果進行分析,用戶可以更加直觀地監控到資源的使用情況及其對性能的影響,從而采取必要的操作對解決方案進行調整。
2.2.3 負載管理
在基礎設施層這樣大規模的資源集群環境中,任何時刻所有節點的負載都不是均勻的,如圖2-3(a)所示。

圖2-3 基礎設施負載管理示意圖
如果節點的資源利用率合理,即使它們的負載在一定程度上不均勻也不會導致嚴重的問題。可是,當太多節點資源利用率過低或者節點之間負載差異過大時,就會造成一系列突出的問題。如果太多節點負載較低,會造成資源上的浪費,就需要基礎設施層提供自動化的負載平衡機制將負載進行合并,提高資源使用率并且關閉負載整合后閑置的資源;如果資源利用率差異過大,則會造成有些節點的負載過高,上層服務的性能受到影響,而另外一些節點的負載太低,資源沒能充分利用,這時就需要基礎設施層的自動化負載平衡機制將負載進行轉移,即從負載過高節點轉移到負載過低節點,從而使得所有的資源在整體負載和整體利用率上面趨于平衡,如圖2-3(b)所示。
2.2.4 數據管理
在云計算環境中,現實中軟件系統經常處理的數據分為很多不同的種類,如結構化的XML數據、非結構化的二進制數據及關系型的數據庫數據等。不同的基礎設施層所提供的功能不同,會使得數據管理的實現有著非常大的差異。由于基礎設施層由數據中心中大規模的服務器集群所組成,甚至由若干不同數據中心的服務器集群組成,因此數據的完整性、可靠性和可管理性是對基礎設施層數據管理的基本要求。
具體的要求體現在:完整性要求關系型數據的狀態在任何時間都是確定的,并且可以通過操作使得數據在正常和異常的情況下都能夠恢復到一致的狀態,即要求在任何時候數據都能夠被正確地讀取并且在寫操作上進行適當同步;可靠性要求將數據的損壞和丟失的概率降到最低,即需要對數據進行冗余備份;可管理性要求數據能夠被管理員及上層服務提供者以一種粗粒度和邏輯簡單的方式管理,即要求基礎設施層內部在數據管理上有充分、可靠的自動化管理流程。對于具體云的基礎設施層,還有其他一些數據管理方面的要求,比如在數據讀取性能上的要求或者數據處理規模的要求,以及如何存儲云計算環境中海量的數據等。
2.2.5 資源部署
資源部署指的是通過自動化部署流程將資源交付給上層應用的過程。在應用程序環境構建初期,當所有虛擬化的硬件資源環境都已經準備就緒時,就需要進行初始化過程的資源部署。另外,在應用運行過程中,往往會進行二次甚至多次資源部署,從而滿足上層服務對于基礎設施層中資源的需求,也就是運行過程中的動態部署。動態部署有多種應用場景,一個典型的應用場景就是實現基礎設施層的動態可伸縮性,即云的應用可以在極短的時間內根據具體用戶需求和服務狀況的變化而調整。當用戶服務的工作負載過高時,用戶可以非常容易地將自己的服務實例從數個擴展到數千個,并自動獲得所需要的資源,通常這種伸縮操作不但要在極短的時間內完成,還要保證操作復雜度不會隨著規模的增加而增大。另外一個典型應用場景是故障恢復和硬件維護。在云計算這樣由成千上萬個服務器組成的大規模分布式系統中,硬件出現故障在所難免,在硬件維護時也需要將應用暫時移走,基礎設施層需要能夠復制該服務器的數據和運行環境并通過動態資源部署在另外一個節點上建立起相同的環境,從而保證服務從故障中快速恢復。
資源部署的方法也會隨構建基礎設施層所采用技術的不同而有著巨大的差異。使用服務器虛擬化技術構建的基礎設施層和未使用這些技術的傳統物理環境有很大的差別,前者的資源部署更多是虛擬機的部署和配置過程,而后者的資源部署則涉及了從操作系統到上層應用整個軟件堆棧的自動化部署和配置。相比之下,采用虛擬化技術的基礎設施層資源部署更容易實現。
2.2.6 安全管理
安全管理的目標是保證基礎設施資源被合法地訪問和使用。在個人電腦上,為了防止惡意程序通過網絡訪問計算機中的數據或者破壞計算機,一般都會安裝防火墻來阻止潛在的威脅。數據中心也設有專用防火墻,甚至會通過規劃出隔離區來防止惡意程序入侵。云計算需要能夠提供可靠的安全防護機制來保證云中的數據是安全的,并提供安全審查機制保證對云數據的操作都是經過授權的并且是可被追蹤的。云是一個更加開放的環境,用戶的程序可以被更容易地放在云中執行,這就意味著惡意代碼甚至病毒程序都可以從云內部破壞其他正常的程序。由于程序在運行和使用資源的方式上都和傳統的程序有著較大區別,因此如何在云計算環境里更好地控制代碼的行為或者識別惡意代碼和病毒代碼就成為管理員面臨的新挑戰。同時,在云計算環境中,數據都存儲在云中,如何通過安全策略阻止云的管理人員泄露數據也是一個需要著重考慮的問題。
2.2.7 計費管理
云計算倡導按量計費的計費模式。通過監控上層的使用情況,可以計算出在某個時間段內應用所消耗的存儲、網絡、內存等資源,并根據這些計算結果向用戶收費。對于一個需要傳輸海量數據的任務,通過網絡傳輸可能還不如將數據存儲在移動存儲設備中,再由快遞公司送到目的地更有效。因為大規模數據傳輸一方面占用大量時間;另一方面消耗大量網絡帶寬,數據傳輸費用相當可觀。可見,在具體實施的時候,云計算提供商可以采用一些適當的替代方式來保證用戶業務的順利完成,同時降低用戶需要支付的費用。