OpenStack主要組件及其作用


OpenStack是一個開源的雲計算管理平台項目,由幾個主要的組件組合起來完成具體工作。OpenStack支持幾乎所有類型的雲環境,項目目標是提供實施簡單,可大規模擴展、豐富、標准統一的雲計算管理平台。OpenStack通過各種互補的服務提供了基礎設施即服務(IaaS)的解決方案,每個服務提供API以進行集成。

OpenStack雲計算平台,幫助服務商業和企業內部實現類似於Amazon EC2 和 S3 的雲基礎架構服務(Infrastructure as a Service,IaaS)。OpenStack包含兩個主要模塊:Nova和Swift,前者是NASA開發的虛擬服務器部署和業務計算模塊;后者是Rackspace開發的分部署雲存儲模塊,兩者可以一起用,也可以分開單獨用。OpenStack除了有RackStack除了有Rackspace和NASA的大力支持外,還有包括Dell、Citrix、Cisco、Canonical等重量級公司的貢獻和支持,發展速度非常快,有取代另一個業界領先的開源雲平台Eucalyptus的態勢。

 

整個OpenStack是由控制節點,計算節點,網絡節點,存儲節點,四大部分組成。(這四個節點也可以單機部署)

其中:

1.控制節點負責對其余幾點的控制,包含虛擬機創建、遷移、網絡分配、存儲分配等等

控制節點架構:

控制節點包括以下服務

  • 管理支持服務
  • 基礎管理服務
  • 擴展管理服務

1)管理支持服務包含數據庫與消息代理服務

數據庫作為基礎/擴展服務產生的數據存放的地方

消息代理服務(也稱消息中間件)為其他各種服務之間提供了統一的消息通信服務

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:提供對物理資源以及虛擬資源的監控,並記錄這些書庫,讀數據進行分析,在一定條件下出發現貨供應動作

控制節點通常來說只需要一個網絡端口來用於通信和管理各個節點

2.計算節點負責虛擬機運行

計算節點架構

計算節點包含Nova、Neutron、Telemter三個服務

1)基礎服務

Nova:提供虛擬機的創建、運行、遷移、快照等圍繞虛擬機的服務、並提供API與控制節點對接、由控制節點下發任務

Neutron:提供計算節點與網絡節點之間的通信

2)擴展服務

Telmeter:提供計算節點監控代理、將虛擬機的情況反饋的控制節點,是Centimeter的代理服務

計算節點包含最少兩個網絡端口

端口1:與控制節點進行通信,受控制節點統一調配

端口2:與網絡節點,存儲節點進行通信

3.網絡節點負責對外網絡與內網之間的通信

網絡節點架構

網絡節點僅包含Neutron服務

Neutron:負責管理私有網絡與公有網絡的通信,以及管理虛擬機網絡之間通信/拓撲、管理虛擬機之上的防火牆等等

網絡節點包含三個網絡端口

端口1:用於與控制節點進行通信

端口2:用於除了控制節點之外的計算/存儲節點之間的通信

端口3:用於外部的虛擬機與相應的網絡之間通信 

4.存儲節點負責對虛擬機的額外存儲管理等等

存儲節點架構

存儲節點包含Cinder,Swift等服務

Cinder:塊存儲服務,提供相應的塊才能出,簡單來說,就是虛擬出一塊存盤,可以掛載到相應的虛擬機之上,不收文件系統的影響,對虛擬機來說,這個操作像是加了一塊硬盤,可以完成對磁盤的任何操作,包括掛載、卸載、格式化,轉換文件系統等等操作,大多應用於虛擬機空間不足的情況下的空間擴容等。

Swift:對象存儲服務,提供相應的獨享存儲、簡單來說,就是虛擬出一塊磁盤空間,可以在這個空間當中存放文件,也僅僅只能存放文件,不能進行格式化,轉換文件系統,大多應用於雲磁盤/文件

存儲節點包含最少兩個網絡端口

端口1:與控制節點進行通信,接受控制節點任務,受控制節點統一調配

端口2:與計算/網絡節點進行通信,完成控制節點下發的各類任務

 

主要組件介紹


Nova

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

Nova它提供了一種配置計算實例(即虛擬服務器)的方法。Nova支持創建虛擬機、裸機服務器,並且對系統容器的支持有限。Nova在現有linux服務器之上作為一組守護進程運行,已提供該服務。

它需要以下額外的OpenStack服務來實現基本功能:

  • Keystone:這是為OpenStack服務提供身份和身份驗證
  • Glance:這提供了計算鏡像存儲庫。所有計算實例都是從Glance鏡像啟動的。
  • Neutron:他負責提供計算機實例在引導時連接到的虛擬或物理網絡。

Nova主要功能包括:

  • 實例生命周期管理
  • 計算資源的管理
  • 向外提供REST風格的API

這三個組件組件通過消息中間件傳輸通信

Nova包含以下主要部分:

API Server(nova-api)位於表示層。用於接受外部請求

消息隊列服務(Rabbit MQ)

運算工作站(nova-comoute)負責虛擬機的創建和分配

