openstack各組件詳解和通訊流程

1、openstack由來

openstack最先由美國國家航空航天局NASA研發的Nova和Rackspace研發的swift組成,後來以apache許可證受權,旨在爲公共及私有云平臺建設,openstack主要用來爲企業內部實現相似於Amazon EC2和S3的雲基礎架構服務(Iaas),每6個月更新一次,基本與ubuntu同步,命名是以A-Z做爲首字母來的web

2、openstack項目與組件(服務名是項目名的別名)

一、核心項目3個

(1)控制檯

服務名:Dashboard算法

項目名:Horizon數據庫

功能:web方式管理雲平臺,建雲主機,分配網絡,配安全組,加雲盤apache

(2)計算

服務名:計算ubuntu

項目名:Nova(能夠支持各類各樣的虛擬化技術,vmware\kvm等)swift

功能:負責響應虛擬機建立請求、調度、銷燬雲主機。api

(3)網絡

服務名:網絡安全

項目名:Neutron(實現網絡虛擬化)服務器

功能:實現SDN(軟件定義網絡),提供一整套API,用戶能夠基於該API實現本身定義專屬網絡,不一樣廠商能夠基於此API提供本身的產品實現restful

二、共享服務項目3個

(1)認證服務

服務名:認證服務

項目名:Keystone

功能:爲訪問openstack各組件提供認證和受權功能,認證經過後,提供一個服務列表(存放你有權訪問的服務),能夠經過該列表訪問各個組件。

(2)鏡像服務

服務名:鏡像服務

項目名:Glance

功能:爲雲主機安裝操做系統提供不一樣的鏡像選擇

(3)計費服務

服務名:計費服務

項目名:Ceilometer(監控)

功能:收集雲平臺資源使用數據,用來計費或者性能監控

三、存儲項目2個(附加項目)

如今主流的存儲主要是三種:文件存儲、塊存儲、對象存儲

文件存儲

至關於一個大的文件夾,典型是FTP\NFS服務器,以文件做爲傳輸協議。Ext三、Ext四、NTFS是本地文件存儲,NFS、CIFS是網絡文件存儲(NAS存儲);最明顯的特徵是支持POSIX的文件訪問接口:open、read、write、seek、close等;優勢:便於擴展&共享;缺點:讀寫速度慢

塊存儲

在物理級別的最小讀寫單位是扇區。塊存儲能夠認爲是裸盤,最多包一層邏輯卷(LVM);常見的DAS、FC-SAN、IP-SAN都是塊存儲,塊存儲最明顯的特徵就是不能被操做系統直接讀寫,須要格式化爲指定的文件系統(Ext三、Ext四、NTFS)後才能夠訪問。優勢:讀寫快(帶寬&IOPS);缺點:由於太底層了,不利於擴展

對象存儲

將元數據獨立了出來,控制節點叫元數據服務器(服務器+對象存儲管理軟件),裏面主要負責存儲對象的屬性(主要是對象的數據被打散存放到了那幾臺分佈式服務器中的信息),而其餘負責存儲數據的分佈式服務器叫作OSD,主要負責存儲文件的數據部分

當用戶訪問對象,會先訪問元數據服務器,元數據服務器只負責反饋對象存儲在哪些OSD,假設反饋文件A存儲在B、C、D三臺OSD,那麼用戶就會再次直接訪問3臺OSD服務器去讀取數據

基於rest api的方式訪問,說穿了就是url地址

對象存儲和分佈式文件系統的表面區別:對象存儲支持的訪問接口基本都是restful接口、而分佈式文件系統提供的POSIX兼容的文件操做接口

(1)對象存儲

服務名:對象存儲

項目名:Swift

功能:REST風格的接口和扁平的數據組織結構。RESTFUL HTTP API來保存和訪問任意非結構化數據,ring環的方式實現數據自動複製和高度能夠擴展架構,保證數據的高度容錯和可靠性

(2)塊存儲

服務名:塊存儲

項目名:Cinder

功能:提供持久化塊存儲,即爲雲主機提供附加雲盤

四、高層服務項目1個

(1)編排服務

服務名:編排服務

項目名:Heat

功能:自動化部署應用,自動化管理應用的整個生命週期.主要用於Paas

3、openstack各組件詳解及運行流程

一、各組件邏輯關係圖

二、openstack新建雲主機流程圖

三、虛擬機啓動過程

  1. 界面或命令行經過RESTful API向keystone獲取認證信息

  2. keystone經過用戶請求認證信息,並生成auth-token返回給對應的認證請求

  3. 界面或命令行經過RESTful API向nova-api發送一個boot instance的請求(攜帶auth-token)

  4. nova-api接受請求後向keystone發送認證請求,查看token是否爲有效用戶和token

  5. keystone驗證token是否有效,若有效則返回有效的認證和對應的角色(注:有些操做須要有角色權限才能操做)

  6. 經過認證後nova-api和數據庫通信

  7. 初始化新建虛擬機的數據庫記錄

  8. nova-api經過rpc.call向nova-scheduler請求是否有建立虛擬機的資源(Host ID)

  9. nova-scheduler進程偵聽消息隊列,獲取nova-api的請求

  10. nova-scheduler經過查詢nova數據庫中計算資源的狀況,並經過調度算法計算符合虛擬機建立須要的主機

  11. 對於有符合虛擬機建立的主機,nova-scheduler更新數據庫中虛擬機對應的物理主機信息

  12. nova-scheduler經過rpc.cast向nova-compute發送對應的建立虛擬機請求的消息

  13. nova-compute會從對應的消息隊列中獲取建立虛擬機請求的消息

  14. nova-compute經過rpc.call向nova-conductor請求獲取虛擬機消息(Flavor)

  15. nova-conductor從消息隊隊列中拿到nova-compute請求消息

  16. nova-conductor根據消息查詢虛擬機對應的信息

  17. nova-conductor從數據庫中得到虛擬機對應信息

  18. nova-conductor把虛擬機信息經過消息的方式發送到消息隊列中

  19. nova-compute從對應的消息隊列中獲取虛擬機信息消息

  20. nova-compute經過keystone的RESTfull API拿到認證的token,並經過HTTP請求glance-api獲取建立虛擬機所須要鏡像

  21. glance-api向keystone認證token是否有效,並返回驗證結果

  22. token驗證經過,nova-compute得到虛擬機鏡像信息(URL)

  23. nova-compute經過keystone的RESTfull API拿到認證k的token,並經過HTTP請求neutron-server獲取建立虛擬機所須要的網絡信息

  24. neutron-server向keystone認證token是否有效,並返回驗證結果

  25. token驗證經過,nova-compute得到虛擬機網絡信息

  26. nova-compute經過keystone的RESTfull API拿到認證的token,並經過HTTP請求cinder-api獲取建立虛擬機所須要的持久化存儲信息

  27. cinder-api向keystone認證token是否有效,並返回驗證結果

  28. token驗證經過,nova-compute得到虛擬機持久化存儲信息

  29. nova-compute根據instance的信息調用配置的虛擬化驅動來建立虛擬機

相關文章
相關標籤/搜索