Eucalyptus

開源的軟體基礎結構

Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus)是一種開源的軟體基礎結構,用來通過計算集群或工作站群實現彈性的、實用的雲計算。它最初是美國加利福尼亞大學 Santa Barbara 計算機科學學院的一個研究項目,現在已經商業化,發展成為了 Eucalyptus Systems Inc。

簡介


不過,Eucalyptus仍然按開源項目那樣維護和開發。Eucalyptus Systems還在基於開源 Eucalyptus構建額外的產品;它還提供支持服務。
Eucalyptus雲計算軟體,在一個平台上(分為open source版和enterprise版),提供了對這些資源的抽象。Eucalyptus的源碼是公開的。並且有提供給CentOS5,Debian squeeze,OpenSUSE11,Fedora12的軟體包。
Eucalyptus選擇Xen和KVM作為虛擬化的管理程序。目前版本是3.2。Eucalyptus的enterprise版已經對vSphere ESX/ESXi提供了支持。

高級特點


1.與EC2和S3的介面兼容性(SOAP介面和REST介面)。使用這些介面的幾乎所有現有工具都將可以與基於Eucalyptus的雲協作。
2.支持運行在Xen hypervisor或KVM之上的VM的運行。未來版本還有望支持其他類型的VM,比如VMware
3.用來進行系統管理和用戶結算的雲管理工具。
4.能夠將多個分別具有各自私有的內部網路地址的集群配置到一個雲內。

原理


Eucalyptus組件:在邏輯上,Eucalyptus雲包括4個組件:存儲控制器(walrus)、雲控制器(簡稱CLC或者“cloud”)、集群控制器(cc)以及節點控制器(nc)。客戶端依賴於解決方案,但可能以瀏覽器腳本、一個用戶空間應用程序、或者甚至是一個內核模塊的形式出現。雲控制器是從客戶端進入雲的介面,並為雲提供邏輯決定。雲控制執行對客戶端進行認證的服務,並將客戶端的請求轉化為事務。集群控制器是一個節點控制器集合。它負責狀態信息並與所提供的虛擬機進行交互。可是,節點自身是通過管理程序(Xen或者KVM)來與在線以及離線虛擬機進行交互的。一個節點控制器在一個單獨的機器上是作為一個獨立的實例存在的。但是,多個節點控制器組成了特定的雲。
架構如下圖:
eucalyptus由五個部分組成
eucalyptus由五個部分組成

架構


