《OpenStack實戰》——1.3 關聯OpenStack及其控製的計算資源
本節書摘來自異步社區《OpenStack實戰》一書中的第1章,第1.3節,作者: 【美】V. K. Cody Bumgardner(V. K. 科迪•布姆加德納)著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看
1.3 關聯OpenStack及其控製的計算資源
前麵介紹了OpenStack能帶來的好處,但它是如何工作的呢?也許,理解OpenStack是怎樣工作的最簡單的方式是把這個框架與企業環境內的常見技術關聯起來。
在本節中,讀者將會了解OpenStack是如何與它控製的基礎資源(計算、存儲、網絡等)關聯起來的。如你所見,OpenStack通常不提供實際意義上的資源,它隻是簡單控製這些低層次的資源。圖1-4展示了OpenStack是如何管理資源的提供者的,它們輪流被虛擬機使用。
圖1-4 OpenStack資源管理模型
在接下來的小節裏,讀者將會看到關聯特定資源組件的詳情:服務器虛擬化,通過對hypervisor(虛擬機管理器)的控製;網絡,通過對廠商提供的硬件和OpenStack服務的控製;塊和對象存儲,通過對廠商和OpenStack服務的控製。最後,我們會看到Openstack各個服務和常見的雲術語的關聯。如你所見,OpenStack是一個協調資源和服務的框架,而不關心有哪家底層技術廠商。
1.3.1 OpenStack和hypervisor
hypervisor或者虛擬機監控器(Virtual Machine Monitor,VMM)是一種為虛擬機進行物理硬件仿真的管理軟件。OpenStack不是一個hypervisor,但它確實控製著hypervisor的操作。OpenStack框架支持多種hypervisor,包括XenServer/XCP、KVM、QEMU、LXC、ESXi、Hyper-V、BareMetal和其他(可通過下列網址查看hypervisor的支持列表:https://wiki.openstack.org/wiki/HypervisorSupportMatrix
)。讀者可能對VMware ESX、VMware ESXi和Microsoft Hyper-V比較熟悉,因為這些是當前企業虛擬化市場主流的hypervisor。因為許可限製、成本和其他因素,OpenStack社區對這些商業hypervisor的支持要少於開源的hypervisor。
圖1-5展示了OpenStack如何管理物理硬件上被hypervisor虛擬化的資源。在一個OpenStack集群內,OpenStack協調多個hypervisor資源和虛擬機的管理。
圖1-5 OpenStack管理著hypervisor
無論部署規模多大,大多數的個人和組織采用的hypervisor是XenServer或者KVM,它們也是支持最多功能的hypervisor。XenServer是思傑(Citrix)公司的產品,從嚴格意義上來說,它是開源的hypervisor,但商業支持通過思傑公司提供。KVM已經是Linux內核的一部分,因此,很多Linux發行版的維護者提供KVM的商業支持,包括紅帽(Red Hat)、Ubuntu、SUSE等。
你通過認證了嗎 隨著大量提供商開始設計基於OpenStack框架的公有IaaS服務,他們很快意識到自己的客戶可能需要微軟對運行在Windows主機上的hypervisor進行認證。當時,思傑公司的XenServer已經滿足了認證條件,並通過了微軟的認證過程。但是,盡管思傑公司有一個以CloudStack形式競爭的平台,很多組織還是使用了XenServer作為他們的OpenStack hypervisor。自從很多Linux發行廠商通過了微軟的認證以後,現在可以完全支持Windows運行在KVM hypervisor上,包括那些被OpenStack控製的hypervisor上。
本書將采用基於內核的虛擬機(Kernel-based Virtual Machine,KVM)作為hypervisor。自2007年發布的Linux 2.6.20開始,KVM被並進Linux內核,完全被OpenStack支持。KVM還提供了半虛擬化,但需要操作係統原生支持,或者通過在虛擬操作係統鏡像添加hypervisor特定驅動來進行支持。使用開源的hypervisor的傳統問題是部署和維護它的學習曲線陡峭,經常需要擁有係統、網絡和應用管理經驗。幸運的是,在組織內部提供集中化支持的虛擬化資源,資源申請必須通過組織的網絡、係統、安全和財務供給流程。通常用戶有以下3種選擇。
使用社區代碼,自給自足——社區維護的軟件使用社區的支持,自己負責部署的設計、開發和運維。
使用社區代碼,商業支持——社區維護軟件使用廠商支持,你和廠商或者隻是廠商負責部署。
使用社區項目的廠商分支,商業支持——使用廠商提供的軟件和支持,你通常隻需要負責部署關聯的運維和廠商管理。
雖然很多廠商提供OpenStack和KVM的商業支持,但很多為工作負載構建的內部雲不需要商業支持或者認證,因此,用OpenStack支持沒有購買商業支持的KVM也是很流行的做法。無論你如何部署和采用哪種支持方式,本書提供的材料都一樣有用。
Linux容器 最近,一些人對操作係統級別的虛擬化應用產生了濃厚的興趣,而不是OpenStack實例提供的基礎設施級別的虛擬化。操作係統級別的虛擬化可以在單一服務器上運行多個相互隔離的操作係統實例(容器)。但它不是hypervisor技術——它運行在係統級別,所有容器共享相同的內核。你可以把容器想象成在需要的地方提供虛擬的隔離,而沒有全虛擬化的模擬開銷。 目前最流行的兩個操作係統級別的虛擬化項目是Docker(https://www.docker.com/
)和Rocket(https://github.com/coreos/rkt
)。 雖然容器是否比基礎設施級別實例更適用於應用程序運行時傳遞還存在爭議,但毫無疑問的是,基於容器的技術將會在構建雲時廣泛采用。
1.3.2 OpenStack和網絡服務
OpenStack不是一個虛擬交換機,但它確實管理多個物理、虛擬的網絡設備和虛擬覆蓋網絡(overlay network)。不像OpenStack控製虛擬機控製器那樣受限於hypervisor提供的服務,OpenStack直接提供網絡服務,如DHCP、路由等。但與hypervisor管理類似,OpenStack對底層廠商技術透明,可以是商業或者開源的技術。
更重要的是,後端技術的改變,如從一種網絡/廠商切換到另一種網絡/廠商,並不需要客戶端配置進行改動。對於涉及網絡的大量專有的硬件、軟件和用戶接口,經常從一個廠商或者技術轉換到另一個並非易事。通過OpenStack,這些接口都被OpenStack API抽象化了,如圖1-6所示。
圖1-6 OpenStack管理網絡
OpenStack可以管理多種類型的網絡技術(實現機製),包括由Arista Networks、Cisco Nexus、Linux bridging和Open vSwitch(OVS)等提供的技術。在本書中,我們將使用OpenStack和OVS提供的網絡服務。OVS是OpenStack部署中常被選擇的一種,用戶可以簡單地在自己的環境裏獲得和複製,不需要特定硬件環境。除了網絡實現機製,還有很多被OpenStack支持的網絡類型(VLAN和各種隧道技術等),這些內容將會在第6章中詳細介紹。
1.3.3 OpenStack和存儲
OpenStack不是一個存儲陣列,至少應該不是你通常認為的存儲那種形式。OpenStack沒有從物理上提供被虛擬機使用的存儲。
如果你曾經使用過文件共享(NFS和CIFS等),就會用過“基於文件”的存儲。這種存儲的類型很容易被人使用和被計算機訪問,但它通常是另外一種存儲類型的抽象:塊存儲。你可以認為操作係統或者文件係統是塊存儲的主要用戶。
還有另外一種係統管理員可能不熟悉的存儲類型:基於對象的存儲。這種類型的存儲通常是通過軟件API(如GET /obj=xxx)接口進行訪問。基於對象的存儲是文件或塊存儲的更高層麵的抽象,但沒有後兩者的限製。基於對象的存儲可以很容易地在多個參與節點之間進行分布和複製。不像塊存儲那樣需要被虛擬機快速訪問,分布式的對象存儲允許更大的延遲,將不能用作虛擬機的卷(volume,掛載到一個實例上的塊設備)。通常做法是在創建時就指明使用對象存儲來存放卷和鏡像(包含操作係統)的備份。
下麵首先介紹OpenStack是如何管理塊存儲的,然後介紹對象存儲的相關內容。
1.塊存儲
OpenStack現在沒有為最終用戶管理基於文件的存儲。由圖1-7可以看出,OpenStack管理塊(虛擬機)存儲與管理hypervisor和網絡類似。
圖1-7 OpenStack管理塊(虛擬機)存儲
圖1-7從基礎虛擬機資源管理展望的角度展示了其全貌。OpenStack可以管理很多廠商提供的存儲解決方案,包括來自Ceph、戴爾(Dell)、EMC、惠普(HP)、IBM和NetApp等廠商的方案。與hypervisor和網絡組件一樣,OpenStack提供靈活切換存儲廠商和技術的能力,並且不需要改變客戶端的配置。
2.對象存儲
雖然OpenStack不是一個用於塊存儲(用來啟動虛擬機)的存儲陣列,但它天生擁有提供對象存儲的能力。與在物理硬件上運行Linux的支持版本不同,OpenStack提供分布式對象存儲集群時並不需要其他軟件。這種存儲類型可以用來存放卷備份,也通常用來存放大量可以被分割成二進製對象的數據。圖1-8展示了一個基本的對象服務器部署,當然這些都包含在OpenStack環境中。
圖1-8 OpenStack提供基於對象的(API)存儲
對象存儲不是必須在同一地點。事實上,節點(代理節點和存儲節點)可以在多個不同的地點,互為冗餘。
對象存儲傳統的用法是存儲那些被應用訪問的數據,如被用戶的應用程序使用的一個文檔或文件。在OpenStack環境中,對象存儲有幾種用法。例如,使用對象存儲作為虛擬機鏡像的倉庫。這樣並不是說虛擬機直接使用了這些存儲,它們隻是通過這個存儲係統維護的數據被提供出來。這樣做是合理的,因為這個提供過程不需要對隨機數據的低延時訪問。對象存儲還會用來備份一個現有的虛擬機的快照,用於長期保存備份。
1.3.4 OpenStack和雲專業術語
OpenStack是一個用來構建雲的框架,可以構建公有雲和私有雲。除了公有雲和私有雲的定義,還有“即服務”的雲定義。OpenStack是什麼即服務呢?OpenStack是多個即服務雲的基礎。
假如你對為自己的企業提供一個類似於AWS供應虛擬機和存儲資源感興趣,那麼OpenStack可以認為是基礎設施即服務(Infrastructure as a Service,IaaS)。在這種場景下,用戶具有提供給個人的直接訪問的虛擬機,並由用戶直接管理。雖然構成雲的物理組件對用戶是隱藏的,但是可以直接訪問它們。OpenStack的職責是控製為最終用戶提供基礎設施的資源。
現在假設你的雲用戶不能對基礎設施直接訪問,用戶隻能訪問由OpenStack提供和支持的應用編排功能。在這種場景下,OpenStack可以認為是平台即服務(Platform as a Service,PaaS)的後端提供者。底層的物理和虛擬基礎設施組件對用戶是隱藏的。想象一下這樣的場景,一個開發團隊需要一個獨立的應用環境(應用層部署在IaaS上)來進行軟件測試。通過雲編排,OpenStack可以用來作為部署測試平台的後端提供者。
現在假設你的公司通過使用OpenStack提供的基礎設施即服務(IaaS)或平台即服務(PaaS)為客戶提供一種服務。在這種場景下,OpenStack服務作為軟件即服務(Software as a Service,SaaS)的後端組件。你可以看到,OpenStack可以用作雲計算多個層麵的基礎組件。
現在你對OpenStack可以做什麼和如何做有了更深的理解,是時候介紹OpenStack各個組件是如何工作的了。1.4節將會介紹OpenStack各個獨立組件和它們在整個框架中的作用。
最後更新:2017-05-31 17:31:38