網絡控制器(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 )

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的實例卷,它能夠為一個實例創建、刪除、附加卷、也可以從一個實例中分離卷。卷管理為何如此重要?因為它提供了一中保持實例持續存儲的手段,比如當結束一個實力后,根分區如果是非持續化的,那么對其的任何改變都將丟失。可是。如果從一個實例中將卷分離出來,或者為這個實例附加上的卷的話,及時實例被關閉,數據仍保存其中。這些數據可以通過將卷附加到原實例或其他實例的方式而重新訪問。

因此,為了日后訪問,重要數據必要寫入卷中。這種應用對於數據服務器實例的存儲而言,尤為重要。


Keystone

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

Keystone采用兩種授權方式,一種基於用戶名/密碼,另一種基於令牌(Token)。

除此之外,Keystone提供一下三種服務:

  • 令牌服務:含有授權用戶的授權信息
  • 目錄服務:含有用戶合法操作的可用服務列表
  • 策略服務:利用Keystone具體制定用戶或群組某些訪問權限

Keystion認證服務注意點:

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

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

用戶:Keystone授權使用者

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

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

角色:為了維護安全限定,就雲內特定用戶可執行的操作而言,該用戶關聯的角色是非常重要的。

PS:一個角色是應用於某個租戶的使用權限集合,以允許某個指定用戶訪問或使用特定操作。角色是使用權限的邏輯分組、它使得通過的權限可以簡單的分組並綁定到與某個指定租戶相關的用戶。

租間:租間指的是具有全部服務入庫並配有特定成員角色的一個項目。

PS:一個租間映射到一個Nova的"project-id",在對象存儲中,一個租間可以有多個容器。根據不同的安裝方式,一個租間可以代表一個客戶、賬號、組織或項目。


Glance

OpenStack鏡像服務器是一套虛擬機鏡像發現、注冊、檢索系統,我們可以將鏡像存儲到以下任意一種存儲中:

本地文件系統(默認)

S3直接存儲

S3對象存儲(作為S3訪問的中間渠道)

OpenStack對象存儲等等。

功能及特點:

提供鏡像相關服務。

Glance包含以下構件:

1)Glance-API

主要負責接收相應鏡像管理命令的Resrful請求,分析消息請求信息並分發其所帶的命令(如新增,刪除,更新等)默認綁定端口是9292.

2)Glance-Registry:

主要負責接收響應鏡像元數據命令的Restful請求。分析消息請求信息並分發其所帶的命令(如獲取元數據,更新元數據等)。more綁定的端口號是9191.

Swift

Swift是OpenStack提供一種分布式,持續虛擬對象存儲,它類似於Amazon Web Service的S3簡單存儲服務。Swift具有跨節點百級對象存儲的能力。Swift內建冗余和失效備源管理,也能歐處理歸檔和媒體流,特別是對大數據(千兆字節)和大容量(多對象數量)的測度非常高效。

Swift的功能及特點:

海量對象存儲

大文件(對象)存儲

數據冗余管理

歸檔能力----處理大數據集

為虛擬機和雲應用提供數據容器

處理流媒體

對象安全存儲

備份與歸檔

良好的可伸縮性

系統架構

Swift采用完全對稱、面向資源的分布式存儲架構設計,所有組件都可擴展,避免因單點失效而擴散並影響整個系統運轉;通信方式采用非阻塞式I/O模式,提高了系統吞吐和響應能力。

Swift ç³»ç»æ¶æ

Swift組件包括:

1)代理服務(Proxy Server):對外提供對象服務API,會根據環的信息來查找服務地址並轉發用戶請求至相應的賬戶、容器或者對象服務;由采用無狀態的REST請求協議,可以進行橫向擴展來均衡負載。

2)認證服務(Authentication Server):驗證訪問用戶的身份信息,並獲得一個對象方位令牌(Token),在一定的時間內會一直有效;驗證訪問令牌的有效性並緩存下來直至過期時間。

3)緩存服務(Cache Server):緩存的內容包括對象服務令牌,賬戶和容器的存在信息,但不會緩存對象本身的數據;緩存服務可采用Memcached集群,Swift會使用一致性三列算法來分配緩存地址。

4)賬戶服務(Account Server):提供賬戶元數據和統計信息,並維護所包含容器列表的服務,每個賬戶的信息被存儲在一個SQLite數據庫中。

5)容器服務(Container Server):提供容器元數據和統計信息,並維護所含對象列表的服務,每個容器的信息也存儲在一個SQLlite數據庫中。

6)對象服務(Object Server):提供對象元數據和內容服務,每個對象的內容會以文件的形式存儲在文件系統中,元數據會作為文件屬性來存儲,建議采用支持擴展屬性的XFS文件系統。

7)復制服務(Replicator):會檢測本地分區副本和遠程副本是否一致,具體是通過對比散列文件和高級水印來完成,發現不一致時會采用推式(Push)更新遠程副本,例如對象復制服務會使用遠程文件拷貝工具rsync來同步;另外一個任務是確保被標記刪除的對象從文件系統中移除。

