OpenStack是一個雲平臺管理的項目,它不是一個軟件。這個項目由幾個主要的組件組合起來完成一些具體的工做。想要了解openstack,第一步咱們能夠觀察他的概念圖:前端
針對上圖的翻譯+解釋:python
上圖主要回答了openstack爲咱們提供什麼服務,它的功能有哪些,固然概念圖只是爲咱們提供了一個概念,而正如一開始介紹的那樣——OpenStack是一個雲平臺管理的項目,它不是一個軟件,這個項目由幾個主要的組件組合起來完成一些具體的工做。搞清楚由哪些組件完成這些功能,咱們須要藉助下圖2,下圖爲Grizzly的架構圖,簡述了套件之間是如何運做的:web
OpenStack的Grizzly版共有7個不一樣功能套件,分別是:
運算套件Nova:openstack中的核心,負責計算和實施一些策略,不少組件都要經過他進行調度(Nova中的nova-api負責因此API的調度,初始化大多數部署,執行部分策略)
對象儲存套件Swift:分佈式對象存儲,功能相似於hadoop,但是跟hadoop又有很大不一樣;在openstack中,swift用於存儲建立虛擬機的鏡像文件
區塊儲存套件Cinder:配分塊存儲,給虛擬機增長一個塊存儲設備(有點相似於移動硬盤);
網通套件Quantum:經過API來管理的網絡架構系統;
身分識別套件Keystone:身份認證功能;
鏡像檔管理套件Glance:對鏡像文件進行管理;
儀表板套件Horizon:就是一個UI;sql
以上是針對Openstack組件的一些通俗解釋,若是你們以爲不夠詳盡,能夠查閱一下其餘資料:但用過百度一下的朋友就確定會發現,網上流傳着好幾個不一樣版本的架構圖,幾種架構圖描述的方式都相差很大,第一眼看上去甚至都不是一個東西,面對這種狀況,咱們能夠假設他們都是對的,而後找出他們之間的聯繫,這樣咱們也能夠加深對openstack的理解;
如今看一下openstack的邏輯架構:數據庫
a) 終端用戶經過和nova-api對話來與OpenStack Compute交互。
b) OpenStack Compute守護進程之間經過隊列(行爲)和數據庫(信息)來交換信息,以執行API請求。(交換信息的方式咱們之後會講)
c) OpenStack Glance基本上是獨立的基礎架構,OpenStack Compute經過Glance API來和它交互。swift
其各個組件的狀況以下:
a) nova-api守護進程是OpenStack Compute的中心。它爲全部API查詢(OpenStack API 或 EC2 API)提供端點,初始化絕大多數部署活動(好比運行實例),以及實施一些策略(絕大多數的配額檢查)。
所以不少相對於openstack獨立的基礎架構是跟nova-api交換信息的,而不是向其餘進程那樣使用隊列和數據庫;
b) nova-compute進程主要是一個建立和終止虛擬機實例的Worker守護進程。基本原理:從隊列中接收行爲,而後在更新數據庫的狀態時,執行一系列的系統命令執行他們。
c) nova-volume管理映射到計算機實例的卷的建立、附加和取消。這些卷能夠來自不少提供商,好比,ISCSI和AoE。
d) Nova-network worker守護進程相似於nova-compute和nova-volume。它從隊列中接收網絡任務,而後執行任務以操控網絡,好比建立bridging interfaces或改變iptables rules。
e) Queue提供中心hub,爲守護進程傳遞消息。當前用RabbitMQ實現。可是理論上能是python ampqlib支持的任何AMPQ消息隊列。
f) SQL database存儲雲基礎架構中的絕大多數編譯時和運行時狀態。當前普遍使用的數據庫是sqlite3(僅適合測試和開發工做),MySQL和PostgreSQL。
g) OpenStack Glance,是一個單獨的項目,它是一個compute架構中可選的部分,分爲三個部分:
glance-api:glance-api接受API調用;
glance-registry: glance-registry負責存儲和檢索鏡像的元數據,實際的Image Blob存儲在Image Store中;
the image store:Image Store能夠是多種不一樣的Object Store,包括OpenStack Object Storage (Swift);
h) 最後,user dashboard是另外一個可選的項目。OpenStack Dashboard提供了一個OpenStack Compute界面來給應用開發者和devops staff相似API的功能。當前它是做爲Django web Application來實現的。固然,也有其餘可用的Web前端。(說白了就是個UI)api
接着來看看這個邏輯圖在概念圖上的映射:網絡
經過這樣一張圖咱們就能夠很清楚地瞭解各個進程的功能,咱們一樣能夠把各組件映射到它的概念圖上:架構
也能夠用如下的表示方式來表現它的架構:分佈式
或者用思惟導圖表示:
經過上述的幾個圖,咱們基本上能夠梳理清Openstack的架構了,經過比較不一樣表達方式,能夠更透徹地理解一個事物,就像學生時代一直強調的一題多解同樣,但願能以這樣的方式加深你們對Openstack架構的理解。