本文來自IBM developerworks,作者為Prabhakar Chaganti。原文標題:面向虛擬基礎設施的雲服務,第 1 部分: Infrastructure-as-a-Service (IaaS) 和 Eucalyptus。
簡介
在這個 「面向虛擬基礎設施的雲服務」 系列中,瞭解三種主要的雲服務類型:Software as a Service (SaaS)、Platform as a Service (PaaS) 和 Infrastructure as a Service (IaaS)。
在第一篇文章中,探究 IaaS 如何能提供一組構建塊或服務,比如虛擬服務器、數據存儲和數據庫。使用這些服務,您就能夠創建一個平台來部署和運行應用程序。同時,瞭解 Eucalyptus 這種開源的軟件基礎設施,用來實現具有集群或工作站群的雲計算。
雲計算的前景
不嚴格地講,雲計算 是指使用從您的環境之外作為一種服務提供的可伸縮計算資源,它按使用計費。您只需為所使用的資源付費,並在任何時候、Internet 的任何地方均可訪問存在於這個雲之內的任何資源。您無需顧及物理硬件和基礎設施的管理;可以將這些責任留給雲服務提供者。雲計算是一種完全不同的計算和信息技術服務方式。雲計算的前景是提供對所需計算資源的可伸縮的簡便訪問。
如圖 1 所示,雲服務明顯區別於以往的受管服務,主要表現在如下三個方面:
1.按使用付費 — 您使用服務並按分或小時為服務付費。無需為可能需要或實際並未使用的資源提前付費。
2.彈性 — 可以根據需要增加或減少對資源的消費。
3.受管的基礎設施 — 服務的基礎設施由提供者擁有並完全受管於提供者。
雲服務可分為如下三個主要類型。
Software as a Service (SaaS)
這是最為常見的一種雲服務類型,我們中的大多數人都或多或少使用過。在 SaaS 雲模型中,服務提供者提供所有的基礎設施以及軟件產品。用戶通過一個基於 Web 的前端與此服務交互。這些服務涵蓋的範圍很廣,從基於 Web 的電子郵件,比如 GMail,到財務軟件,比如 Mint。
Platform as a Service (PaaS)
提供軟件和產品開發工具的一種雲服務,這些工具由提供者托管於它們的硬件基礎設施。用戶可以使用這個平台以及所提供的 API 或是通過一個用於開發的圖形用戶界面來創建應用程序。這種服務的典型例子有 Salesforce.com 的 Force.com 和 Google App Engine。
Infrastructure as a Service (IaaS)
提供對基本構建塊的訪問的一種雲服務。您可以組合併對這些構建塊進行分層來構建運行應用程序所需的基礎設施。IaaS 最典型的例子有 Amazon Web Services (AWS) 和 Rackspace。
圖 2. 雲服務的類型
雲服務還可以基於訪問和位置分為三類:
1.公共 雲對 Internet 上的所有人可用。任何用戶都可以註冊使用公共雲。AWS 和 Rackspace 可能是公共雲最大的兩個提供商。
2.私有 雲是一種專有的雲環境,只對有限的用戶提供雲服務。私有雲通常都位於防火牆後您自己的數據中心內。
3.混合 雲,有時又稱為虛擬私有雲,這種雲提供的服務運行在一個公共的雲基礎設施之上,但通過虛擬專用網(VPN)限制對它的訪問。
目前既可以是運行在 AWS 之上的公共雲,也可以是運行在防火牆後的私有雲的雲服務為數不多,而 Eucalyptus 是其中之一。
Infrastructure as a Service (IaaS)
IaaS 雲提供了一組構建塊或基礎服務,比如虛擬服務器、數據存儲和數據庫。您可以將這些服務一起納入一個平台以便部署和運行您的應用程序。您可以輕鬆地搭建和拆除系統。IaaS 服務通常可通過一個 API 使用基於 SOAP 或 REST 的消息訪問。
IaaS 雲是可完全腳本化的環境;它們非常適合創建隨需應變的框架。快速地組裝好完整的、並能根據對資源的需求擴展或收縮的應用程序部署環境,這種能力是當今 IT 部門的重要價值主張。除了彈性之外,此服務的另一個吸引人之處是服務的按使用付費方式。您只需為您所消費的服務付費,無需預先分配資源。
使用 IaaS 系統會讓多種應用程序從中受益。
測試和試運行
完整的測試和試運行環境可以被創建、使用並在不需要的時候拆除。硬件徵用不再有時間上的延遲,也無需再等待環境就緒。任何時候想要測試,就可以創建一個新的環境並在測試完成後就丟棄該環境。
Web 應用程序部署環境
您可以使用 IaaS 運行 Web 站點並通過按需擴展資源來使站點能夠輕鬆處理流量的增加。您甚至可以使用 IaaS 雲服務針對特定的市場推廣活動或銷售策略創建額外的臨時 Web 站點。
存儲需求
您的企業可以使用雲服務作為為用戶存儲文件和其他數據的地方。
大規模數據處理
您可以使用雲服務的強大功能來處理大型數據集並充分利用大規模並行處理。可以按需創建網格來處理大型數據並在處理完成後拆除這些網格。
AWS 是第一個廣泛可用的 IaaS 系統,它提供了可在 Web 上訪問到的一組服務,這些服務又提供了對 Amazon 的現成可用的計算基礎設施的編程式訪問。由 Amazon 構建並經過多年改進的這個強壯的計算平台現在可以為任何人在任何地點使用,只要他具有 Internet 連接。AWS 所提供的基本構建塊基礎設施能滿足大多數系統的核心需求。對於複雜多樣的企業應用程序的架構的搭建,現在可以通過在 Amazon 提供的這些可靠並且經濟的構建塊服務之上鋪設新的功能得以實現。
AWS 提供的主要服務有:用來管理和運行虛擬實例的 Elastic Compute Cloud (EC2);用來存儲數據的 Simple Storage Service (S3)。這些服務均可通過 API 使用 SOAP 或 REST 訪問到。此 API 正在迅速成為與雲服務環境交互的事實標準,並且 Eucalyptus 也充分利用了它來提供一個很棒的 IaaS 平台。
Eucalyptus
Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus) 是一種開源的軟件基礎結構,用來通過計算集群或工作站群實現彈性的、實用的雲計算。它最初是美國加利福尼亞大學 Santa Barbara 計算機科學學院的一個研究項目,現在已經商業化,發展成為了 Eucalyptus Systems Inc。不過,Eucalyptus 仍然按開源項目那樣維護和開發。Eucalyptus Systems 還在基於開源的 Eucalyptus 構建額外的產品;它還提供支持服務。
不管是源代碼還是包安裝,Eucalyptus 很容易安裝在現今大多數 LinuxR 發佈版上。它提供了如下這些高級特性:
1.與 EC2 和 S3 的接口兼容性(SOAP 接口和 REST 接口)。使用這些接口的幾乎所有現有工具都將可以與基於 Eucalyptus 的雲協作。
2.支持運行在 Xen hypervisor 或 KVM 之上的 VM 的運行。未來版本還有望支持其他類型的 VM,比如 VMware。
3.用來進行系統管理和用戶結算的雲管理工具。
4.能夠將多個分別具有各自私有的內部網絡地址的集群配置到一個雲內。
架構
Eucalyptus 包含五個主要組件,它們能相互協作共同提供所需的雲服務。這些組件使用具有 WS-Security 的 SOAP 消息傳遞安全地相互通信。
Cloud Controller (CLC)
在 Eucalyptus 雲內,這是主要的控制器組件,負責管理整個系統。它是所有用戶和管理員進入 Eucalyptus 雲的主要入口。所有客戶機通過基於 SOAP 或 REST 的 API 只與 CLC 通信。由 CLC 負責將請求傳遞給正確的組件、收集它們並將來自這些組件的響應發送回至該客戶機。這是 Eucalyptus 雲的對外 「窗口」。
Cluster Controller (CC)
Eucalyptus 內的這個控制器組件負責管理整個虛擬實例網絡。請求通過基於 SOAP 或 REST 的接口被送至 CC。CC 維護有關運行在系統內的 Node Controller 的全部信息,並負責控制這些實例的生命週期。它將開啟虛擬實例的請求路由到具有可用資源的 Node Controller。
Node Controller (NC)
它控制主機操作系統及相應的 hypervisor(Xen 或最近的 KVM,很快就會支持 VMWare)。必須在托管了實際的虛擬實例(根據來自 CC 的請求實例化)的每個機器上運行 NC 的一個實例。
Walrus (W)
這個控制器組件管理對 Eucalyptus 內的存儲服務的訪問。請求通過基於 SOAP 或 REST 的接口傳遞至 Walrus。
Storage Controller (SC)
Eucalyptus 內的這個存儲服務實現 Amazon 的 S3 接口。SC 與 Walrus 聯合工作,用於存儲和訪問虛擬機映像、內核映像、RAM 磁盤映像和用戶數據。其中,VM 映像可以是公共的,也可以是私有的,並最初以壓縮和加密的格式存儲。這些映像只有在某個節點需要啟動一個新的實例並請求訪問此映像時才會被解密。
一個 Eucalyptus 雲安裝可以聚合和管理來自一個或多個集群的資源。一個集群 是連接到相同 LAN 的一組機器。在一個集群中,可以有一個或多個 NC 實例,每個實例管理虛擬實例的實例化和終止。
在一個單一集群的安裝中,如圖 3 所示,將至少包含兩個機器:一個機器運行 CC、SC 和 CLC;另一個機器運行 NC。這種配置主要適合於試驗的目的以及快速配置的目的。通過將所有東西都組合到一個機器內,還可以進一步簡化,但這個機器需要非常健壯才能這樣做
圖 3. 一個單集群 Eucalyptus 安裝的拓撲
在多集群安裝中,可以將各個組件(CC、SC、 NC 和 CLC)放置在單獨的機器上。如果想要用它來執行重大的任務,那麼這麼做就是一種配置 Eucalyptus 雲的理想方式。多集群安裝還能通過選擇與其上運行的控制器類型相適應的機器來顯著提高性能。比如,可以選擇一個具有超快 CPU 的機器來運行 CLC。多集群的結果是可用性的提高、負載和資源的跨集群分佈。集群的概念類似於 Amazon EC2 內的可用性區域的概念。資源可以跨多個可用性區域分配,這樣一來,一個區域內的故障不會影響到整個應用程序。圖 4 給出了一個例子。
圖 4. 一個多集群 Eucalyptus 安裝的拓撲
在將 Eucalyptus 安裝並應用到您的基礎設施上之前,需要考慮硬件要求。雖然出於試驗目的,可以在一個筆記本電腦上運行全部內容,但是對於一個實際的部署場景,多集群無疑是一個更好的選擇。如下所列的是 Ubuntu 管理員對硬件配置方面的一些指導。這些指導可廣泛應用於任何的 Linux 發佈版(不只是 Ubuntu)。
下面的指標是對用來運行 CC、CLC、Walrus 或 SC 的機器的建議配置。
硬件 最低 建議
CPU 1 GHz 2 x 2GHz
內存 512 MB 2 GB
硬盤 5400rpm IDE 7200rpm SATA
磁盤空間 40 GB 200 GB
聯網 100 Mbps 1000 Mbps
運行 NC 的機器需要更為強大,因為這些機器將會運行每個虛擬實例。它們還需要充足的磁盤空間來存儲啟動實例所需的映像。運行 NC 的這些機器最好是多核的、內存至少 4 GB、使用高速磁盤驅動器。如下是一些建議指標。
硬件 最低 建議
CPU VT 擴展 VT,64-位,多核
內存 1 GB 4 GB
磁盤 5400rpm IDE 7200rpm SATA 或 SCSI
磁盤空間 40 GB 100 GB
聯網 100 Mbps 1000 Mbps
可用性和安裝
在我寫作本文之時,Eucalyptus 的最新版本是 1.6。您可以通過使用由該項目托管的免費公共實例 ucalyptus Public Cloud (EPC) 立即體驗 Eucalyptus。EPC 具有有限的資源,所以對能夠啟用的實例的數量以及能夠使用的存儲量都是有限制的。但是,它仍然是一個很好的體驗 Eucalyptus 和瞭解該環境的途徑。
Eucalyptus 可以從源代碼安裝,也可以從面向特定 Linux 發佈版的包安裝。從源代碼安裝雖然複雜一些,但可工作於幾乎所有的 Linux 最新版本。包安裝雖然簡便,但只適用於 Redhat 和基於 Debian 的發佈版。更詳細的安裝指導,請參考 Eucalyptus 管理員指南。安裝 Eucalyptus 最為簡單的方法是安裝 Ubuntu Linux 發佈版的最新版本 Karmic Koalad,並充分利用 Ubuntu Enterprise Cloud,它能提供對運行基於 Eucalyptus 的雲的完整支持。
Eucalyptus 和 Ubuntu Enterprise Cloud
Ubuntu Enterprise Cloud (UEC) 是一個由 Ubuntu 提出的新的開源計劃,旨在進一步簡化基於 Eucalyptus 的雲基礎設施的部署、配置和使用。UEC 簡化了如下內容:
1.創建能夠在 Amazon 的 EC2 基礎設施上運行 Eucalyptus 的公共雲
2.創建能夠在位於防火牆之後的數據中心內部的基礎設施之上運行的私有雲
這是到目前為止最為簡單的安裝和嘗試使用 Eucalyptus 的方式。只需下載 CD 服務器版並將其安裝在任何想要的地方。UEC 也是第一個允許在本地環境輕鬆創建雲服務並進而利用雲計算強大功能的開源項目。
Eucalyptus 的益處
Eucalyptus 是一個具有優良架構的雲服務環境,可用來在 Amazon 的 EC2 基礎設施上創建一個公共雲,或者在您的數據中心(甚至是筆記本電腦)內創建私有雲。如果您正在考量在您的團隊或組織內使用雲計算,那麼 Eucalyptus 非常值得您考慮用作雲服務平台。它提供了如下一些好處。
開源和開發
Eucalyptus 的創建是為了促進雲計算平台方面的交流和研究。它以源代碼的形式提供免費使用,這就使得您很容易透過其表面看到它的實質,或是針對自己的需求創建該平台的擴展。開發的步調很快。特性以及改進不斷被添加到 Eucalyptus。
Eucalyptus 具有一個由願意與他人免費共享自己見地的熱情而博學的用戶組成的傑出社區。他們的論壇是您獲得支持並與其他 Eucalyptus 用戶交互的一個很好的途徑。
公共雲
Eucalyptus 可很容易地作為一個公共雲安裝和運行在 Amazon 的 EC2 框架上。
私有雲
Eucalyptus 可被作為運行在您的基礎設施之上的私有雲安裝於防火牆後的數據中心內。這樣,您就獲得了對安全性和環境的全面控制。
可移植性
得益於 Eucalyptus 與 Amazon 的 EC2 API 的兼容性以及 Eucalyptus 的靈活性,可以很容易地將應用程序從一個雲遷移到另一個雲。甚至可以創建混合雲來同時使用公共和私有雲。
經過了良好的測試
Eucalyptus 現在是 Ubuntu Enterprise Cloud 的一部分,並且是全球數千個 Ubuntu 服務器的一個組件。這種測試規模將會很快鞏固 Eucalyptus 平台的穩定性。
商業支持
如果您需要超出論壇所能提供的更快的支持,對於基於 Eucalyptus 的雲還有商業支持可用。
在本文中,您瞭解了 Infrastructure as a Service (IaaS) 雲計算環境。您還探究了可用來創建公共或私有雲基礎設施的開源 Eucalyptus 項目。
本系列的第 2 部分將著眼於 Platform as a Service (PaaS) 雲環境以及 Appscale,一個用來運行 Google App Engine 應用程序的開源項目