1. 程式人生 > >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 管理的資源不是單機的而是一個分布的系統,把分布的計算、存儲和網絡、設備、資源組織起來,形成一個完整的雲計算系統;OpenStack 也提供一個UI,這裏包括一個圖形化的UI: Horizon,也提供命令行的界面,還提供了一套API支持用戶開發自己的軟件…

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

  1. 它是一個中間層,可以創建管理和銷毀虛擬機,但是要完成這些操作需要依賴於第三方的 Hypervisor,通過這個 Hypervisor 去完成虛擬化的工作,OpenStack 並不能自己去提供一個虛擬化的運行環境,OpenStack 有個組件叫 Cinder(用來提供塊存儲服務的),但是 OpenStack 自己並不能進行數據的存儲和讀寫,它需要依賴一個實際的塊存儲設備的支持,這個設備可以是一個分布式的存儲系統,比如說 Ceph,也可以是一個存儲設備,比如說 EMC 的 SAN,也可以是存儲服務器的本地硬盤,但是它必須依賴一個存儲設備的支持,OpenStack 本身並不具備這個功能。這就是第一方面,OpenStack 是一個中間層。

  2. 框架有一個很重要的特點,它能提供一批 API 支持應用開發,這也是我們業內對框架的一個定義,OpenStack 當然也有這個特點,雲計算的願景就是讓用戶能夠像用電一樣去使用計算,OpenStack 的設計也是朝著這個願景去做設計的,但是實際上我們平時是不能直接用電的,我們需要用的是電冰箱、電腦、電視等等這些電器。同理,對於雲計算來說,提供 API 去支持開發應用這個事情就合情合理的非常的重要了,具備完備的 API 是 OpenStack 的突出優點。

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

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 提供的這些服務和公有雲上的服務往往有一種對應關系,OpenStack 一直在以追求像亞馬遜學習為它的目標,這裏以亞馬遜的公有雲 AWS 為例,看一下 OpenStack 的服務和亞馬遜的服務之間的對應的關系:

技術分享

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

4. OpenStack基本組件

OpenStack 核心的項目:

Nova 、 Cinder、 Neutron、 swift、 Keystone、 Glance、 Horizon

技術分享

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。有讀寫存儲服務請求的時候,Schduler決定通過哪個Cinder Volume進行讀取操作,Cinder Volume是實際控制存儲的設備

4-3. Neutron

有一個非常火的一個概念叫作SDN,軟件定義網絡,在OpenStack裏邊的一個實現,Neutron 有一個很大的特點就是提供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上去運行的一個組件

技術分享
技術分享


本文出自 “城府” 博客,轉載請與作者聯系!

OpenStack入門 之 初步認識