1. 程式人生 > >Openstack基礎架構和各元件的關係

Openstack基礎架構和各元件的關係


Openstack簡介

        OpenStack是一個由美國國家航空航天局(NASA)和Rackspace合作研發併發起的開源專案。其中Rackspace貢獻了Swift, NASA貢獻了Nova專案,這兩個子專案發展到現在的大大小小十多個專案。其宗旨在於:幫助組織執行為虛擬計算或儲存服務的雲,為公有云、私有云,也為大雲、小云提供可擴充套件的、靈活的雲端計算。這些專案之間的關係是鬆耦合。可以獨立的安裝,啟動和停止。
缺點是安裝配置複雜;
優點是擴充套件性好,安全性高,不會存在單點故障。
總結:它是
①Rackspace和NASA共同發起的開源專案。
②是一系列開源軟體專案的組合。
③是基礎設施資源的系統管理平臺。

整個OpenStack是由控制節點計算節點網路節點儲存節點四大部分組成。(這四個節點也可以安裝在一臺機器上,單機部署)
其中:
1.控制節點負責對其餘節點的控制,包含虛擬機器建立,遷移,網路分配,儲存分配等等
2.計算節點負責虛擬機器執行
3.網路節點負責對外網路與內網路之間的通訊
4.儲存節點負責對虛擬機器的額外儲存管理等等
  • 控制節點架構:
控制節點包括以下服務
   ①管理支援服務
   ②基礎管理服務
   ③擴充套件管理服務

 1)管理支援服務包含MySQL與Rabbit MQ兩個服務
MySQL:資料庫作為基礎/擴充套件服務產生的資料存放的地方
Rabbit MQ:訊息代理(也稱訊息中介軟體)為其他各種服務之間提供了統一的訊息通訊服務
 2)基礎管理服務
包含Keystone,Glance,Nova,Neutron,Horizon五個服務
Keystone:認證管理服務,提供了其餘所有元件的認證資訊/令牌的管理,建立,修改等等,使用MySQL作為統一的資料庫
Glance:映象管理服務,提供了對虛擬機器部署的時候所能提供的映象的管理,包含映象的匯入,格式,以及製作相應的模板
Nova:計算管理服務,提供了對計算節點的Nova的管理,使用Nova-API進行通訊
Neutron:網路管理服務,提供了對網路節點的網路拓撲管理,同時提供Neutron在Horizon的管理面板
Horizon:控制檯服務,提供了以Web的形式對所有節點的所有服務的管理,通常把該服務稱為DashBoard
  3)擴充套件管理服務
包含Cinder,Swift,Trove,Heat,Centimeter五個服務
Cinder:提供管理儲存節點的Cinder相關,同時提供Cinder在Horizon中的管理面板
Swift:提供管理儲存節點的Swift相關,同時提供Swift在Horizon中的管理面板
Trove:提供管理資料庫節點的Trove相關,同時提供Trove在Horizon中的管理面板
Heat:提供了基於模板來實現雲環境中資源的初始化,依賴關係處理,部署等基本操作,也可以解決自動收縮,負載均衡等高階特性。
Centimeter:提供對物理資源以及虛擬資源的監控,並記錄這些資料,對該資料進行分析,在一定條件下觸發相應動作
控制節點一般來說只需要一個網路埠用於通訊/管理各個節點
  • 網路節點架構
網路節點僅包含Neutron服務
Neutron:負責管理私有網段公有網段的通訊,以及管理虛擬機器網路之間的通訊/拓撲,管理虛擬機器之上的防火等等
網路節點包含三個網路埠
eth0:用於與控制節點進行通訊
eth1:用於與除了控制節點之外的計算/儲存節點之間的通訊
eth2:用於外部的虛擬機器與相應網路之間的通訊
  • 計算節點架構
計算節點包含Nova,Neutron,Telemeter三個服務
  1)基礎服務
Nova:提供虛擬機器的建立,執行,遷移,快照等各種圍繞虛擬機器的服務,並提供API與控制節點對接,由控制節點下發任務
Neutron:提供計算節點與網路節點之間的通訊服務
  2)擴充套件服務
Telmeter:提供計算節點的監控代理,將虛擬機器的情況反饋給控制節點,是Centimeter的代理服務
計算節點包含最少兩個網路埠
eth0:與控制節點進行通訊,受控制節點統一調配
eth1:與網路節點,儲存節點進行通訊
  • 儲存節點架構
儲存節點包含Cinder,Swift等服務
Cinder:塊儲存服務,提供相應的塊儲存,簡單來說,就是虛擬出一塊磁碟,可以掛載到相應的虛擬機器之上,不受檔案系統等因素影響,對虛擬機器來說,這個操作就像是新加了一塊硬碟,可以完成對磁碟的任何操作,包括掛載,解除安裝,格式化,轉換檔案系統等等操作,大多應用於虛擬機器空間不足的情況下的空間擴容等等
Swift:物件儲存服務,提供相應的物件儲存,簡單來說,就是虛擬出一塊磁碟空間,可以在這個空間當中存放檔案,也僅僅只能存放檔案,不能進行格式化,轉換檔案系統,大多應用於雲磁碟/檔案
儲存節點包含最少兩個網路介面
eth0:與控制節點進行通訊,接受控制節點任務,受控制節點統一調配
eth1:與計算/網路節點進行通訊,完成控制節點下發的各類任務
  • Openstack各元件作用

一、Horizon- (Dashboard)模組

作用:主要負責為Openstack使用者提供UI服務,即管理控制檯。在管理控制檯的操作轉換為後端API的呼叫。面向雲管理員和普通使用者。

二、Keystone-身份服務模組

Keystone採用兩種授權方式,一種基於使用者名稱/密碼,另一種基於令牌(Token)
①幾個基本概念:
使用者:代表可以通過Keystone進行訪問的人或程式,使用者通過認證資訊(如密碼、API keys等)進行驗證。
租戶:它是各個服務中的一些可以訪問的資源的集合
角色:它代表一組使用者可以訪問的資源的許可權
②對訪問請求的控制
訪問的物件:
1.Service:即服務,如Nova、Glance、Swift。服務在KeyStone進行註冊。
2.Endpoint:可以理解它是一個服務暴露出來的訪問點。如果需要一個訪問一個服務則必須知道他的endpoint。
3.Token:訪問資源的令牌,相當於現實中的鑰匙。具有時效性。
一段時間有效可能過一段時間就無效。
③Keystone提供的服務
1.Identity服務驗證了身份驗證憑證。
2.Token服務將會驗證並管理用於驗證請求身份的令牌
3.Catalog服務提供了可用於端點發現的服務登錄檔,各類服務需現在KeyStone上註冊。
4.Policy服務暴露了一個基於規則的身份驗證引擎。覺得哪些使用者有訪問控制的許可權。

三、Nova—計算服務

①Openstack的核心服務。主要功能包括:
1.例項生命週期管理
2.計算資源的管理
3.向外提供REST風格的API
這三個元件通過訊息中介軟體rabbit MQ傳輸通訊
②其中元件介紹
Nova彈性雲(OpenStack計算部件)包含以下主要部分:
API Server(nova-API)位於表示層,用於接受外部請求
訊息佇列(rabbit-mq server)
運算工作站(nova-compute)負責虛擬機器的建立和分配
網路控制器(nova-network)
卷管理(nova-volume)
排程器(nova-scheduler)排程如選擇哪個主機建立VM
解釋如下:
1)API伺服器(nova-api)
API伺服器提供了雲設施與外界互動的介面,它是外界使用者對雲實施管理的唯一通道。通過使用web服務來呼叫各種EC2的API,接著API伺服器便通過訊息佇列把請求送達至雲內目標設施進行處理。作為對EC2-api的替代,使用者也可以使用OpenStack的原生API,我們把它叫做“OpenStack API”。
2)訊息佇列(Rabbit MQ Server)
OpenStack內部在遵循AMQP(高階訊息佇列協議)的基礎上採用訊息佇列進行通訊。Nova對請求應答進行非同步呼叫,當請求接收後便則立即觸發一個回撥。由於使用了非同步通訊,不會有使用者的動作被長置於等待狀態。例如,啟動一個例項或上傳一份映象的過程較為耗時,API呼叫就將等待返回結果而不影響其它操作,在此非同步通訊起到了很大作用,使整個系統變得更加高效。
 3)排程器(nova-scheduler)  
排程器負責把nova-API呼叫送達給目標。排程器以名為“nova-schedule”的守護程序方式執行,並根據排程演算法從可用資源池中恰當地選擇運算伺服器。有很多因素都可以影響排程結果,比如負載、記憶體、子節點的遠近、CPU架構等等。強大的是nova排程器採用的是可插入式架構。
目前nova排程器使用了幾種基本的排程演算法
  隨機化:主機隨機選擇可用節點;
  可用化:與隨機相似,只是隨機選擇的範圍被指定;
  簡單化:應用這種方式,主機選擇負載最小者來執行例項。負載資料可以從別處獲得,如負載均衡伺服器。
4)運算工作站(nova-compute)
運算工作站的主要任務是管理例項的整個生命週期。他們通過訊息佇列接收請求並執行,從而對例項進行各種操作。在典型實際生產環境下,會架設許多運算工作站,根據排程演算法,一個例項可以在可用的任意一臺運算工作站上部署。
 5)網路控制器(nova-network)
網路控制器處理主機的網路配置,例如IP地址分配,配置專案VLAN,設定安全群組以及為計算節點配置網路。
 6)卷工作站(nova-volume) 
卷工作站管理基於LVM的 例項卷,它能夠為一個例項建立、刪除、附加捲,也可以從一個例項中分離卷。卷管理為何如此重要?因為它提供了一種保持例項持續儲存的手段,比如當結束一個 例項後,根分割槽如果是非持續化的,那麼對其的任何改變都將丟失。可是,如果從一個例項中將卷分離出來,或者為這個例項附加上卷的話,即使例項被關閉,資料 仍然儲存其中。這些資料可以通過將卷附加到原例項或其他例項的方式而重新訪問。
因此,為了日後訪問,重要資料務必要寫入卷中。這種應用對於資料伺服器例項的儲存而言,尤為重要。

四、Glance—映象服務

主要功能:
1.提供虛擬機器映象的儲存、查詢和檢索服務。
2.為Nova元件提供服務。
3.依賴於儲存服務和資料庫。

Glance構件:
1)Glance-API:
  主要負責接收響應映象管理命令的Restful請求,分析訊息請求資訊並分發其所帶的命令(如新增,刪除,更新等)。預設繫結埠是9292。
2)Glance-Registry:
  主要負責接收響應映象元資料命令的Restful請求。分析訊息請求資訊並分發其所帶的命令(如獲取元資料,更新元資料等)。預設繫結的埠是9191。

五、Swift—物件儲存服務

主要功能:提供高可用分散式物件儲存服務。
主要特點:無限可擴充套件,並且沒有單點故障。不用擔心儲存的物件意外丟失,因為會有其他的備份。
 

六、Cinder-塊儲存服務

主要功能:快速管理所有的塊儲存裝置,為VM服務。
總結
“物件儲存服務”和“塊儲存服務”區別
塊儲存服務:是本地的,它只能掛靠在VM上使用
物件儲存服務:主要存取分散式物件,在任意地方都可以發起請求去儲存物件。

七、Neutron—網路服務

主要功能:
1.提供雲端計算環境下的虛擬網路功能。

2.給每個租戶獨立的網路環境。

八、Openstack各元件之間的關係

 

九、訪問控制流程

以使用者建立一個新的虛擬機器為例: