終於正式進入 OpenStack 部分了。 今天開始,CloudMan 將帶着大家一步一步揭開 OpenStack 的神祕面紗。
OpenStack 已經走過了 6 個年頭。 每半年會發佈一個版本,版本以字母順序命名。現在已經到第 12 個版本 Liberty(字母 L)。 OpenStack最初只有兩個模塊(服務),現在已經有 20+(見下圖),每個模塊作爲獨立的子項目開發。
面對如此龐大的陣容,作爲初學者我們如何起步呢? 這也是 CloudMan 寫這個系列教程的初衷: 通過實際操作幫助初學者由淺入深地學習和實踐 OpenStack,並最終具備實施 OpenStack 的能力。
我們會把學習的重點放在 OpenStack 最核心的地方。 那什麼是核心呢?請看下圖
作爲 IaaS 層的雲操作系統,OpenStack 爲虛擬機提供並管理三大類資源:計算、網絡和存儲。
這三個就是核心,所以我們的學習重點就是: 搞清楚 OpenStack 是如何對計算、網絡和存儲資源進行管理的。 在 20+ 模塊中,管理這三類資源的核心模塊其實不多,這幾個模塊就是我們的重點了。
要達到這個目的,我們自然需要研究 OpenStack 的整體架構。 架構裏哪些核心模塊負責管理計算資源、網絡資源和存儲資源?模塊之間如何協調工作? 同時我們會構建一個實驗環境,進到各個模塊的內部,通過實際操作真正理解和掌握 OpenStack。
好,下面我們就從架構開始吧。
OpenStack 架構
架構是個好東西,它能幫助我們站在高處看清楚事物的整體結構,避免過早地進入細節而迷失方向。
下圖是 OpenStack 的 Conceptual Architecture
中間菱形是虛擬機,圍繞 VM 的那些長方形代表 OpenStack 不同的模塊(OpenStack 叫服務,後面都用服務這個術語),下面來分別介紹。
Nova:管理 VM 的生命週期,是 OpenStack 中最核心的服務。
Neutron:爲 OpenStack 提供網絡連接服務,負責創建和管理L2、L3 網絡,爲 VM 提供虛擬網絡和物理網絡連接。
Glance:管理 VM 的啓動鏡像,Nova 創建 VM 時將使用 Glance 提供的鏡像。
Cinder:爲 VM 提供塊存儲服務。Cinder 提供的每一個 Volume 在 VM 看來就是一塊虛擬硬盤,一般用作數據盤。
Swift:提供對象存儲服務。VM 可以通過 RESTful API 存放對象數據。作爲可選的方案,Glance 可以將鏡像存放在 Swift 中;Cinder 也可以將 Volume 備份到 Swift 中。
Keystone:爲 OpenStack 的各種服務提供認證和權限管理服務。簡單的說,OpenStack 上的每一個操作都必須通過 Keystone 的審覈。
Ceilometer:提供 OpenStac k監控和計量服務,爲報警、統計或計費提供數據。
Horizon:爲 OpenStack 用戶提供一個 Web 的自服務 Portal。
在上面的這些服務中,哪些是 OpenStack 的核心服務呢? 核心服務就是如果沒有它,OpenStack 就跑不起來。 很顯然
-
Nova 管理計算資源,是核心服務。
-
Neutron 管理網絡資源,是核心服務。
-
Glance 爲 VM 提供 OS 鏡像,屬於存儲範疇,是核心服務。
-
Cinder 提供塊存儲,VM怎麼也得需要數據盤吧,是核心服務。
-
Swift 提供對象存儲,不是必須的,是可選服務。
-
Keystone 認證服務,沒它 OpenStack 轉不起來,是核心服務。
-
Ceilometer 監控服務,不是必須的,可選服務。
-
Horizon 大家都需要一個操作界面吧。
現在覈心服務有了,接下來我們將鏡頭拉近點,看看核心服務內部的組成結構。 Logical Architecture
在 Logical Architecture 中,可以看到每個服務又由若干組件組成。 以 Neutron 爲例,包含
-
Neutron Server、Neutron plugins 和 Neutron agents
-
Network provider
-
消息隊列 Queue
-
數據庫 Neutron Database
在後面 Neutron 章節我們會展開學習這些組件。
這裏想要強調一點: 上面是 Logical Architecture,描述的是 Neutron 服務各個組成部分以及各組件之間的邏輯關係。 而在實際的部署方案上,各個組件可以部署到不同的物理節點上。
OpenStack 本身是一個分佈式系統,不但各個服務可以分佈部署,服務中的組件也可以分佈部署。 這種分佈式特性讓 OpenStack 具備極大的靈活性、伸縮性和高可用性。 當然從另一個角度講,這也使得 OpenStack 比一般系統複雜,學習難度也更大。
後面章節我們會深入學習 Keystone、Glance、Nova、Neutron 和 Cinder 這幾個 OpenStack 最重要最核心的服務。