終於正式進入OpenStack 部分了。
今天開始正式學習OpenStack,OpenStack 從2010年到今天,已經第10個年頭了 。每半年發布一個版本,版本以字母順序命名,現在已經到第20個版本了(字母 T),OpenStack 最初只有兩個模塊(服務),現在模塊數量已經超過40+ ,每個模塊作為獨立的子項目開發。
版本列表參考下面 Release Series (
https://releases.openstack.org/index.html#release-series)
模塊列表參考下面 Service Projects (
https://releases.openstack.org/stein/index.html#service-projects)
面對如此龐大的陣容,作為初學者我們如何起步呢?這里我們通過實際操作由淺入深的學習和實踐OpenStack,最終具備實施OpenStack的能力。
我們會把學習的重點放在OpenStack最核心的地方,見下圖

作為 IaaS 層的雲操作系統,OpenStack 為虛機提供並管理三大類資源:計算、存儲、網絡
這三個就是核心,所以我們學習的重點就是:搞清楚 OpenStack 是如何對計算、網絡和存儲資源進行管理的。在 40+ 模塊中,管理這三類資源的模塊其實並不多,這幾個模塊就是我們的學習重點。
要達到這個目的,我們自然需要研究 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
提供OpenStack監控和計量服務,為報警、統計或者計費提供數據。


Horizon
為OpenStack用戶提供一個Web的自服務portal。


在上面這些服務器中,哪些是OpenStack的核心服務呢?核心服務就是如果沒有他,OpenStack就跑不起來。所以
1、Nova 管理計算資源,是核心服務
2、Neutron 管理網絡資源,是核心服務
3、Glance 為VM提供OS鏡像,屬於存儲范疇,是核心服務
4、Cinder 提供塊存儲,VM怎么也得需要數據盤吧,是核心服務
5、Swift 提供對象存儲,不是必須的,是可選服務
6、Keystone 認證服務,沒他OpenStack轉不起來,是核心服務
7、Ceilometer 監控服務,不是必須的,是可選服務
8、Horizon 非常需要的一個操作界面
現在核心服務有了,我們把鏡頭拉近,看看核心服務的內部結構:Logical Architecture

在 Logical Architecture 中,可以看到每個服務又有若干個組件組成。以 Neutron為例,包含

1、Neutron Server、Neutron Plugins 和 Neutron Agents
2、Network Provider
3、Message Queue
4、Neutron Database
在后面的章節中我們會展開學習這些組件。
這里想要強調一點:上面是 Logical Architecture ,描述的是 Neutron 服務各個組成部分以及個組件之間的邏輯關系。而在實際的部署方案上,各個組件可以部署到不同的物理節點上。
OpenStack 本身是一個分布式系統,不但各個服務可以分布式部署,服務中的組件也可以分布式部署。這種分布式特性讓OpenStack 具備極大的靈活性、伸縮性和高可用性。當然從另一個角度將,這也使得OpenStack比一般系統復雜,學習難度也大。
后面我們會深入學習各個核心
Release Series( https://releases.openstack.org/index.html)¶
OpenStack is developed and released around 6-month cycles. After the initial release, additional stable point releases will be released in each release series. You can find the detail of the various release series here on their series page. Subscribe to the
combined release calendar for continual updates.
Series
|
Status
|
Initial Release Date
|
Next Phase
|
EOL Date
|
2019-10-16 estimated
(schedule)
|
Maintained estimated 2019-10-16
|
|
||
2019-04-10
|
Extended Maintenanceestimated 2020-10-10
|
|
||
2018-08-30
|
Extended Maintenanceestimated 2020-02-24
|
|
||
2018-02-28
|
Extended Maintenanceestimated 2019-08-25
|
|
||
2017-08-30
|
Extended Maintenanceestimated 2019-03-03
|
|
||
2017-02-22
|
Unmaintainedestimated TBD
|
|
||
2016-10-06
|
|
2017-10-25
|
||
2016-04-07
|
|
2017-04-10
|
||
2015-10-15
|
|
2016-11-17
|
||
2015-04-30
|
|
2016-05-02
|
||
2014-10-16
|
|
2015-12-07
|
||
2014-04-17
|
|
2015-07-02
|
||
2013-10-17
|
|
2014-09-30
|
||
2013-04-04
|
|
2014-03-29
|
||
2012-09-27
|
|
2013-11-19
|
||
2012-04-05
|
|
2013-05-06
|
||
2011-09-22
|
|
2013-05-06
|
||
2011-04-15
|
|
|
||
2011-02-03
|
|
|
||
2010-10-21
|
|
|
Note: The schedule of
Maintenance phases changed during Ocata. The
old phases were used until Newton.
Service Projects( https://releases.openstack.org/stein/index.html)¶
Deliverable
|
Earliest Version
|
Most Recent Version
|
Stable Status
|
Notes
|
8.0.0
|
8.0.0
|
|||
8.0.0
|
8.0.0
|
|
||
3.0.0
|
3.0.0
|
|||
12.0.0
|
12.0.0
|
|||
14.0.0
|
14.0.0
|
|||
9.0.0
|
9.0.0
|
|||
9.0.0
|
9.0.0
|
|||
2.0.0
|
2.0.0
|
|||
8.0.0
|
8.0.0
|
|||
8.0.0
|
8.0.0
|
|
||
7.0.0
|
7.1.0
|
|||
18.0.0
|
18.0.0
|
|||
12.0.0
|
12.0.0
|
|||
15.0.0
|
15.0.0
|
|||
12.0.0
|
12.1.0
|
|||
1.2.0
|
1.3.0
|
|
||
15.0.0
|
15.0.0
|
|||
8.0.0
|
8.0.0
|
|||
8.0.0
|
8.0.0
|
|||
7.0.0
|
7.0.0
|
|||
8.0.0
|
8.0.0
|
|||
2.8.0
|
3.0.0
|
|||
0.2.0
|
0.3.0
|
|||
2.8.0
|
2.9.0
|
|||
7.0.0
|
7.0.0
|
|||
14.0.0
|
14.0.1
|
|||
19.0.0
|
19.0.0
|
|||
4.0.0
|
4.0.0
|
|||
6.0.0
|
6.0.0
|
|||
1.0.0
|
1.0.0
|
|||
2.0.0
|
2.0.0
|
|||
10.0.0
|
10.0.0
|
|||
6.0.0
|
6.0.0
|
|||
7.0.0
|
7.0.0
|
|||
6.0.0
|
6.0.0
|
|||
3.0.0
|
3.0.0
|
|
||
2.20.0
|
2.21.0
|
|||
1.0.0
|
1.0.0
|
|||
6.0.0
|
6.0.0
|
|||
11.0.0
|
11.0.0
|
|
||
4.0.0
|
4.3.1
|
|||
2.0.0
|
2.0.0
|
|||
8.0.0
|
8.0.0
|
|
||
3.0.0
|
3.0.0
|