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