使用OpenStack實現雲計算和存儲

雲和公共 Infrastructure as a Service (IaaS) 背後的理念並不算很新。實際上,Amazon Elastic Compute Cloud (Amazon EC2) 到今年已經有六歲了。有所改變的是,現在已經主要將 IaaS 作爲一種私有云計算,以滿足具有敏感數據的企業計算。私有云計算將 IaaS 的理念應用到私有基礎架構。雖然這麼做缺少公共雲(現收現付服務)的經濟優勢,但它充分利用了雲計算的核心原理,使企業數據中心內有了可伸縮和彈性的基礎架構。
推薦閱讀:OpenStack簡介與入門指南匯總
讓我們先來快速介紹一下 IaaS 及其基礎架構,然後再深入研究這個領先的開源解決方案:OpenStack。
IaaS 和雲基礎架構
雲計算架構常常都着重於虛擬化後按需向用戶公開的一組公共資源。這些資源包括功能各異的計算資源、持久的存儲資源,以及將這些資源組合在一起並將它們有條件地公開到互聯網的可配置聯網資源。
IaaS 實現的基礎架構(參見 圖 1)就遵循了這樣的模型,並添加了其他元素,比如計量(爲計費的目的來說明使用的情況)。物理的基礎架構則通過由各種技術(包括系統管理程序(用於平臺虛擬化)、虛擬網絡和存儲)實現的虛擬層提取自應用程序和用戶。
圖 1. IaaS 的高級視圖
[img]https://s1.51cto.com/wyfs02/M01/01/B2/wKiom1mesUqx2Z5VAAAWFRmRB0E183.gif-wh_651x-s_2672118893.gif[/img]
雖然 OpenStack 是如今最爲流行的一種可用的開源雲解決方案,但它當然不是最早的一個。實際上,OpenStack 是在公共和私有領域開發的兩種舊解決方案的綜合。
由位於聖巴巴拉市的加州大學的一個研究項目開發的 Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus) 是更早的一種開源 IaaS 解決方案。其他的解決方案還包括 OpenNebula(一種開源的雲計算工具箱)和 Nimbus(另一種面向 IaaS 雲的開源工具箱)。OpenStack 集成了美國國家航空和航天局 (NASA) 的部分 Nebula 平臺和 Rackspace Cloud Files 項目(雲存儲)。
雲計算的新來者:OpenStack
OpenStack 是 IaaS 空間的一個新來者,在 2010 年末首次發佈。儘管此解決方案成熟度不夠,而且面市還不到兩年時間,但是 OpenStack 現已成爲了使用最爲廣泛的雲堆棧之一。OpenStack 不是單一的解決方案,而是一個不斷成長的開源解決方案套件(包括核心以及新孵化的項目),並共同形成了一個強大成熟的 IaaS 堆棧。
如 圖 2 所示,OpenStack 構建自幾個核心技術(多於這裏所展示的,但這裏所展示的代表關鍵方面)。左側是 Horizon 儀表盤,顯示了一個可爲用戶和管理員用來管理 OpenStack 服務的用戶界面。Nova 提供了一個可伸縮的計算平臺,用來支持大量服務器和虛擬機(VM;以一種系統管理程序不可知的方式)的配置和管理。Swift 實現一個具有內部冗餘、可大量伸縮的對象存儲系統。在底部的是 Quantum 和 Melange,二者實現了網絡連接即服務 (network connectivity as a service)。最後,Glance 項目爲虛擬磁盤映象實現了一個存儲庫(映像即服務 (image as a service))。
圖 2. OpenStack 解決方案的核心和附加組件
OpenStack 解決方案的核心和附加組件
如圖 2 所示,OpenStack 是一個項目集合,整體提供了一個完整的 IaaS 解決方案。表 1 展示了這些項目及其起作用的方面。
表 1. OpenStack 項目和組件
[img]https://s4.51cto.com/wyfs02/M01/A0/62/wKioL1mesT_y5cteAAB4Kcl0ZhU36.jpeg-wh_600x-s_1171940262.jpeg[/img]
其他重要的方面還包括 Keystone,它實現了對企業私有云十分關鍵的身份識別服務(對計算服務器、Glance 內的映像以及 Swift 對象存儲區的訪問方面的管理)。
OpenStack 架構
OpenStack 用三個核心開源項目(如 圖 2 所示)來表示:Nova(計算)、Swift(對象存儲)和 Glance(VM 存儲庫)。Nova(或 OpenStack Compute),提供了跨服務器網絡的 VM 實例的管理。它的應用程序編程接口 (API) 爲試圖無知物理硬件和系統管理程序提供了一種計算編排方法。請注意,Nova 不僅提供了用於管理的 OpenStack API,還爲那些習慣該界面的人提供了一種 Amazon EC2-兼容 API。Nova 支持組織所使用的專有系統管理程序,但更爲重要的是,它支持像 Xen 和 Kernel Virtual Machine (KVM) 這樣的系統管理程序,也支持像 Linux® Container 這樣的操作系統虛擬化。出於開發的目的,還可以使用 QEMU 這樣的仿真解決方案。
Swift(或 OpenStack Object Storage)項目可通過配置了普通硬盤的標準服務器提供可伸縮的冗餘存儲集羣。Swift 並不代表一個文件系統,它實現的是一個更爲傳統的對象存儲系統,可用於主要是靜態數據(一種關鍵的使用模型是靜態 VM 映像)的長期存儲。Swift 不具備集中式控制器,它能改善整體的可伸縮性。它在內部管理跨集羣的複製(無需獨立磁盤冗餘陣列)來提高可靠性。
Glance(或 OpenStack Image Service)爲 Nova 能夠使用(此選項存儲在 Swift 內)的虛擬磁盤映像提供了一個存儲庫。Glance 提供了一個 API 來註冊磁盤映像,此外還提供了通過一個簡單的 Representational State Transfer (REST) 界面的發現和交付。Glance 很大程度上對虛擬磁盤映像格式不可知,支持各種標準,包括 VDI (VirtualBox)、VHD (Microsoft® Hyper-V®)、QCOW2 (QEMU/KVM)、VMDK/OVF (VMware) 以及原始格式。Glance 還提供了磁盤映像校驗和、版本控制(和其他元數據)以及虛擬磁盤驗證和審計/調試日誌。
此核心 OpenStack 項目(Nova、Swift 和 Glance)是使用 Python 開發的,它們都可以在 Apache License 下使用。
演示 OpenStack
因爲有大量獨立項目需要安裝並配置以便能夠相互協作,安裝 OpenStack 可能會非常耗時(參見 參考資料 獲取完整安裝的更多信息)。但是對於好奇的讀者來說,有其他一些選項可以極大地簡化 OpenStack 的啓動和運行。
閱讀過我之前文章的讀者都知道我是一個 VM 映像迷,熱衷於基於 Linux 軟件的簡化使用。VM 允許您輕鬆地創建一個新實例來嘗試或演示軟件。此 VM 是一個自包含的 Linux 實例(有時稱作虛擬設備),可以用必要的軟件預安裝並預配置以供使用。以這種方式配置的軟件可極大地簡化其使用,讓您得以試驗那些否則很難掌握或掌握起來很耗時的軟件。參閱 參考資料 獲取滿足您特定的硬件和基礎操作系統需求的安裝選項。
對於本次展示,我決定使用最新的 Ubuntu 發佈版 (12.04) 和 OpenStack Essex 發佈版。Essex 的 ISO 版本可以使用 uksysadmin 安裝程序進行安裝(參見 參考資料)。在 Ubuntu Precise 上成功安裝了 OpenStack Essex 後,使用一個外部的 Web 瀏覽器能夠登錄 OpenStack 儀表盤。圖 3 顯示了具有兩種容器格式的來賓(Guest) VM 映像的 System Panel Images 選項卡界面。
圖 3. 可用來賓映像的 OpenStack Dashboard 視圖
[img]https://s5.51cto.com/wyfs02/M00/A0/62/wKioL1mesUCyaKTYAABiaEFW0uI52.jpeg-s_783325931.jpeg[/img]
此映像可用來創建一個演示實例,正如圖 4 所示,創建已經開始。這個實例現在就可以使用了。
圖 4. 計算實例的 OpenStack Dashboard 視圖
[img]https://s1.51cto.com/wyfs02/M02/01/B2/wKiom1mesUyhCDM_AAB12bY1v3436.jpeg-s_2226419109.jpeg[/img]\
現在,有了運行於 OpenStack 之上的計算映像,我可以通過一個簡單的 Secure Shell (SSH) 會話使用其 IP 地址 (172.16.1.1) 對其進行訪問(參見清單 1,用戶輸入以粗體顯示)。
清單 1. 通過 SSH 訪問 OpenStack 計算實例

