服務 | 項目名稱 | 描述 |
---|---|---|
Compute (計算服務) | Nove | 負責實例生命週期的管理,計算資源的單位。對Hypervisor進行屏蔽,支持多種虛擬化技術(紅帽默認爲KVM),支持橫向擴展 |
Network(網絡服務) | Neutron | 負責虛擬網絡的管理,爲實例建立網絡的拓撲結構。是面向租戶的網絡管理,能夠本身定義本身的網絡,各個租戶之間互不影響 |
Identity(身份認證服務) | Keystone | 相似於LDAP服務,對用戶、租戶和角色、服務進行認證與受權,且支持多認證機制 |
Dashboard(控制面板服務) | Horizon | 提供一個WEB管理界面,與OpenStack底層服務進行交互 |
Image Service (鏡像服務) | Glance | 提供虛擬機鏡像模板的註冊和管理,將作好的操做系統拷貝爲鏡像模板,在建立虛擬機時直接使用,可支持多格式的鏡像 |
Block Storage(塊存儲服務) | Cinder | 負責爲運行實例提供持久的快存儲設備,可進行方便的擴展,按需付費,支持多種後端存儲 |
Object Storage(對象存儲服務) | Swift | 爲OpenStack提供基礎雲的彈性存儲,支持集羣無單點故障 |
Telemetry(計量服務) | Ceilometer | 用於度量、監控和控制數據資源的集中來源, |
Keystone爲全部的OpenStack組件提供認證和訪問策略服務,它依賴自身REST(基於Identity API)系統進行工做,主要對(但不限於)Swift、Glance、Nova等進行認證與受權。事實上,受權經過對動做消息來源者請求的合法性進行鑑定。下圖顯示了身份認證服務流程圖:web
Keystone採用兩種受權方式,一種基於用戶名/密碼,另外一種基於令牌(Token)。算法
除此以外,Keystone提供如下三種服務:
令牌服務:含有受權用戶的受權信息
目錄服務:含有用戶合法操做的可用服務列表
策略服務:利用Keystone具體指定用戶或羣組某些訪問權限數據庫
服務:整體而言,任何經過Keystone進行鏈接或管理的組件都被稱爲服務。舉個例子,咱們能夠稱Glance爲Keystone的服務。swift
角色:爲了維護安全限定,就雲內特定用戶可執行的操做而言,該用戶關聯的角色是很是重要的。
PS:一個角色是應用於某個租戶的使用權限集合,以容許某個指定用戶訪問或使用特定操做。角色是使用權限的邏輯分組,它使得通用的權限能夠簡單地分組並綁定到與某個指定租戶相關的用戶。後端
Nova是OpenStack計算的彈性控制器。OpenStack雲實例生命期所需的各類動做都將由Nova進行處理和支撐,這就意味着Nova以管理平臺的身份登場,負責管理整個雲的計算資源、網絡、受權及測度。雖然Nova自己並不提供任何虛擬能力,可是它將使用libvirt API與虛擬機的宿主機進行交互。Nova經過Web服務API來對外提供處理接口,並且這些接口與Amazon的Web服務接口是兼容的。api
API服務器提供了雲設施與外界交互的接口,它是外界用戶對雲實施管理的惟一通道。經過使用web服務來調用各類EC2的API,接着API服務器便經過消息隊列把請求送達至雲內目標設施進行處理。做爲對EC2-api的替代,用戶也可使用OpenStack的原生API,咱們把它叫作「OpenStack API」。安全
OpenStack內部在遵循AMQP(高級消息隊列協議)的基礎上採用消息隊列進行通訊。Nova對請求應答進行異步調用,當請求接收後便則當即觸發一個回調。因爲使用了異步通訊,不會有用戶的動做被長置於等待狀態。例如,啓動一個實例或上傳一份鏡像的過程較爲耗時,API調用就將等待返回結果而不影響其它操做,在此異步通訊起到了很大做用,使整個系統變得更加高效。服務器
調度器負責把nova-API調用送達給目標。調度器以名爲「nova-schedule」的守護進程方式運行,並根據調度算法從可用資源池中恰當地選擇運算服務器。有不少因素均可以影響調度結果,好比負載、內存、子節點的遠近、CPU架構等等。強大的是nova調度器採用的是可插入式架構。
目前nova調度器使用了幾種基本的調度算法:網絡
運算工做站的主要任務是管理實例的整個生命週期。他們經過消息隊列接收請求並執行,從而對實例進行各類操做。在典型實際生產環境下,會架設許多運算工做站,根據調度算法,一個實例能夠在可用的任意一臺運算工做站上部署。架構
網絡控制器處理主機的網絡配置,例如IP地址分配,配置項目VLAN,設定安全羣組以及爲計算節點配置網絡。
卷工做站管理基於LVM的 實例卷,它可以爲一個實例建立、刪除、附加捲,也能夠從一個實例中分離卷。卷管理爲什麼如此重要?由於它提供了一種保持實例持續存儲的手段,好比當結束一個 實例後,根分區若是是非持續化的,那麼對其的任何改變都將丟失。但是,若是從一個實例中將卷分離出來,或者爲這個實例附加上卷的話,即便實例被關閉,數據 仍然保存其中。這些數據能夠經過將卷附加到原實例或其餘實例的方式而從新訪問。
所以,爲了往後訪問,重要數據務必要寫入卷中。這種應用對於數據服務器實例的存儲而言,尤其重要
OpenStack鏡像服務器是一套虛擬機鏡像發現、註冊、檢索系統,咱們能夠將鏡像存儲到如下任意一種存儲中:
Swift爲OpenStack提供一種分佈式、持續虛擬對象存儲,它相似於Amazon Web Service的S3簡單存儲服務。Swift具備跨節點百級對象的存儲能力。Swift內建冗餘和失效備援管理,也可以處理歸檔和媒體流,特別是對大數據(千兆字節)和大容量(多對象數量)的測度很是高效。
用戶都是經過Swift-API與代理服務器進行交互,代理服務器正是接收外界請求的門衛,它檢測合法的實體位置並路由它們的請求。
此外,代理服務器也同時處理實體失效而轉移時,故障切換的實體重複路由請求。
對象服務器是一種二進制存儲,它負責處理本地存儲中的對象數據的存儲、檢索和刪除。對象都是文件系統中存放的典型的二進制文件,具備擴展文件屬性的元數據(xattr)。
注意:xattr格式被Linux中的ext3/4,XFS,Btrfs,JFS和ReiserFS所支持,可是並無有效測試證實在XFS,JFS,ReiserFS,Reiser4和ZFS下也一樣能運行良好。不過,XFS被認爲是當前最好的選擇。
容器服務器將列出一個容器中的全部對象,默認對象列表將存儲爲SQLite文件(譯者注:也能夠修改成MySQL,安裝中就是以MySQL爲例)。容器服務器也會統計容器中包含的對象數量及容器的存儲空間耗費。
帳戶服務器與容器服務器相似,將列出容器中的對象。
Ring容器記錄着Swift中物理存儲對象的位置信息,它是真實物理存儲位置的實體名的虛擬映射,相似於查找及定位不一樣集羣的實體真實物理位置的索引服務。這裏所謂的實體指帳戶、容器、對象,它們都擁有屬於本身的不一樣的Rings。
Horizon是一個用以管理、控制OpenStack服務的Web控制面板,它能夠管理實例、鏡像、建立密匙對,對實例添加捲、操做Swift容器等。除此以外,用戶還能夠在控制面板中使用終端(console)或VNC直接訪問實例。
整個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:與計算/網絡節點進行通訊,完成控制節點下發的各種任務