剖析開源云

jopen 12年前發布 | 38K 次閱讀 開源云 分布式/云計算/大數據

M. Tim Jones, 獨立撰稿人

英文原文:Anatomy of an open source cloud

簡介: 現在的云計算已不再是一個新的尖端技術,它已成為徹底改變我們使用和開發隨需應用程序方式的一種極有價 值的重要技術。正如您所知,Linux 和開源技術為云(公共的和私有的基礎架構)提供了基礎。在本文中,我們將對云進行剖析,探究其架構以及用來構建這 些可伸縮的動態計算和存儲平臺的各種開源技術。

2012 年 6 月 5 日,作者對整篇文章進行了基本更新,包括了有關 OpenStack 以及針對云的 嵌套虛擬化及其重要性 的信息,還添加了三個相關的 參考資料

        對分布式系統(也就是 Internet)使用云作為一種抽象是十分普遍的,但在過去的幾年中,這個抽象已經擴展,并引入了高度虛擬化的可伸縮基礎架構,這些基礎架構可以很容易 地被作為一個服務(本地的,遠程的,或者本地與遠程組合的資源)提供。本文將不對云架構的定義及其優點做深入的介紹,您可以參考 參考資料 部分中給出的相關閱讀。

        云計算剖析

        本文將從云架構的核心抽象開始討論(從基礎架構即服務 [IaaS]),然后是構建塊,最后是高度集成的解決方案。

        盡管不是必需的,但虛擬化為構建可動態伸縮的架構提供了一些獨特的優勢。除資源共享和可伸縮性外,為了負載均衡,虛擬化還能夠在物理服務器間遷移虛擬機 (VM)。圖 1 中 所示的這個虛擬化組件是由一個名為虛擬管理程序(有時也叫作虛擬機監視器 [VMM])的軟件層提供的。這個層提供了同時在一個單一物理機器上執行多個操 作系統(及其應用程序)的能力。每個操作系統被視為一個邏輯機器并由虛擬管理程序映射到物理機器。在這個虛擬管理程序上有一個名為 virtual machine 的 對象,這個對象封裝了操作系統、應用程序及配置。另外,如果需要,還可以在這個虛擬管理程序中提供設備仿真或是作為一個 VM 提供設備仿真。最后,考慮到虛擬化的新動態特性及它所提供的新功能,還會需要新的管理模式。這種管理最好在各層內完成,本地管理在服務器上完成,還有更高 級別的基礎架構管理,以便提供虛擬環境的全面協調管理。

        圖 1. 云中一個節點的核心元素 

剖析開源云 

        如果將圖1中的那些節點在一個具有共享存儲的物理網絡上繁殖它們,在整個基礎架構上編排管理,然后用緩存和過濾提供入向連接(無論是私有的還是公共的設置)的前端負載均衡,那么您就有了一個可以叫作 的慮擬基礎架構了。圖2顯示了這個新結構。有了根據其各自的負載實現的跨節點 VM 均衡(甚至是動態均衡的),睡眠狀態的服務器可以關掉,除非還需要額外的計算能力(以提供更好的電源效率)。

        圖 2. 云計算基礎架構

