OpenStack入門之初步認識

胡飛發表於2016-04-19

一、OpenStack 入門 之 基礎知識

二、OpenStack 入門 之 基本元件

三、OpenStack 入門 之 各元件解析(基礎)

四、OpenStack 入門 之 各元件解析(進階)

五、OpenStack 入門 之 實際操作

六、OpenStack 入門 之 擴充套件話題

七、OpenStack 入門 之 若干討論

寫在前面

從 OpenStack 基礎知識開始學起,剖析 OpenStack 架構,分析 OpenStack 的各個元件的功能、原理和使用方法,通過實戰演練來掌握 OpenStack 的部署和操作。為今後學習 OpenStack 的高階課程以及基於 OpenStack 構建企業級雲端計算系統打下基礎。

在接下來的幾天裡,我將會學到以下主要內容:

  • OpenStack 基礎知識
  • OpenStack 各元件間的關係
  • OpenStack 各元件解析(基礎)
  • OpenStack 各元件解析(進階)
  • OpenStack 實際操作
  • OpenStack 擴充套件話題

本次筆記的內容有:

  • 瞭解 OpenStack 的歷史;
  • 瞭解 OpenStack 的生態圈;
  • 瞭解 OpenStack 管理的資源;
  • 掌握 OpenStack 的基本元件。

1. 對OpenStack基本瞭解

OpenStack 是最火的開源軟體之一,活躍度呈指數級別上升; 是 一組開源專案,誕生之初是由兩個專案組成,目前十幾個專案; 是一個 雲作業系統,OpenStack is a cloud operating system that …

OpenStack 管理的資源不是單機的而是一個分佈的系統,把分佈的計算、儲存、網路、裝置、資源組織起來,形成一個完整的雲端計算系統;OpenStack 也提供一個 UI,這裡包括一個圖形化的 UI:Horizon,也提供命令列的介面,還提供了一套 API 支援使用者開發自己的軟體…

OpenStack 是用 Python 實現的軟體。( 分散式系統的邏輯非常複雜,所以用更高階的語言去做,可以把精力更多的放在邏輯上,而不是說糾結與底層的細節,因為高階語言的底層機制已經優化的非常好了,C/C++ 寫出來的東西效能不一定就真高;事實上在分散式系統這個領域,有很多很好的例證,比方說 OpenStack 用 Python 寫的,Hadoop 使用 Java 寫的,UC Berkeley 的 Spark 使用 Scala 語言寫的,Twitter Storm 是用 Clojure 語言開發的,這些都是很著名的分散式系統,都是用的更高層的語言而不是 C )

[ OpenStack 具有哪些特點呢?]

OpenStack 是一套框架 —— API,有下面這兩個特點:

  1. 它是一箇中間層,可以建立、管理和銷燬虛擬機器,但是要完成這些操作需要依賴於第三方的 Hypervisor,通過這個 Hypervisor 去完成虛擬化的工作,OpenStack 並不能自己去提供一個虛擬化的執行環境,OpenStack 有個元件叫 Cinder(用來提供塊儲存服務的),但是 OpenStack 自己並不能進行資料的儲存和讀寫,它需要依賴一個實際的塊儲存裝置的支援,這個裝置可以是一個分散式的儲存系統,比如說 Ceph,也可以是一個儲存裝置,比如說 EMC 的 SAN,也可以是儲存伺服器的本地硬碟,但是它必須依賴一個儲存裝置的支援,OpenStack 本身並不具備這個功能。OpenStack 是一箇中間層
  2. 框架有一個很重要的特點,那就是它能提供一批 API 去支援應用的開發,這也是我們業內對框架的一個定義,OpenStack 當然也有這個特點,雲端計算的願景就是讓使用者能夠像用電一樣去使用計算,OpenStack 的設計也是朝著這個願景去做設計的,但是實際上我們平時是不能直接用電的,我們需要用的是電冰箱、電腦、電視等等這些電器。同理,對於雲端計算來說,提供 API 去支援開發應用這個事情就合情合理的非常的重要了,具有完備的 API 是 OpenStack 的突出優點。