Eucalyptus包含五個主要組件,它們能相互協作共同提供所需的雲服務。這些組件使用具有WS-SecuritySOAP消息傳遞安全地相互通信。
Cloud Controller(CLC)在Eucalyptus雲內,這是主要的控制器組件,負責管理整個系統。它是所有用戶和管理員進入Eucalyptus雲的主要入口。所有客戶機通過基於SOAP或REST的API只與CLC通信。由CLC負責將請求傳遞給正確的組件、收集它們並將來自這些組件的響應發送回至該客戶機。這是Eucalyptus雲的對外“窗口”。
Cluster Controller(CC)Eucalyptus內的這個控制器組件負責管理整個虛擬實例網路。請求通過基於SOAP或REST 的介面被送至CC。CC維護有關運行在系統內的Node Controller的全部信息,並負責控制這些實例的生命周期。它將開啟虛擬實例的請求路由到具有可用資源的Node Controller。
Eucalyptus
Eucalyptus
Node Controller(NC)它控制主機操作系統及相應的hypervisor(X en或最近的KVM,很快就會支持VMWare)。必須在託管了實際的虛擬實例(根據來自CC的請求實例化)的每個機器上運行NC的一個實例。
Walrus(W)這個控制器組件管理對Eucalyptus內的存儲服務的訪問。請求通過基於SOAP或REST的介面傳遞至Walrus。
Storage Controller(SC)Eucalyptus內的這個存儲服務實現Amazon的S3介面。SC與Walrus聯合工作,用於存儲和訪問虛擬機映像、內核映像、RAM磁碟映像和用戶數據。其中,VM映像可以是公共的,也可以是私有的,並最初以壓縮和加密的格式存儲。這些映像只有在某個節點需要啟動一個新的實例並請求訪問此映像時才會被解密。
Eucalyptus
Eucalyptus
一個Eucalyptus雲安裝可以聚合和管理來自一個或多個集群的資源。一個集群是連接到相同LAN的一組機器。在一個集群中,可以有一個或多個NC實例,每個實例管理虛擬實例的實例化和終止。
在一個單一集群的安裝中,如圖3所示,將至少包含兩個機器:一個機器運行CC、SC和CLC;另一個機器運行NC。這種配置主要適合於試驗的目的以及快速配置的目的。通過將所有東西都組合到一個機器內,還可以進一步簡化,但這個機器需要非常健壯才能這樣做。
一個單集群Eucalyptus安裝的拓撲
在多集群安裝中,可以將各個組件(CC、SC、NC和CLC)放置在單獨的機器上。如果想要用它來執行重大的任務,那麼這麼做就是一種配置Eucalyptus雲的理想方式。多集群安裝還能通過選擇與其上運行的控制器類型相適應的機器來顯著提高性能。比如,可以選擇一個具有超快CPU的機器來運行CLC。多集群的結果是可用性的提高、負載和資源的跨集群分佈。集群的概念類似於Amazon EC2內的可用性區域的概念。資源可以跨多個可用性區域分配,這樣一來,一個區域內的故障不會影響到整個應用程序。
一個多集群Eucalyptus安裝的拓撲

安裝


Eucalyptus包含的軟體包,根據其組件進行相應地命名:eucalyptus雲控制器(eucalyptus-cloud)、eucalyptus控制器(eucalyptus-controller)以及節點控制器(eucalyptus-nc)。在這篇文章中,使用Ubuntu9.04系統。安裝的先決條件是在所有的節點上都配置一個一致的網路時間協議(NTP),並在節點控制器之間進行橋接配置。進行橋接的步驟超過了這篇文章的範疇,但Ubuntu提供了相應的文檔。安裝的第一步是下載Eucalyptus(32位或者64位)。
在下載完程序之後,轉到下載到的目錄(在這個例子中,使用/tmp)。然後在每一台組成雲控制器、集群控制器以及節點控制器的機器上執行下述命令:
root@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386#
tar zxvf eucalyptus-1.5.1-*.tar.gzroot@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386#
cd eucalyptus-1.5.1-*root@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386#
echo deb file://${PWD} ./ >> /etc/apt/sources.listroot@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386#
apt-get update
apt-get update命令會對平台所需的先決條件進行安裝,其中開放的Java框架佔據了下載量的很大一部分。apt-get將需要執行相當長的一段時間。
對每一個組件,依賴於角色,會各自安裝自己的軟體包。
在雲控制器上:
root@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386# aptitude install eucalyptus-cloud
在控制器上:
root@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386# aptitude install eucalyptus-cc
以及最後在節點控制器上:
root@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386# aptitude install eucalyptus-nc
集群現在已經建立起來。可以在合適的系統上,通過下述命令來啟動服務:
/etc/init.d/eucalyptus-cloud
/etc/init.d/ecualyptus-cc
/etc/init.d/eucalyptus-nc

版本發布


2010年08月27日,雲計算Eucalyptus2.0發布,改進可擴展性。
2012年05月04日,Eucalyptus3.1Alpha發布了,與2.x版本比較,3.x主要改進包括以下三個方面:
高可用性。
增強的資源訪問控制。
提升穩定性。
2012年12月26日,Eucalyptus3.2發布,與3.1版本相比,大幅提升了web-based控制台的用戶體驗和功能豐富程度,增強了用戶使用情況報告,簡化了管理操作,並一定程度上增強了雲的健壯性。