$ ssh -i Downloads/demo.pem [email protected]
The authenticity of host '172.16.1.1 (172.16.1.1)' can't be established.
RSA key fingerprint is df:0e:d0:32:f8:6d:74:49:ea:60:99:82:f1:07:5d:3b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.1' (RSA) to the list of known hosts.
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-virtual x86_64)

* Documentation: https://help.ubuntu.com/

System information disabled due to load higher than 1.0

0 packages can be updated.
0 updates are security updates.

Get cloud support with Ubuntu Advantage Cloud Guest
http://www.ubuntu.com/business/services/cloud

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.


To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ubuntu@demo1:~$
ubuntu@demo1:~$ hostname
demo1
ubuntu@demo1:~$ ps
PID TTY TIME CMD
835 pts/0 00:00:06 bash
948 pts/0 00:00:00 ps
ubuntu@demo1:~$

所有這些層都運行後,可能很難想象所發生的事情。圖 5 展示了整個堆棧,希望能幫助解釋清楚。在這個演示中,運行 Mac OS X 的 Mac 提供了基礎平臺。VirtualBox 運行於 Mac OS X 之上,提供了 OpenStack 的執行平臺(運行於 Ubuntu Linux 上)。注意,VirtualBox 是一個類型-2 的虛擬化管理程序。在 OpenStack Linux 層,QEMU 被用作一個來賓系統管理程序,從硬件角度來看,這很理想,但缺乏真正的產品設置所需的性能。
圖 5. 在普通硬件上運行的 OpenStack 演示堆棧

