Linux 上的雲計算

最近,沒有哪家技術性網站不提到所謂的雲計算 的。雲計算其實就是以服務的形式提供計算資源(計算機和存儲)。這又涉及到以一種簡單、透明的方式動態地將服務延伸到更多的計算機和存儲的能力。所有這些都類似於效用計算(utility computing) 背後的思想。在效用計算中,計算資源被看作一種計量服務,就像更傳統的公共設施(例如水或電)一樣。它們的區別不在於這些思想背後的目標,而在於組合到一起、使這些思想成爲現實的現有技術。

雲 計算背後最重要的概念之一就是可伸縮性,而實現它的關鍵則是虛擬化(virtualization)。虛擬化在一臺共享計算機上聚集多個操作系統和應用程 序,以便更好地利用服務器。虛擬化還允許在線遷移,因此,當一個服務器超載時,可以將一個操作系統的一個實例(以及它的應用程序)遷移到一個新的、不那麼 繁忙的服務器上。

IBM 和 Amazon Web Services

雲 計算提供一種在虛擬環境中開發應用程序的方法,該環境的計算能力、帶寬、存儲、安全和可靠性都不成問題 — 您不需要在自己的系統上安裝軟件。在虛擬雲計算環境中,可以開發、部署和管理應用程序,您僅需支付所使用的時間和容量,但這使您能夠根據不斷變化的業務需 求調整應用程序。

IBM 和 Amazon Web Services 進行合作,讓您能夠在 Amazon Elastic Compute Cloud (EC2) 虛擬環境中使用 IBM 軟件產品。我們在 EC2 上提供的軟件產品包括:

  • DB2 Express-C 9.5
  • Informix Dynamic Server Developer Edition 11.5
  • WebSphere Portal Server and Lotus Web Content Management Standard Edition
  • WebSphere sMash

這是產品級別的代碼,其中的所有特性和選項都是可用的。從 IBM developerWorks Cloud Computing Resource Center 瞭解更多信息,並下載運行這些產品的 Amazon Machine Images。

要獲得更多關於雲計算的資源,請參見 developerWorks 上的 Cloud Computing for Developers space

從外部看,雲計算只是將計算和存儲資源從企業遷出,並遷入到雲中。用戶定義資源需求(例如計算和廣域網、帶寬需求),雲提供者在它的基礎設施中虛擬地裝配這些組件,如圖 1 所示。


圖 1. 雲計算在 Internet 中遷移資源
雲計算在 Internet 中遷移資源

但 是,爲什麼您會心甘情願地放棄對自己資源的控制,而讓它們虛擬地存在於雲中呢?原因有很多,但我相信最重要的兩個原因是成本和可伸縮性。雲計算的目標是使 這些資源比您自己所能提供和管理的資源更廉價。雲計算除了降低成本外,還有更大的靈活性和可伸縮性。雲計算提供者可以輕鬆地擴展虛擬環境,以通過提供者的 虛擬基礎設施提供更大的帶寬或計算資源。

雲計算在環保方面的優勢是,它可以在不同的應用程序之間虛擬化和共享資源,以提高服務器的利用率。圖 2 顯示了一個例子。在這個例子中,不同的應用程序使用了 3 個獨立的平臺,每個應用程序都在它自己的服務器上運行。在雲中,可以在多個操作系統和應用程序之間共享(虛擬化)服務器,從而減少服務器的數量。更少的服 務器意味着需要更少的空間(減少數據中心佔用的空間)和更少用於製冷的電力(減少碳污染)。


圖 2. 虛擬化和資源使用
虛擬化和資源使用

但是,有得必有失,雲計算並非沒有缺點。本文後面會探索其中的一些問題。但是現在,讓我們更深入地探究雲計算。

雲計算剖析

當您深入觀察雲時,您會發現,它實際上並不是一個單獨的服務,而是一個服務集合,如圖 3 所示。這些層定義了提供的服務的級別。


圖 3. 雲計算的層次
雲計算的層次

我們從最低級的服務開始,即基礎設施(Infrastructure-as-a-Service 或 IaaS)。IaaS 就是將基礎設施(計算資源和存儲)作爲服務出租。這意味着虛擬計算機不僅具有有保證的處理能力,而且爲存儲和 Internet 訪問預留了帶寬。實際上,IaaS 具有在有特定服務質量約束的情況下出租計算機或數據中心的能力,使之能執行任意操作系統和軟件。

雲計算的價值

除了減少與雲計算資源相關的管理成本外,雲計算還有其他優點。例如,當您通過 Internet 將自己與自己的資源分離開時,那些資源在哪裏並不重要。又如,它們可以在一個可自然製冷的環境中,從而減少能耗。

