OpenStack介紹


OpenStack起源

第一個提出計算機概念走向落地的廠商是亞馬遜,因為當時的亞馬遜有極大的計算力被浪費。
service,這種早期的“遠程控制”方式是最早的一種雲計算模式
當時,美國航天局和亞馬遜合作才將OpenStack的初級形態構建完成
在2010年雙方共同分開源OpenStack項目

雲計算

概念
雲計算管理的使網絡資源,存儲資源,服務器資源等物理硬件資源,可以使客戶在任何時間,任意地點,通過網絡獲取所需要的資源或者服務,並且按需分配。
雲計算

  • laas:基礎設施服務:用戶通過網絡獲取,虛擬機器,網絡,然后用戶根據自己的需求操作獲取的資源
  • PaaS:平台即服務:將軟件研發作為平台的一種服務,就是將下面的服務部署號,然后只需要跑你的代碼就可以
  • SaaS:軟件即服務:將軟件作為一種服務通過網絡提供給用戶

OpenStack的優點

  • 開放的構架:OpenStack的開放構架,額能夠減少廠商鎖定,減低風險
  • 社區的力量:有全球的開發者的支持
  • 與公有雲互補:私有雲與公有雲混合為混合雲
  • 靈活可擴展:OpenStack一個高擴展性系統

架構圖

各組邏輯關系圖

OpenStack新建雲主機流程圖

全局介紹

  • OpenStack包括相互獨立的服務組件。所有服務均可以通過一個公共的身份服務網進行身份驗證,所以API即使每個服務內部和外部的交界處
  • 每個服務又由若干個組件組成,包括多個進程。每個服務至少有一個API進程。
  • 服務內各個進程之間是由AMQP消息代理,服務狀態存儲在數據庫中
  • 消息隊列:常用的三種類型:rabbitmp,rocketmq,kafka,是兩個獨立的服務之間消息傳遞的載體,解決消息在傳輸過程中請求的高並發問題,以容器的方式,存儲消息列表

各個組件服務作用

  • dashboard horizon(UI界面) 提供了一個基於web的自服務門戶,與OpenStack底層服務交互。
  • compute Nova(計算):在OpenStack環境匯總計算實例的生命周期管理
  • neutron(網絡&地址管理):負責為其他的OpenStack服務提供網絡連接
  • keystone(身份服務):為其他的OpenStack服務提供認證和授權服務,為所有的OpenStack服務提供一個端點目錄
  • swift(對象存儲):通過一個RESTful(標准的api接口), 基於http的應用程序接口存儲和任意檢索的非結構化數據對象。擁有高容錯機制,基於數據復制和可擴展架構。RESTFUL HTTP API來保存和訪問任意非結構化數據
  • cinder(塊存儲):提供持久化塊存儲,即為雲主機提供附加雲盤。
  • Glance(鏡像服務):存儲和檢索虛擬機磁盤鏡像,OpenStack計算會在實例部署時使用此服務

控制節點包括支持服務,基礎服務,擴展服務網和網絡接口服務,外部的裸金屬服務網提供物理資源支撐

  • 支持服務:包括數據庫支持和通信支持,為整個節點提供數據存儲服務和服務之間消息隊列的通信服務
  • 基礎服務:為虛擬機提供基礎的鏡像,網絡,計算資源;

基礎管理服務:

  • keystone:認證管理服務,提供了其余所有組件的認證信息/令牌的管理,創建,修改等等,使用MySQL作為統一的數據庫
  • Glance:鏡像管理服務,提供了對虛擬機部署的時候所能提供的鏡像的管理,包含鏡像的導入,格式,以及知錯相應的模板

虛擬機啟動過程如下:

界面或命令行通過RESTful API向keystone獲取認證信息。

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

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

nova-api接受請求后向keystone發送認證請求,查看token是否為有效用戶和token。

keystone驗證token是否有效,如有效則返回有效的認證和對應的角色(注:有些操作需要有角色權限才能操作)。

通過認證后nova-api和數據庫通訊。

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

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

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

nova-scheduler通過查詢nova數據庫中計算資源的情況,並通過調度算法計算符合虛擬機創建需要的主機。

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

nova-scheduler通過rpc.cast向nova-compute發送對應的創建虛擬機請求的消息。

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

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

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

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

nova-conductor從數據庫中獲得虛擬機對應信息。

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

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

nova-compute通過keystone的RESTfull API拿到認證的token,並通過HTTP請求glance-api獲取創建虛擬機所需要鏡像。

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

token驗證通過,nova-compute獲得虛擬機鏡像信息(URL)。

nova-compute通過keystone的RESTfull API拿到認證k的token,並通過HTTP請求neutron-server獲取創建虛擬機所需要的網絡信息。

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

token驗證通過,nova-compute獲得虛擬機網絡信息。

nova-compute通過keystone的RESTfull API拿到認證的token,並通過HTTP請求cinder-api獲取創建虛擬機所需要的持久化存儲信息。

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

token驗證通過,nova-compute獲得虛擬機持久化存儲信息。

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


免責聲明!

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



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