剖析開源云 

        定義了云的基本架構后,就可以開始探究如何應用開源技術來構建一個動態的云基礎架構了。

        核心開源技術

        Linux 領域經歷著以虛擬化、管理和大規模云軟件包集成的虛擬基礎架構為中心的開發浪潮。在這里,我們先來看一下在單個節點級別上的開源,然后再研究此基礎架構。

        Hypervisor

        【hypervisor,超級監督者,引申為超級管理程序。一種運行在基礎物理服務器和操作系統之間的中間軟件層,可允許多個操作系統和應用共享硬件。】

        Hypervisor 是云在節點級別的基礎。盡管虛擬化不是必需的,但它在提供可伸縮的和功耗合理的架構方面的能力是勿庸置疑的。目前有很多 開源虛擬化解決方案,其中有兩個解決方案很關鍵,它們可以將 Linux 操作系統轉化為 Hypervisor,這兩個解決方案分別為 Linux Kernel Virtual Machine (KVM) 和 Lguest。KVM 是 Hypervisor 的官方解決方案,可部署于生產環境中。Lguest 是一個只能運行 Linux VM 的以 Linux 為中心的解決方案,但將它集成到內核就可以得到更廣泛的應用。由于其性能優勢,Xen hypervisor 也被廣泛用于公共和私有 IaaS 解決方案中。

        除了將 Linux 轉換為 hypervisor 外,還有其他一些以 guest VM 為中心的解決方案。User-Mode Linux (UML) 則是另一種方式,它能修改 guest Linux 內核使其運行在另一個 Linux 操作系統上(無 hypervisor )。因為許多用戶都希望運行一個未被修改的內核,所以完整的虛擬化解決方案(比如 KVM)更受歡迎。

        UML 方法也很受歡迎,但它需要虛擬硬件(比如控制臺、虛擬硬盤和網絡)。

        設備仿真

        Hypervisor 提供了與多個操作系統共享 CPU 的途徑(CPU 虛擬化),但是為了提供完整的虛擬化,整個環境都必須針對這些 VM 進行虛擬化。機器(或平臺)仿真可以以幾種方式實現,其中有一種流行的開源包可支持許多 hypervisor ,被稱作 QEMU。QEMU 是一個完全的仿真器和 hypervisor。但是 KVM 只將 QEMU 用于設備仿真,作為用戶空間內的一個單獨過程(參見圖1)。QEMU 的一個有趣特性是因它提供了磁盤仿真(通過 QCOW 格式),QEMU 還提供了其他一些高級特性,比如快照和實時 VM 遷移。

        自內核 2.6.25 后,KVM 使用 virtio 作為一種優化 I/O 虛擬化性能的手段。為此,它將準虛擬化了的 (paravirtualized) 驅動程序引入到 hypervisor,進而將性能提高到了接近原生的級別。雖然這只有在操作系統可針對此目的修改時才有效,但是它還是可以用在 Linux hypervisor場景中的 Linux guest 內。

        如今,virtio 和 QEMU 可協同工作以便在用戶空間內的 Linux guest 和 QEMU 仿真器之間優化仿真設備事務。

        虛擬網絡

        由于 VM 合并到了物理服務器上,因此對平臺的聯網需求十分迫切。但我們不需要把所有 VM 的聯網都強加到這個平臺的物理層上,本地通信可自行被虛擬化。為了優化 VM 間的網絡通信,引入了虛擬交換。vSwitch 和物理交換一樣,只是被虛擬化進了這個平臺(參見 圖 3)。在這個圖中,與 VM 相連的虛擬接口 (VIF) 通過虛擬交換與物理接口 (PIF) 進行通信。

        圖 3. 具有虛擬和物理接口的 Open vSwitch 高級視圖

剖析開源云 

        開源也可以解決這個問題,借助的是一個很有趣的解決方案,稱為 Open vSwitch。除了為虛擬環境提供虛擬交換 外,vSwitch 還能集成物理平臺及提供企業級特性,比如虛擬本地局域網絡 (VLAN)、Quality of Service (QoS)、中繼和對硬件加速的支持(比如單根 I/O 虛擬化 [IOV] 網絡適配器)。Open vSwitch 現在可用的是 2.6.15 內核,并支持一系列基于 Linux 的虛擬化解決方案 (Xen、KVM 和 VirtualBox)和管理標準(Remote Switched Port Analyzer [RSPAN] 和 NetFlow 等)。

        VM 工具和技術

        由于 VM 是操作系統、根文件系統和配置的聚合,因此空間已經很成熟,完全適于工具開發。但是為了充分發揮 VM 和工具的潛力,必須有一種方式來組合它們。目前的這種方式稱為 Open Virtualization Format (OVF), 它是一種 VM 結構,靈活、高效且可移植。OVF 在一個 XML 包裝程序內包含了一個虛擬磁盤映像,這個包裝程序定義了該 VM 的配置,包括網絡配置、處理器和內存要求以及多種可擴展的元數據來進一步定義此映像及其平臺要求。OVF 提供的關鍵功能是可移植性,可以以一種虛擬管理程序不可知的方式分發 VM。

        目前,有很多實用工具可用來管理 VM 映像 (VMI) 以及將這些映像轉變為其他格式,或從其他格式轉變回來。VMware 的 ovftool 就 是這樣一種很有用的工具,可用于 VMI 轉化(比如,從 VMware Virtual Disk Development Kit [VMDK] 格式轉變為 OVF)。對于 VMI,這些工具顯得非常有用,但是如果有一個物理服務器,要將它轉變為 VMI,該如何做呢?對此,您可以使用一個很有用的工具,稱為 Clonezilla(http://clonezilla.org/)。 雖然該工具最早是作為災難恢復的磁盤克隆工具開發的,但它可以被用來將一個物理服務器實例轉化成一個 VM,以便于部署在一個虛擬基礎架構內。隨著 OVF 格式的大量采用,有很多其他的轉換和管理工具或者已經存在(比如構建于 libvirt 之上的實用工具)或正在開發之中。

        本地管理

        本文從兩個角度探索了管理。本節討論平臺管理;稍后的一個章節會談及較高級別的基礎架構管理。

        Red Hat 引入了 libvirt 庫作為管理平臺虛擬化(虛擬管理程序和 VM)的一個 API。libvirt 的一個吸引人之處是它支持多種 hypervisor 解決方案(KVM 和 Xen 就是其中兩個)并提供對多種語言(比如 C、Python 和 Ruby)的 API 綁定。它提供的是管理的 “最后階段”,直接與平臺虛擬管理程序交互并將 API 擴展到更大的基礎架構管理解決方案。借助 libvirt,啟動和停止 VM 非常簡單,而且它還為更先進的操作(比如在平臺間遷移 VM)提供了 API。使用 libvirt 還能使用它的 shell(構建于 libvirt 之上),稱為 virsh

        基礎架構開源技術

        了解了虛擬節點級別的開源解決方案后,接下來看看支持這種基礎架構的其他一些開源解決方案。本文共討論了三類。前兩類是基礎架構級別技術,可補充之前我們討論的解決方案。第三類包含一些集成的解決方案,可將所有這些綜合起來以簡化部署。

        I/O 技術

        構建一個可伸縮的均衡 Web 架構取決于跨服務器(實現后端功能)均衡 Web 流量的能力。目前已有很多負載均衡解決方案,但最近 Yahoo! 也開源了一個解決方案,名為 Traffic Server。Traffic Server 非常有意思,因為它在一個包內封裝了面向云基礎架構的大量功能,包括會話管理、身份驗證、過濾、負載均衡和路由。Yahoo! 最初是從 Inktomi 購買到此產品的,但是現在已經對其進行擴展并將此產品引入到了開源領域。

        基礎架構管理

        較大規模的基礎架構管理(管理很多 hypervisor 以及更多 VM)可以通過幾種方式實行。其中最常用的兩個解決方案均構建自同一個平臺 (libvirt)。oVirt 包是一個開放的 VM 管理工具,可管理少至幾個 VM,多至數千個運行在數百個主機上的 VM。oVirt 包由 Red Hat 開發,是一個基于 Web 的管理控制臺,除了進行傳統管理外,還支持集群和負載均衡自動化。oVirt 工具用 Python 語言編寫。VirtManager 基于的也是 libvirt,并且也是由 Red Hat 開發,它是具有 GTK+ UI 的應用程序(而不像 oVirt 那樣是基于 Web 的)。VirtManager 帶來了更為豐富的圖形顯示(比如顯示當前性能和資源使用情況),而且還包含了一個 VNC 客戶查看器,可作為對遠端 VM 的一個完整的圖形控制臺。

        Puppet 是另外一種開源包,為數據中心基礎架構(一個云)量身設計。雖然它不是僅為了虛擬基礎架構而設計,但它卻可以通過抽象對等操作系統的細節而簡化大型基礎架 構的管理。它是通過 Puppet 語言的使用實現這個目的的。Puppet 非常適合于自動化管理許多服務器上的任務,如今已被廣泛使用。

        集成的 IaaS 解決方案

        如下所列的這些開源包采取了一種更為全面的方式,它們均在一個包內集成了所有必需功能(包括虛擬化、管理、接口和安全性)。如果將它們添加到服務器和存儲網絡上,這些包均能提供靈活的云計算和存儲基礎架構 (IaaS)。有關這些平臺的詳細信息,請參見 參考資料

        Eucalyptus

        最為流行的用來構建云計算基礎架構的開源包之一是 Eucalyptus(全稱是 Elastic Utility Computing Architecture for Linking Your Programs to Useful Systems)。 它的獨特之處是其接口與 Amazon Elastic Compute Cloud(Amazon EC2—Amazon 的云計算接口)兼容。此外,Eucalyptus 還包含了 Walrus,它是一個云存儲應用程序,與 Amazon Simple Storage Service(Amazon S3—Amazon 的云存儲接口)兼容。

        對于 hypervisot,Eucalyptus 支持 KVM/Linux 和 Xen,對于集群管理,包括了 Rocks 集群分發。

        OpenNebula

        OpenNebula 是另一種有趣的開源應用程序(在 Apache 許可下),在 Universidad Complutense de Madrid 開發。除了支持私有云結構之外,OpenNebula 還支持混合云的概念。混合云允許私有云基礎架構與公共云基礎架構(比如 Amazon)的集成以提供更高級別的伸縮。

        OpenNebula 支持 Xen、KVM/Linux 和 VMware,并且依賴于 libvirt 等元素來進行管理和內省。

        Nimbus

        Nimbus 是一種以科學計算為中心的 IaaS 解決方案。使用 Nimbus,您可以借用遠程資源(比如由 Amazon EC2 提供的遠端資源)并能對它們進行本地管理(配置、部署 VM 和監視等)。Nimbus 由 Workspace Service project(Globus.org 的一部分)演變而來。由于依賴于 Amazon EC2,因此 Nimbus 支持 Xen 和 KVM/Linux。

        Xen 云平臺

        Citrix 已經將 Xen 集成到一個 IaaS 平臺,Xen 被用作 hypervisor,而同時又并入了其他的開源功能,比如 Open vSwitch。Xen 解決方案的優勢之一是其著重于來自 Kensho 項目的基于標準的管理(包括 OVF、Distributed Management Task Force [DTMF]、Common Information Model [CIM] 和 Virtualization Management Initiative [VMAN])。Xen 管理棧支持 SLA 保障,以及具體的退款標準。

        OpenQRM

        倒數第二個解決方案是 OpenQRM,這是一種數據中心管理平臺。OpenQRM 提供了單個控制臺來管理整個虛擬化的數據中心,在架構上它允許插入以便集成第三方工具。OpenQRM 集成了對高可用性(通過冗余)的支持,并支持各種各樣的虛擬管理程序,包括 KVM/Linux、Xen、VMware 和 Linux VServer。

        OpenStack

        目前,領先的 IaaS 解決方案稱為 OpenStack。OpenStack 于 2010 年 7 月發布,并且迅速成為標準開源 IaaS 解決方案。OpenStack 是兩種云計劃的組合,即 RackSpace Hosting (Cloud Files) 和 NASA 的 Nebula platform。OpenStack 是用 Python 語言開發的,并且在 Apache 許可下的開發活動很活躍。

        圖 4 展 示了 OpenStack 作為一種模塊化架構來管理一組計算和存儲服務器。可通過三個主要組件來定義 OpenStack:Nova(表示計算端)、Swift(表示對象存儲)和 Glance(實現映像服務)。OpenStack 支持各種各樣的 hypervisor,包括 KVM、Linux Containers (LXC)、QEMU、UML、Xen 和 XenServer。OpenStack 現在促進了云基礎架構的開放標準,并且因此其采用率也在迅速增加。

        圖 4. OpenStack 模塊化架構

剖析開源云 

        嵌套的 hypervisor

        虛擬化和開源中最有趣的發展之一就是能夠在一個 hypervisor 上托管另一個 hpervisor(使用稱為嵌套 的概念)。想想 圖 1 中的內容,典型的使用模型是:對于 guest 虛擬機,將虛擬管理程序作為物理平臺的抽象。通過嵌套,除了 guest 虛擬管理程序(參見圖4),host 虛擬管理程序為整個虛擬機提供了基本級別的抽象(一種典型用例)。

        圖 5. 嵌套虛擬管理程序作為一種有用的抽象

剖析開源云 

        雖然嵌套可能看似是一種很奇怪的使用模型,但可考慮將其應用到云計算中。云通常需要多個虛擬機才能滿足其虛擬管理程序選擇的需求。但是如果該虛 擬管理程序支持嵌套,那么用戶不僅可以提供其虛擬機,而且還能提供所選的 guest 虛擬管理程序。這也為用戶提供了額外的抽象,為云添加了可移植性(能夠輕松地在云提供商之間切換)。

        目前 KVM 虛擬管理程序已支持嵌套的虛擬化。查看 參考資料 內容,了解如何在 AMD 服務器上演示該功能。

        結束語

        對開源技術在云和虛擬化領域中的引導作用的介紹足以占據相當大的篇幅,本文只對當今流行、常見的一些解決方案作了簡短介紹。不管您是想要根據您 自己的需要逐步構建一個云,還是想要一個開箱即用的綜合解決方案,開源技術都能讓您如愿以償。有關這些解決方案以及其他解決方案的細節,請參閱接下來的 參考資料 部分。

        參考資料

        學習

        關于作者

剖析開源云

        M. Tim Jones 是一名嵌入固件架構師,他是 Artificial Intelligence: A Systems Approach, GNU/Linux Application ProgrammingAI Application Programming 和 BSD Sockets Programming from a Multi-language Perspective 等書的作者。他的工程背景非常廣泛,從同步宇宙飛船的內核開發到嵌入式系統架構設計,再到網絡協議的開發。Tim 是位于科羅拉多州 Longmont 的 Emulex Corp. 的一名高級架構師。

來自:http://www.ibm.com/developerworks/cn/opensource/os-cloud-anatomy/index.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!