沒有了對嵌套虛擬化(在另一個系統管理程序之上有效運行一個系統管理程序)的支持,我依賴於 QEMU 作爲我在 OpenStack 上運行的來賓系統管理程序。這讓我能夠在一個來賓系統管理程序上運行一個來賓 VM,該來賓 VM 在一個類型-2 的虛擬化管理程序上運行。雖然這種設置可能會很慢,但它充分展示了一個在普通計算機系統上運行的 IaaS 堆棧。注意,如今某些 AMD 處理器可提供一種有效的支持嵌套虛擬化的方式。
雖然使用 QEMU 對於性能而言並不理想,但它與 KVM (Linux as a hypervisor) 極爲兼容,因而很容易在兩個系統管理程序之間遷移(除了在這兩者之前兼容的 VM 映像)。在這種情況下,讓 QEMU 之所以理想的原因是它可以在未提供虛擬化支持的硬件上執行。注意,我的平臺在這個例子中是具有虛擬化功能的,但是由於我在 VirtualBox(一個憑藉自身力量的虛擬化管理程序)上運行,嵌套虛擬化的缺乏讓我不得不使用一個不依賴虛擬化擴展的來賓系統管理程序。不管在哪種情況下,我都使用 libvirt 來管理 VM(啓動、停止、監視等),所以,在一個有虛擬化功能的硬件上遷移到 KVM 簡單至極,只需在 OpenStack 配置文件內進行兩行修改即可。
使用 OpenStack 的其他方式
即便您沒有自己的集羣,也可採用其他選項來享受 OpenStack 帶來的益處。OpenStack 的創作者之一 Rackspace,就提供了它寄予厚望的雲的 Linux。Rackspace 的 OpenStack 雲平臺提供了 OpenStack 在公共雲基礎架構的靈活性和可伸縮性方面的優勢。
爲了簡化 OpenStack 面向私有云的安裝,很多公司都關注於簡化 OpenStack 在私有集羣內的使用。比如,Piston Cloud Computing 公司就提供了 Piston Enterprise OS 這種基於 OpenStack 的私有云操作系統。Mirantis 則向企業提供了專業的構建 OpenStack 基礎架構的服務。
OpenStack 的前景
OpenStack 將繼續集成新的功能,提高了 IaaS 解決方案的定義。OpenStack 旗下有許多其他項目可用,但還有很多仍在孵化進程中。Keystone 項目提供的身份識別服務統一了跨 OpenStack 組件的身份驗證,同時又集成了現有的身份驗證系統。還存在目的各異的社區項目,比如負載均衡即服務 (Atlas-LB);雲安裝和維護系統 (Crowbar);雲可配置和可伸縮的關係數據庫 (RedDwarf);面向雲編排的基於REST 的 API (Heat);以及涵蓋了監視、計費等的雲管理工具 (Clanavi)。在 OpenStack 項目內外還有無數其他項目正在開發當中,只要 OpenStack 的構建勢頭不減,這個列表每天都在增長。
OpenStack 並非沒有競爭,隨着舊項目的不斷髮展,新的項目也會出現。例如,CloudStack(在 2009 年首次發佈)具有幾個產品安裝,但缺乏 OpenStack 所具備的開源貢獻者支持的級別。
結束語
繼 Linux 發展成爲能符合所有使用模型的通用操作系統之後,OpenStack 也正在向代表雲操作系統的方向前進。與管理有限集的核心和本地資源不同,OpenStack 管理的是包含計算和存儲資源的龐大的服務器網絡,以及將它們連接在一起的虛擬網絡膠。
自它在 2010 年末首次發佈以來 (Austin),OpenStack 項目已經又發佈了四個版本,最新的一個版本在 2012 年 4 月發佈 (Essex)。對於每次發佈,OpenStack 都繼續推動新的、改進了的功能,這也提高了其他 IaaS 解決方案的競爭門檻。如今,在 Apache 旗下,OpenStack 成爲雲堆棧內的標準實在不足爲奇。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章