使用OpenStack實(shí)現(xiàn)云計(jì)算和存儲(chǔ)
云和公共 Infrastructure as a Service (IaaS) 背后的理念并不算很新。實(shí)際上,Amazon Elastic Compute Cloud (Amazon EC2) 到今年已經(jīng)有六歲了。有所改變的是,現(xiàn)在已經(jīng)主要將 IaaS 作為一種私有云計(jì)算,以滿足具有敏感數(shù)據(jù)的企業(yè)計(jì)算。私有云計(jì)算將 IaaS 的理念應(yīng)用到私有基礎(chǔ)架構(gòu)。雖然這么做缺少公共云(現(xiàn)收現(xiàn)付服務(wù))的經(jīng)濟(jì)優(yōu)勢(shì),但它充分利用了云計(jì)算的核心原理,使企業(yè)數(shù)據(jù)中心內(nèi)有了可伸縮和彈性的基礎(chǔ)架構(gòu)。
推薦閱讀:OpenStack簡(jiǎn)介與入門(mén)指南匯總
讓我們先來(lái)快速介紹一下 IaaS 及其基礎(chǔ)架構(gòu),然后再深入研究這個(gè)領(lǐng)先的開(kāi)源解決方案:OpenStack。
IaaS 和云基礎(chǔ)架構(gòu)
云計(jì)算架構(gòu)常常都著重于虛擬化后按需向用戶公開(kāi)的一組公共資源。這些資源包括功能各異的計(jì)算資源、持久的存儲(chǔ)資源,以及將這些資源組合在一起并將它們有條件地公開(kāi)到互聯(lián)網(wǎng)的可配置聯(lián)網(wǎng)資源。
IaaS 實(shí)現(xiàn)的基礎(chǔ)架構(gòu)(參見(jiàn) 圖 1)就遵循了這樣的模型,并添加了其他元素,比如計(jì)量(為計(jì)費(fèi)的目的來(lái)說(shuō)明使用的情況)。物理的基礎(chǔ)架構(gòu)則通過(guò)由各種技術(shù)(包括系統(tǒng)管理程序(用于平臺(tái)虛擬化)、虛擬網(wǎng)絡(luò)和存儲(chǔ))實(shí)現(xiàn)的虛擬層提取自應(yīng)用程序和用戶。
圖 1. IaaS 的高級(jí)視圖
雖然 OpenStack 是如今最為流行的一種可用的開(kāi)源云解決方案,但它當(dāng)然不是最早的一個(gè)。實(shí)際上,OpenStack 是在公共和私有領(lǐng)域開(kāi)發(fā)的兩種舊解決方案的綜合。
由位于圣巴巴拉市的加州大學(xué)的一個(gè)研究項(xiàng)目開(kāi)發(fā)的 Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus) 是更早的一種開(kāi)源 IaaS 解決方案。其他的解決方案還包括 OpenNebula(一種開(kāi)源的云計(jì)算工具箱)和 Nimbus(另一種面向 IaaS 云的開(kāi)源工具箱)。OpenStack 集成了美國(guó)國(guó)家航空和航天局 (NASA) 的部分 Nebula 平臺(tái)和 Rackspace Cloud Files 項(xiàng)目(云存儲(chǔ))。#p#
云計(jì)算的新來(lái)者:OpenStack
OpenStack 是 IaaS 空間的一個(gè)新來(lái)者,在 2010 年末首次發(fā)布。盡管此解決方案成熟度不夠,而且面市還不到兩年時(shí)間,但是 OpenStack 現(xiàn)已成為了使用最為廣泛的云堆棧之一。OpenStack 不是單一的解決方案,而是一個(gè)不斷成長(zhǎng)的開(kāi)源解決方案套件(包括核心以及新孵化的項(xiàng)目),并共同形成了一個(gè)強(qiáng)大成熟的 IaaS 堆棧。
如 圖 2 所示,OpenStack 構(gòu)建自幾個(gè)核心技術(shù)(多于這里所展示的,但這里所展示的代表關(guān)鍵方面)。左側(cè)是 Horizon 儀表盤(pán),顯示了一個(gè)可為用戶和管理員用來(lái)管理 OpenStack 服務(wù)的用戶界面。Nova 提供了一個(gè)可伸縮的計(jì)算平臺(tái),用來(lái)支持大量服務(wù)器和虛擬機(jī)(VM;以一種系統(tǒng)管理程序不可知的方式)的配置和管理。Swift 實(shí)現(xiàn)一個(gè)具有內(nèi)部冗余、可大量伸縮的對(duì)象存儲(chǔ)系統(tǒng)。在底部的是 Quantum 和 Melange,二者實(shí)現(xiàn)了網(wǎng)絡(luò)連接即服務(wù) (network connectivity as a service)。最后,Glance 項(xiàng)目為虛擬磁盤(pán)映象實(shí)現(xiàn)了一個(gè)存儲(chǔ)庫(kù)(映像即服務(wù) (image as a service))。
圖 2. OpenStack 解決方案的核心和附加組件
如圖 2 所示,OpenStack 是一個(gè)項(xiàng)目集合,整體提供了一個(gè)完整的 IaaS 解決方案。表 1 展示了這些項(xiàng)目及其起作用的方面。
表 1. OpenStack 項(xiàng)目和組件
其他重要的方面還包括 Keystone,它實(shí)現(xiàn)了對(duì)企業(yè)私有云十分關(guān)鍵的身份識(shí)別服務(wù)(對(duì)計(jì)算服務(wù)器、Glance 內(nèi)的映像以及 Swift 對(duì)象存儲(chǔ)區(qū)的訪問(wèn)方面的管理)。#p#
OpenStack 架構(gòu)
OpenStack 用三個(gè)核心開(kāi)源項(xiàng)目(如 圖 2 所示)來(lái)表示:Nova(計(jì)算)、Swift(對(duì)象存儲(chǔ))和 Glance(VM 存儲(chǔ)庫(kù))。Nova(或 OpenStack Compute),提供了跨服務(wù)器網(wǎng)絡(luò)的 VM 實(shí)例的管理。它的應(yīng)用程序編程接口 (API) 為試圖無(wú)知物理硬件和系統(tǒng)管理程序提供了一種計(jì)算編排方法。請(qǐng)注意,Nova 不僅提供了用于管理的 OpenStack API,還為那些習(xí)慣該界面的人提供了一種 Amazon EC2-兼容 API。Nova 支持組織所使用的專(zhuān)有系統(tǒng)管理程序,但更為重要的是,它支持像 Xen 和 Kernel Virtual Machine (KVM) 這樣的系統(tǒng)管理程序,也支持像 Linux® Container 這樣的操作系統(tǒng)虛擬化。出于開(kāi)發(fā)的目的,還可以使用 QEMU 這樣的仿真解決方案。
Swift(或 OpenStack Object Storage)項(xiàng)目可通過(guò)配置了普通硬盤(pán)的標(biāo)準(zhǔn)服務(wù)器提供可伸縮的冗余存儲(chǔ)集群。Swift 并不代表一個(gè)文件系統(tǒng),它實(shí)現(xiàn)的是一個(gè)更為傳統(tǒng)的對(duì)象存儲(chǔ)系統(tǒng),可用于主要是靜態(tài)數(shù)據(jù)(一種關(guān)鍵的使用模型是靜態(tài) VM 映像)的長(zhǎng)期存儲(chǔ)。Swift 不具備集中式控制器,它能改善整體的可伸縮性。它在內(nèi)部管理跨集群的復(fù)制(無(wú)需獨(dú)立磁盤(pán)冗余陣列)來(lái)提高可靠性。
Glance(或 OpenStack Image Service)為 Nova 能夠使用(此選項(xiàng)存儲(chǔ)在 Swift 內(nèi))的虛擬磁盤(pán)映像提供了一個(gè)存儲(chǔ)庫(kù)。Glance 提供了一個(gè) API 來(lái)注冊(cè)磁盤(pán)映像,此外還提供了通過(guò)一個(gè)簡(jiǎn)單的 Representational State Transfer (REST) 界面的發(fā)現(xiàn)和交付。Glance 很大程度上對(duì)虛擬磁盤(pán)映像格式不可知,支持各種標(biāo)準(zhǔn),包括 VDI (VirtualBox)、VHD (Microsoft® Hyper-V®)、QCOW2 (QEMU/KVM)、VMDK/OVF (VMware) 以及原始格式。Glance 還提供了磁盤(pán)映像校驗(yàn)和、版本控制(和其他元數(shù)據(jù))以及虛擬磁盤(pán)驗(yàn)證和審計(jì)/調(diào)試日志。
此核心 OpenStack 項(xiàng)目(Nova、Swift 和 Glance)是使用 Python 開(kāi)發(fā)的,它們都可以在 Apache License 下使用。#p#
演示 OpenStack
因?yàn)橛写罅开?dú)立項(xiàng)目需要安裝并配置以便能夠相互協(xié)作,安裝 OpenStack 可能會(huì)非常耗時(shí)(參見(jiàn) 參考資料 獲取完整安裝的更多信息)。但是對(duì)于好奇的讀者來(lái)說(shuō),有其他一些選項(xiàng)可以極大地簡(jiǎn)化 OpenStack 的啟動(dòng)和運(yùn)行。
閱讀過(guò)我之前文章的讀者都知道我是一個(gè) VM 映像迷,熱衷于基于 Linux 軟件的簡(jiǎn)化使用。VM 允許您輕松地創(chuàng)建一個(gè)新實(shí)例來(lái)嘗試或演示軟件。此 VM 是一個(gè)自包含的 Linux 實(shí)例(有時(shí)稱作虛擬設(shè)備),可以用必要的軟件預(yù)安裝并預(yù)配置以供使用。以這種方式配置的軟件可極大地簡(jiǎn)化其使用,讓您得以試驗(yàn)?zāi)切┓駝t很難掌握或掌握起來(lái)很耗時(shí)的軟件。參閱 參考資料 獲取滿足您特定的硬件和基礎(chǔ)操作系統(tǒng)需求的安裝選項(xiàng)。
對(duì)于本次展示,我決定使用最新的 Ubuntu 發(fā)布版 (12.04) 和 OpenStack Essex 發(fā)布版。Essex 的 ISO 版本可以使用 uksysadmin 安裝程序進(jìn)行安裝(參見(jiàn) 參考資料)。在 Ubuntu Precise 上成功安裝了 OpenStack Essex 后,使用一個(gè)外部的 Web 瀏覽器能夠登錄 OpenStack 儀表盤(pán)。圖 3 顯示了具有兩種容器格式的來(lái)賓(Guest) VM 映像的 System Panel Images 選項(xiàng)卡界面。
圖 3. 可用來(lái)賓映像的 OpenStack Dashboard 視圖
此映像可用來(lái)創(chuàng)建一個(gè)演示實(shí)例,正如圖 4 所示,創(chuàng)建已經(jīng)開(kāi)始。這個(gè)實(shí)例現(xiàn)在就可以使用了。
圖 4. 計(jì)算實(shí)例的 OpenStack Dashboard 視圖
現(xiàn)在,有了運(yùn)行于 OpenStack 之上的計(jì)算映像,我可以通過(guò)一個(gè)簡(jiǎn)單的 Secure Shell (SSH) 會(huì)話使用其 IP 地址 (172.16.1.1) 對(duì)其進(jìn)行訪問(wèn)(參見(jiàn)清單 1,用戶輸入以粗體顯示)。
清單 1. 通過(guò) SSH 訪問(wèn) OpenStack 計(jì)算實(shí)例
- $ ssh -i Downloads/demo.pem ubuntu@172.16.1.1
- 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:~$
所有這些層都運(yùn)行后,可能很難想象所發(fā)生的事情。圖 5 展示了整個(gè)堆棧,希望能幫助解釋清楚。在這個(gè)演示中,運(yùn)行 Mac OS X 的 Mac 提供了基礎(chǔ)平臺(tái)。VirtualBox 運(yùn)行于 Mac OS X 之上,提供了 OpenStack 的執(zhí)行平臺(tái)(運(yùn)行于 Ubuntu Linux 上)。注意,VirtualBox 是一個(gè)類(lèi)型-2 的虛擬化管理程序。在 OpenStack Linux 層,QEMU 被用作一個(gè)來(lái)賓系統(tǒng)管理程序,從硬件角度來(lái)看,這很理想,但缺乏真正的產(chǎn)品設(shè)置所需的性能。
圖 5. 在普通硬件上運(yùn)行的 OpenStack 演示堆棧
沒(méi)有了對(duì)嵌套虛擬化(在另一個(gè)系統(tǒng)管理程序之上有效運(yùn)行一個(gè)系統(tǒng)管理程序)的支持,我依賴于 QEMU 作為我在 OpenStack 上運(yùn)行的來(lái)賓系統(tǒng)管理程序。這讓我能夠在一個(gè)來(lái)賓系統(tǒng)管理程序上運(yùn)行一個(gè)來(lái)賓 VM,該來(lái)賓 VM 在一個(gè)類(lèi)型-2 的虛擬化管理程序上運(yùn)行。雖然這種設(shè)置可能會(huì)很慢,但它充分展示了一個(gè)在普通計(jì)算機(jī)系統(tǒng)上運(yùn)行的 IaaS 堆棧。注意,如今某些 AMD 處理器可提供一種有效的支持嵌套虛擬化的方式。
雖然使用 QEMU 對(duì)于性能而言并不理想,但它與 KVM (Linux as a hypervisor) 極為兼容,因而很容易在兩個(gè)系統(tǒng)管理程序之間遷移(除了在這兩者之前兼容的 VM 映像)。在這種情況下,讓 QEMU 之所以理想的原因是它可以在未提供虛擬化支持的硬件上執(zhí)行。注意,我的平臺(tái)在這個(gè)例子中是具有虛擬化功能的,但是由于我在 VirtualBox(一個(gè)憑借自身力量的虛擬化管理程序)上運(yùn)行,嵌套虛擬化的缺乏讓我不得不使用一個(gè)不依賴虛擬化擴(kuò)展的來(lái)賓系統(tǒng)管理程序。不管在哪種情況下,我都使用 libvirt 來(lái)管理 VM(啟動(dòng)、停止、監(jiān)視等),所以,在一個(gè)有虛擬化功能的硬件上遷移到 KVM 簡(jiǎn)單至極,只需在 OpenStack 配置文件內(nèi)進(jìn)行兩行修改即可。#p#
使用 OpenStack 的其他方式
即便您沒(méi)有自己的集群,也可采用其他選項(xiàng)來(lái)享受 OpenStack 帶來(lái)的益處。OpenStack 的創(chuàng)作者之一 Rackspace,就提供了它寄予厚望的云的 Linux。Rackspace 的 OpenStack 云平臺(tái)提供了 OpenStack 在公共云基礎(chǔ)架構(gòu)的靈活性和可伸縮性方面的優(yōu)勢(shì)。
為了簡(jiǎn)化 OpenStack 面向私有云的安裝,很多公司都關(guān)注于簡(jiǎn)化 OpenStack 在私有集群內(nèi)的使用。比如,Piston Cloud Computing 公司就提供了 Piston Enterprise OS 這種基于 OpenStack 的私有云操作系統(tǒng)。Mirantis 則向企業(yè)提供了專(zhuān)業(yè)的構(gòu)建 OpenStack 基礎(chǔ)架構(gòu)的服務(wù)。
OpenStack 的前景
OpenStack 將繼續(xù)集成新的功能,提高了 IaaS 解決方案的定義。OpenStack 旗下有許多其他項(xiàng)目可用,但還有很多仍在孵化進(jìn)程中。Keystone 項(xiàng)目提供的身份識(shí)別服務(wù)統(tǒng)一了跨 OpenStack 組件的身份驗(yàn)證,同時(shí)又集成了現(xiàn)有的身份驗(yàn)證系統(tǒng)。還存在目的各異的社區(qū)項(xiàng)目,比如負(fù)載均衡即服務(wù) (Atlas-LB);云安裝和維護(hù)系統(tǒng) (Crowbar);云可配置和可伸縮的關(guān)系數(shù)據(jù)庫(kù) (RedDwarf);面向云編排的基于REST 的 API (Heat);以及涵蓋了監(jiān)視、計(jì)費(fèi)等的云管理工具 (Clanavi)。在 OpenStack 項(xiàng)目?jī)?nèi)外還有無(wú)數(shù)其他項(xiàng)目正在開(kāi)發(fā)當(dāng)中,只要 OpenStack 的構(gòu)建勢(shì)頭不減,這個(gè)列表每天都在增長(zhǎng)。
OpenStack 并非沒(méi)有競(jìng)爭(zhēng),隨著舊項(xiàng)目的不斷發(fā)展,新的項(xiàng)目也會(huì)出現(xiàn)。例如,CloudStack(在 2009 年首次發(fā)布)具有幾個(gè)產(chǎn)品安裝,但缺乏 OpenStack 所具備的開(kāi)源貢獻(xiàn)者支持的級(jí)別。
結(jié)束語(yǔ)
繼 Linux 發(fā)展成為能符合所有使用模型的通用操作系統(tǒng)之后,OpenStack 也正在向代表云操作系統(tǒng)的方向前進(jìn)。與管理有限集的核心和本地資源不同,OpenStack 管理的是包含計(jì)算和存儲(chǔ)資源的龐大的服務(wù)器網(wǎng)絡(luò),以及將它們連接在一起的虛擬網(wǎng)絡(luò)膠。
自它在 2010 年末首次發(fā)布以來(lái) (Austin),OpenStack 項(xiàng)目已經(jīng)又發(fā)布了四個(gè)版本,最新的一個(gè)版本在 2012 年 4 月發(fā)布 (Essex)。對(duì)于每次發(fā)布,OpenStack 都繼續(xù)推動(dòng)新的、改進(jìn)了的功能,這也提高了其他 IaaS 解決方案的競(jìng)爭(zhēng)門(mén)檻。如今,在 Apache 旗下,OpenStack 成為云堆棧內(nèi)的標(biāo)準(zhǔn)實(shí)在不足為奇。