[ OpenStack 不是什麼?]

  1. 它不是虛擬化軟體(必須知道這點),OpenStack 雖然管理虛擬機器,但不具備虛擬化的功能,它給上層提供一個虛擬化的執行環境,必須得依賴一個第三方的虛擬化軟體來實現,比如預設支援的 Linux 核心虛擬機器,裝完 Linux 之後就自動帶了,整合到 Linux 核心裡面了(KVM),另外它還支援 Xen,還支援微軟的 Hyper-V,支援 VMware 的 Vshpere,還支援像 Linux Container 和 Docker 這樣輕量級的虛擬化技術。總之,OpenStack 本身不提供虛擬化,依賴第三方軟體
  2. 需要了解的第二層含義:這個雲化和虛擬化實際上是不一樣的,雲 != 虛擬化,雲化的目的是為了實現效用計算,彈性計算,動態資源排程,多租戶等這樣的一些特性;而虛擬化只是實現雲端計算的這些特性中的一個技術手段而已,而且它不是必需的。比方說 IBM 的 Softlayer 是 IBM 主推的雲服務之一,它中間有一個非常大的特點就是,它支援 Bare Metal Server,直譯過來就是 “金屬裸機”,也就是 Softlayer 在上面不做虛擬化,而是直接用物理伺服器來實現雲,直接給使用者、租戶提供的就是物理伺服器,Softlayer 也可以在上面來實現多租戶 、彈性計算等等特性。總之,Softlayer 沒有虛擬化,但是 Softlayer 也做了雲。第二個例子是 OpenStack 也有一個專案叫作 Ironic,是為了通過管理 “金屬裸機”來實現雲從而提出的專案。

2. OpenStack生態圈

一個成功的開源平臺,有三個要素組成,技術 + 生態 + 使用者; OpenStack 誕生於2010年;華為是 OpenStack 的黃金會員;

瞭解一下:

  • 社群的組成
  • 基金會的管理機構
  • 專案的孵化

2-1. 社群組成

  • 個人成員:2014.4/ E版本/2600+ , 2014.4/ I版本/15000+
  • 企業成員:白金成員(8個,不再增加),黃金成員(若干),企業贊助商(OpenStack 基金會主要的資金來源)

一家初創企業 UnitedStack 也是基於 OpenStack 做雲服務的,在國內也是雲端計算這塊有影響力的

2-2. 管理機構

  • 技術委員會(Technical Committee,13個人組成,討論 OpenStack 的技術方向,還有一些跨專案的協作問題),
  • 董事會(討論 OpenStack 的戰略佈局,基金會的運營,白金會員的任命,黃金會員的選舉,個人會員的選舉),
  • 使用者委員會(User Committee,中國在西安有個正式的使用者組);

2-3. 專案產生與發展

每個專案經過孵化階段以後才能夠整合釋出,OpenStack 為專案的孵化提供了一整套的基礎設施和資源,包括程式碼和文件的管理,還有配置管理,版本控制等等工具;這些基礎設施能夠支援全球範圍內的大規模的協作開發,這些基礎設施和工具本身也是代表了 IT 領域先進的生產工具;

半年釋出一個版本,會由技術委員會和版本釋出經理以及專案的 TPL 來共同決定每個版本中間要釋出哪些 Feature。

3. OpenStack資源管理

OpenStack 作為一個作業系統,管理資源是它的首要任務;OpenStack 管理資源主要有三個方面:計算儲存 和 網路

OpenStack 對資源進行管理,並且以服務的形式提供給上層應用或者使用者去使用。這些資源的管理是通過 OpenStack 中的各個專案來實現的。其中計算資源管理相關的專案是 Nova(又稱為 OpenStack Compute);儲存相關的主要有塊儲存服務 Cinder、物件儲存服務 Swift、映象儲存服務 Glance 這三種;

與網路相關的主要是一個和軟體定義網路相關的專案叫作 Neutron;另外,Nova 中間有一個管理網路的模組叫作 Nova Network,作為一個比較穩定的遺留元件仍在 OpenStack 裡面和 Neutron 並存,我們在小規模部署裡面經常為了追求這種穩定,並且減少工作量會去使用 Nova Network 這樣的一個元件來對網路資源進行管理。

OpenStack 提供的這些服務和公有云上的服務往往有一種對應關係,這裡以亞馬遜的公有云 AWS 為例,看一下 OpenStack 的服務和亞馬遜的服務之間的對應的關係:

說明:Keystone 是後臺的一個模組一個元件,在 AWS 的服務是看不見的,隱藏在叫作計費系統的後端(DOS系統的後端),AWS 在中國可以免費使用,可以體驗一下。 

4. OpenStack基本元件

OpenStack 核心的專案:Nova 、 Cinder、 Neutron、 Swift、 Keystone、 Glance、 Horizon

OpenStack及其元件

4-1. Nova

又被稱為 OpenStack Compute,主要作用是控制虛擬機器的建立,以及改變它的容量和配置,還可以做虛擬機器的銷燬,虛擬機器的整個生命週期都是由 Nova 來控制的;

Nova 的部署執行一般有兩種情況:一類是 Nova 作為 Controller 節點去執行,Controller 節點是用來控制其它的一些計算節點的;另外一類節點就是 Compute 節點,是計算節點,上面是執行實際的虛擬機器的;

[ 那麼有什麼區別呢?]

  • 在 Compute 節點上部署的 Nova,它上面核心執行的一個東西叫作 Nova Compute,主要是為了去對虛擬機器進行控制,它去和 Hypevisor 進行互動,對虛擬機器進行控制;
  • 在 Controller 上執行的 Nova 就相對複雜一些,它有 Scheduler、Conductor、Nova Cell;
  • Scheduler 在使用者發起請求的時候決定這個虛擬機器應該在哪個機器上啟動,應該在哪個計算節點上啟動;
  • Conductor 對所有的計算節點進行統一的管理;
  • Nova Cell 的作用是級聯
  • 控制節點:Scheduler(決定虛擬機器的啟動位置)、Conductor(對所有的計算節點進行統一管理)、Nova Cell(級聯)
  • 計算節點:對虛擬機器進行控制

4-2. Cinder

Cinder 元件主要的用途是提供塊儲存服務,最核心的兩個部分是 Scheduler 和 Cinder Volume。有讀寫儲存服務請求的時候,Scheduler 決定通過哪個 Cinder Volume 進行讀取操作,Cinder Volume 是實際控制儲存的裝置。

4-3. Neutron

有一個非常火的概念叫作 SDN,軟體定義網路,Neutron 是在 OpenStack 裡邊的一個實現, 有一個很大的特點就是提供 Plugin 模組,這個是使用者可以自己去寫的。

4-4. Swift

Swift 是一個比較有趣的元件,從 OpenStack 的誕生之初就已經有 Swift 的這個專案了,但是它發展到現在還是比較獨立的,和其它元件的互動關係比較少,是一個相對獨立的發展套路,美國有一個公司叫作 SwiftStack,是專門用 Swift 來做的一個公司,Swift 是提供物件儲存服務的 ,提供一個類似於像亞馬遜 S3 或者像國內的七牛這樣的一個儲存服務。 其他的元件如果要用到物件儲存的時候,就去 Swift 裡邊去寫資料,讀資料; Swift 可以利用 Keystone 來做認證。

4-5. Glance

需要使用 Swift 最多的一個元件,主要是用 Swift 來存虛擬機器的映象、快照等等這樣一些東西。

4-6. Keystone

主要是為各個元件提供使用者的認證、建權等等這樣的一些服務。

4-7. Horizon

圖形介面。

4-8. Heat

是用來做各個服務的編排的。

4-9. Sahara

把 Hadoop 能夠放在 OpenStack 上去執行的一個元件。

4-10. 如圖所示

 

上面都只是對元件的簡介,後續部落格繼續深入剖析。

相關文章