順着棧往上看,上一級的服務是平臺(Platform-as-a-Service 或 PaaS)。PaaS 類似於 IaaS,但是它包括操作系統和圍繞特定應用的必需的服務。例如,除了虛擬服務器和存儲外,PaaS 還提供一個特定的操作系統和應用程序集(通常是作爲一個虛擬機,即 VM,或文件,例如 VMware 的 .vmdk 格式),以及對必要的服務(例如 MySQL 數據庫或其他專用本地資源)的訪問。換句話說,PaaS 就是 IaaS 加上一個用於給定應用的定製軟件棧。

最後,在 圖 3 頂部是可以提供的最簡單的服務:應用程序。這一層被稱作 Software-as-a-Service (SaaS),它是從一個集中的系統部署軟件,使之在一臺本地計算機上(或從雲中遠程地)運行的一個模型。由於是計量服務,SaaS 允許出租一個應用程序,並計時收費。

這是高度概括的雲計算的視圖。這個視圖忽略了雲的其他一些方面,例如data-Storage-as-a-Service (dSaaS),後者以計量服務的形式提供存儲,消費者按使用的容量(使用的存儲的容量)和利用率(存儲的帶寬需求)付費。另外還有云服務,它爲互操作性和外部應用程序編程接口(API),例如 Web 服務,提供了內部機制。

 




回頁首


雲計算現狀

最近幾個月,對雲計算和相關基礎設施的投資呈爆炸式增長。這樣巨大的投資表明,對雲中資源的虛擬化存在着巨大的需求。去年已經有了很多新的服務,圖 4 展示了其中一部分。


圖 4. 雲計算各層及相關產品
雲計算各層及相關產品

這絕不是一份詳盡的產品類別,因爲變化非常頻繁。但是,這的確給出了一些產品的概覽,並展示了它們之間的區別。本文後面的 參考資料 小節包括了其中一些產品的鏈接。

 




回頁首


Linux 和開放源代碼在雲中的應用

現在讓我們來探索一下,Linux 和開源社區如何爲雲計算領域做出貢獻。您可能已經猜到,Linux 和開放源代碼扮演着極其重要的角色。

Software-as-a-Service

SaaS(軟 件即服務)就是以服務的形式訪問 Internet 上的軟件。一種早期的 SaaS 方法是 Application Service Provider(ASP)。ASP 提供對 Internet 上存放或交付的軟件的訂閱。ASP 交付軟件,並根據軟件的使用收費。這樣一來,您就不必購買軟件,只需隨需租用軟件。

SaaS 實例

傳 統應用程序與 Saas 應用程序之間的對比的一個有趣的例子是 SoftwarePlanner.com 提供的應用程序生命週期管理工具。該公司以傳統形式或 SaaS 的形式提供他們的工具。當使用傳統形式時,客戶將應用程序套件放在他們的企業中;而當使用 SaaS 形式時,客戶擁有應用程序套件,並將其放到 Internet 上。

SaaS 的另一個方面是在 Internet 上使用遠程執行的軟件。這種軟件可以是本地應用程序所使用的服務(並定義爲 Web 服務 ),也可以是通過 Web 瀏覽器看到的遠程應用程序。遠程應用程序服務的一個例子是 Google Apps,它通過一個標準的 Web 瀏覽器提供一些企業應用。要遠程地執行應用程序,通常需要依賴於一個應用服務器來公佈所需的服務。應用服務器 是一個軟件框架,它公佈軟件服務的 API(例如事務管理或數據庫訪問)。具體的例子有 Red Hat JBoss Application Server、Apache Geronimo 和 IBM® WebSphere® Application Server 等。另外還有很多其他的應用服務器,參考資料 小節給出了一份詳細的列表。

SaaS 的另一個最近的例子是 Google 的 Chrome 瀏覽器。這個瀏覽器是作爲新桌面的理想環境,除了具有傳統的 Web 瀏覽體驗外,還可以通過它來(以本地或遠程方式)交付應用程序。(要了解更多信息,請參閱 參考資料 ) 。

Platform-as-a-Service

PaaS 可描述爲一個完整的虛擬平臺,它包括一個或多個服務器(在一組物理服務器上虛擬而成)、操作系統以及特定的應用程序(例如用於基於 Web 的應用程序的 Apache 和 MySQL)。在某些情況下,這些平臺可以預先定義和選擇。而在另一些情況下,可以提供一個 VM 鏡像,該鏡像包含所有的特定於用戶的應用程序。

PaaS 一個有趣的例子是 Google App Engine。App Engine 是一個服務,通過它可以在 Google 的可伸縮性極佳的架構上部署 Web 應用程序。App Engine 爲可通過 Internet 引用的 Python 應用程序提供一個沙盒(將來還會支持更多的語言)。除了支持用戶認證、鏡像操作和電子郵件發送外,App Engine 還提供了 Python API,用於持久地存儲和管理數據(使用 Google Query Language 或 GQL)。Web 應用程序運行時所在的沙盒將限制對底層操作系統的訪問。雖然 App Engine 限制了應用程序可用的功能,但是它支持有用的 Web 服務的構造。請參閱 參考資料 小節,瞭解更多信息。

注意: 在一定的帶寬和存儲約束範圍內,在 App Engine 中部署應用程序是免費的。但是,如果要用 App Engine 構建生產 Web 站點,則需要評估使用費。

PaaS 的另一個例子是 10gen,它既是一個雲平臺,又是一個可下載的開放源代碼包,可用於創建您自己的私有云。10gen 是類似於 App Engine 的一個軟件棧,它提供與 App Engine 類似的功能 — 但有一些不同之處。通過 10gen,可以使用 Python 以及 JavaScript 和 Ruby 編程語言開發應用程序。該平臺還使用沙盒概念隔離應用程序,並且通過自己的應用服務器的許多計算機(當然,是在 Linux 上構建)提供一個可靠的環境。

Infrastructure-as-a-Service

IaaS 是以服務的形式交付計算機基礎設施。這一層與 PaaS 的不同之處在於,只提供虛擬硬件,而沒有軟件棧。客戶提供一個 VM 鏡像,該鏡像在一個或多個虛擬服務器上被調用。IaaS 是作爲服務的計算的最原始的形式(除了對物理基礎設施的訪問)。最著名的商業 IaaS 提供程序是 Amazon Elastic Compute Cloud(EC2)。在 EC2 中,可以指定一個特定的 VM(操作系統和應用程序集),然後將應用程序部署到它上面,或者提供要在服務器上執行的 VM 鏡像。然後,只需根據計算時間、存儲和網絡帶寬付費。

Eucalyptus 項目(Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems)是 Amazon EC2 的一個開源實現,它與商業服務接口兼容。和 EC2 一樣,Eucalyptus 依賴於 Linux 和 Xen 進行操作系統虛擬化。Eucalyptus 是加利福尼亞大學(Santa Barbara)爲進行雲計算研究而開發的。您可以從該大學的網站上下載它(見 參考資料 ),或者通過 Eucalyptus Public Cloud 體驗它,不過後者有一些限制。

另 一個 EC2 風格的 IaaS 是 Enomalism 雲計算平臺。Enomalism 是一個開放源代碼項目,它提供了一個功能類似於 EC2 的雲計算框架。Enomalism 基於 Linux,同時支持 Xen 和 Kernel Virtual Machine(KVM)。與其他純 IaaS 解決方案不同的是,Enomalism 提供了一個基於 TurboGears Web 應用程序框架和 Python 的軟件棧。

 




回頁首


其他雲開發

除 了前面已經討論過的開發外,還有其他一些基於 Linux 的開放源代碼包,它們在雲環境中也比較有用。Hadoop 是一個開放源代碼 Java™ 軟件框架,它類似於 PaaS,但是着重於在一組聯網的服務器上操縱大型的數據集(受 Google MapReduce 的啓發,後者支持大型數據集的並行處理)。因此,它在 Web 搜索和廣告應用中派上用場 — 特別是在 Yahoo! 上。Hadoop 還提供一些子項目,這很像 Google 應用程序。例如,HBase 提供類似於 Google BigTable 數據庫的功能,Hadoop Distributed File System(HDFS)提供類似於 Google File System(GFS)的功能。

 




回頁首


問題和挑戰

雲 計算的問題顯而易見 — 其中最重要的兩個問題是保密性和安全性。保密性可以通過加密來解決,但是在選擇雲計算服務時,要審慎一些。在 Web 剛開始發展時,即使是電子商務也受到了懷疑。在全球,每年要發生價值上萬億美元的電子商務事務,所以雲計算可以收益於當今所有提供 Web 安全的技術(例如安全套接字層或 SSL)。

 




回頁首


結束語

雲計算的風暴已經開始,推動雲計算的 Linux 開源開發也在迅猛發展。隨着雲計算領域出現巨大的投資,向集中式數據中心的轉型已顯而易見。有趣的新技術和架構即將到來!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章