8)更新服務(Updater):當對象由於高負載的原因而無法立即更新時,任務將會被序列化到本地文件系統中進行排隊,以便服務恢復后進行異步更新;例如成功創建對象后容易服務器沒有及時更新對象列表,這個時候容器的跟新操作就會進入排隊中,更新服務會在系統恢復正常后掃描隊列並進行相應的更新處理。

9)審計服務(Auditor):檢查對象,容器和賬戶的完整性,如果發現比特級的錯誤,文件將被隔離,並復制其他的副本以覆蓋本地損壞的副本;其他類型的錯誤會被記錄到日志中。

10)賬戶清理服務(Account Reaper):移除被標記為刪除的賬號,刪除其所包含的所有容器對和對象。


Cinder

Cinder 是OpenStack Block Storage服務,用於為Nova虛擬機,lronic裸機主機,容器等提供卷。

Cinder的一些目標是:

  • 基於組組件體系結構:快速添加新的行為
  • 高度可用:擴展到非常嚴重的工作負載
  • 容錯:隔離進程避免級聯失敗
  • 可恢復的:故障應該易於診斷,調試和糾正
  • 開放標准:成為社區驅動api的參考實現

作為Cinder的最終用戶,我們將使用Cinder創建和管理使用歐冠Horizen用戶界面,命令行工具, 如python-cinderclient,或者直接使用REST API。

Cinder的所有功能都是通過REST API公開,可用於使用Cinder構建更復雜的邏輯或自動化, 這可以直接使用或者通過各種SDK使用。

Cinder服務通過一系列守護進程的交互來工作,這些進程名稱cinder-*永久駐留在主機或機器上,我們可以從單個節點運行所有二進制文件,也可以分布在多個節點上,我們也可以在與其他OpenStack服務想用的節點上運行他們。

Cinder特性:

  • 默認的Cinder服務實現是一種iscsi解決方案,它使用linux的邏輯卷管理器(LVM)。

PS:Cinder服務還提供驅動程序,我們可以使用除基本LVM實現之外的多個供應商的后端存儲設備。也可以使用這些存儲設備代替基本LVM安裝。

  • 網絡模式不會干擾Cinder操作,但您必須為塊存儲設置網絡才能工作。
  • 在某些情況下我們也可以從內部卷中存儲和運行實例。
  • Cinder同時還支持使用NFS存儲。
  • 可以創建多個后端存儲。這些后端存儲為相同的OpenStack Compute配置提供服務,並為每個后端存儲或后端存儲池啟動一個cinder-volume
  • 通過lvm快照備份塊存儲服務磁盤
  • 能夠在支持其卷類型的后端之間前一卷(目前不允許遷移具有快照的卷)
  • volume number weigher調度器。OpenStack允許用戶創建雲盤時根據后端存儲剩余容量和已分配容量來選擇后端。而volume number weigher調度器是根據不同存儲后端的雲盤數量來選擇后端,調度到存儲后端上雲盤數量最少的節點來處理用戶有關雲盤生命周期的請求,這樣做的好處是可以使用不同存儲厚點的I/O負載均衡並提高IO性能。

  • 一致性組;Cinder提供了一致性組支持。添加了支持以創建一致性組的快照。此功能利用存儲級別的一致性技術。它允許在同一時間點采集同一一致性組中的多個卷的快照,以確保數據一致性。可以使用塊存儲命令行執行。

  • DriverFilter和GoodnessWeigher調度器;根據后端特定屬性選擇卷后端。可以幫助確保調度程序根據請求的卷屬性以及各種后端特定屬性選擇最佳后端。

  • 速率限制卷復制帶寬;從映像或現有卷創建新卷時,或者將卷映像上傳到映像服務時,大型數據復制可能會對磁盤和網絡帶寬造成壓力。為了減輕來自實例的數據訪問速度,OpenStack塊存儲支持對卷數據復制帶寬進行速率限制。 

PS:此功能不支持使用遠程文件系統(如NFS)的某些后端

  •  精簡配置中的超額訂閱;Cinder可以使用超額配置比率, 根據虛擬容量選擇卷后端,以進行精簡配置為默認LVM驅動程序提供了參考實現。
  • 鏡像卷緩存;Cinder具有可選的鏡像卷緩存,可以顯著提高從鏡像創卷卷的性能。改進取決於許多因素,主要是配置的后端克隆卷的速度。
  • Volume-backed image;Cinder能夠快速的從保存鏡像數據的雲盤創建新的雲盤,與鏡像數據保存到File和Swift相比,如果后端存儲克隆性能比較好,從Volume-backed image創建新的雲盤速度會更快,如果鏡像屬性是public,那么這個volume-backed image中的數據可以在所有的項目中共享。該功能要求在鏡像服務中增加Cinder的locations信息。為了允許鏡像服務使用Cinder作為后端存儲,需要增加Cinder到允許存儲的配置項中。
  • 通用卷組;自Nweton發布以來,Cinder中提供了通用卷組支持,添加了支持、用於創建組類和組規范、創建卷組以及創建組的快照,可以使用塊存儲命令行執行組操作。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM