OpenStack構架知識梳理

散盡浮華發表於2016-08-03

 

OpenStack既是一個社群,也是一個專案和一個開源軟體,提供開放原始碼軟體,建立公共和私有云,它提供了一個部署雲的操作平臺或工具集,其宗旨在於:幫助組織執行為虛擬計算或儲存服務的雲,為公有云、私有云,也為大雲、小云提供可擴充套件的、靈活的雲端計算。
OpenStackd開源專案由社群維護,包括OpenStack計算(代號為Nova),OpenStack物件儲存(代號為Swift),並OpenStack映象服務(代號Glance)的集合。 OpenStack提供了一個操作平臺,或工具包,用於編排雲。

下面列出Openstack的詳細構架圖

Openstack的網路拓撲結構圖

整個OpenStack是由控制節點,計算節點,網路節點,儲存節點四大部分組成。(這四個節點也可以安裝在一臺機器上,單機部署)
其中:
控制節點負責對其餘節點的控制,包含虛擬機器建立,遷移,網路分配,儲存分配等等
計算節點負責虛擬機器執行
網路節點負責對外網路與內網路之間的通訊
儲存節點負責對虛擬機器的額外儲存管理等等

控制節點架構:

控制節點包括以下服務

   管理支援服務

   基礎管理服務

   擴充套件管理服務

   1)管理支援服務包含MySQL與Qpid兩個服務

MySQL:資料庫作為基礎/擴充套件服務產生的資料存放的地方

Qpid:訊息代理(也稱訊息中介軟體)為其他各種服務之間提供了統一的訊息通訊服務

   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的各個元件作用及關係

Openstack發展至今,總共整合了下面幾個元件:

Nova - 計算服務
Neutron-網路服務
Swift - 物件儲存服務
Cinder-塊儲存服務
Glance - 映象服務
Keystone - 認證服務
Horizon - UI服務
Ceilometer-監控服務
Heat-叢集服務
Trove-資料庫服務

元件間的關係圖如下:

重要元件介紹

OpenStack認證服務(Keystone)
Keystone為所有的OpenStack元件提供認證和訪問策略服務,它依賴自身REST(基於Identity API)系統進行工作,主要對(但不限於)Swift、Glance、Nova等進行認證與授權。事實上,授權通過對動作訊息來源者請求的合法性進行鑑定。下圖顯示了身份認證服務流程:

 

Keystone採用兩種授權方式,一種基於使用者名稱/密碼,另一種基於令牌(Token)

除此之外,Keystone提供以下三種服務:
    令牌服務:含有授權使用者的授權資訊
    目錄服務:含有使用者合法操作的可用服務列表
    策略服務:利用Keystone具體指定使用者或群組某些訪問許可權

keystone認證服務注意點:

服務入口:如Nova、Swift和Glance一樣每個OpenStack服務都擁有一個指定的埠和專屬的URL,我們稱其為入口(endpoints)。

區位:在某個資料中心,一個區位具體指定了一處物理位置。在典型的雲架構中,如果不是所有的服務都訪問分散式資料中心或伺服器的話,則也稱其為區位。

使用者:Keystone授權使用者
  PS:代表一個個體,OpenStack以使用者的形式來授權服務給它們。使用者擁有證書(credentials),且可能分配給一個或多個租戶。經過驗證後,會為每個單獨的租戶提供一個特定的令牌。

服務:總體而言,任何通過Keystone進行連線或管理的元件都被稱為服務。舉個例子,我們可以稱Glance為Keystone的服務。

角色:為了維護安全限定,就雲內特定使用者可執行的操作而言,該使用者關聯的角色是非常重要的。
  PS:一個角色是應用於某個租戶的使用許可權集合,以允許某個指定使用者訪問或使用特定操作。角色是使用許可權的邏輯分組,它使得通用的許可權可以簡單地分組並繫結到與某個指定租戶相關的使用者。

租間:租間指的是具有全部服務入口並配有特定成員角色的一個專案。
  PS:一個租間對映到一個Nova的“project-id”,在物件儲存中,一個租間可以有多個容器。根據不同的安裝方式,一個租間可以代表一個客戶、帳號、組織或專案。

OpenStack計算設施----Nova

Nova是OpenStack計算的彈性控制器。OpenStack雲例項生命期所需的各種動作都將由Nova進行處理和支撐,這就意味著Nova以管理平臺的身份登場,負責管理整個雲的計算資源、網路、授權及測度。雖然Nova本身並不提供任何虛擬能力,但是它將使用libvirt API與虛擬機器的宿主機進行互動。Nova通過Web服務API來對外提供處理介面,而且這些介面與Amazon的Web服務介面是相容的。

功能及特點: 
例項生命週期管理
計算資源管理
網路與授權管理
基於REST的API
非同步連續通訊
支援各種宿主:Xen、XenServer/XCP、KVM、UML、VMware vSphere及Hyper-V

Nova彈性雲(OpenStack計算部件)包含以下主要部分:
API Server(nova-api)
訊息佇列(rabbit-mq server)
運算工作站(nova-compute)
網路控制器(nova-network)
卷管理(nova-volume)
排程器(nova-scheduler)

解釋如下:
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的 例項卷,它能夠為一個例項建立、刪除、附加捲,也可以從一個例項中分離卷。卷管理為何如此重要?因為它提供了一種保持例項持續儲存的手段,比如當結束一個 例項後,根分割槽如果是非持續化的,那麼對其的任何改變都將丟失。可是,如果從一個例項中將卷分離出來,或者為這個例項附加上卷的話,即使例項被關閉,資料 仍然儲存其中。這些資料可以通過將卷附加到原例項或其他例項的方式而重新訪問。

因此,為了日後訪問,重要資料務必要寫入卷中。這種應用對於資料伺服器例項的儲存而言,尤為重要。

OpenStack映象伺服器----Glance

OpenStack映象伺服器是一套虛擬機器映象發現、註冊、檢索系統,我們可以將映象儲存到以下任意一種儲存中:
本地檔案系統(預設)
S3直接儲存
S3物件儲存(作為S3訪問的中間渠道)
OpenStack物件儲存等等。
  
功能及特點:
提供映象相關服務。

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

OpenStack儲存設施----Swift

Swift為OpenStack提供一種分散式、持續虛擬物件儲存,它類似於Amazon Web Service的S3簡單儲存服務。Swift具有跨節點百級物件的儲存能力。Swift內建冗餘和失效備援管理,也能夠處理歸檔和媒體流,特別是對大資料(千兆位元組)和大容量(多物件數量)的測度非常高效。

swift功能及特點:  
海量物件儲存
大檔案(物件)儲存
資料冗餘管理
歸檔能力-----處理大資料集
為虛擬機器和雲應用提供資料容器
處理流媒體
物件安全儲存
備份與歸檔
良好的可伸縮性

Swift元件
Swift賬戶
Swift容器
Swift物件
Swift代理
Swift RING
  
Swift代理伺服器  
使用者都是通過Swift-API與代理伺服器進行互動,代理伺服器正是接收外界請求的門衛,它檢測合法的實體位置並路由它們的請求。
此外,代理伺服器也同時處理實體失效而轉移時,故障切換的實體重複路由請求。

Swift物件伺服器
物件伺服器是一種二進位制儲存,它負責處理本地儲存中的物件資料的儲存、檢索和刪除。物件都是檔案系統中存放的典型的二進位制檔案,具有擴充套件檔案屬性的後設資料(xattr)。

注意:xattr格式被Linux中的ext3/4,XFS,Btrfs,JFS和ReiserFS所支援,但是並沒有有效測試證明在XFS,JFS,ReiserFS,Reiser4和ZFS下也同樣能執行良好。不過,XFS被認為是當前最好的選擇。

Swift容器伺服器
容器伺服器將列出一個容器中的所有物件,預設物件列表將儲存為SQLite檔案(譯者注:也可以修改為MySQL,安裝中就是以MySQL為例)。容器伺服器也會統計容器中包含的物件數量及容器的儲存空間耗費。

Swift賬戶伺服器
賬戶伺服器與容器伺服器類似,將列出容器中的物件。

Ring(索引環)

Ring容器記錄著Swift中物理儲存物件的位置資訊,它是真實物理儲存位置的實體名的虛擬對映,類似於查詢及定位不同叢集的實體真實物理位置的索引服務。這裡所謂的實體指賬戶、容器、物件,它們都擁有屬於自己的不同的Rings。

OpenStack管理的Web介面----Horizon

Horizon是一個用以管理、控制OpenStack服務的Web控制皮膚,它可以管理例項、映象、建立密匙對,對例項新增捲、操作Swift容器等。除此之外,使用者還可以在控制皮膚中使用終端(console)或VNC直接訪問例項。

總之,Horizon具有如下一些特點:  
例項管理:建立、終止例項,檢視終端日誌,VNC連線,新增捲等
訪問與安全管理:建立安全群組,管理密匙對,設定浮動IP等
偏好設定:對虛擬硬體模板可以進行不同偏好設定
映象管理:編輯或刪除映象
檢視服務目錄
管理使用者、配額及專案用途
使用者管理:建立使用者等
卷管理:建立卷和快照
物件儲存處理:建立、刪除容器和物件
為專案下載環境變數

相關文章