什么是openstack
OpenStack是一個雲平台管理的項目,它不是一個軟件。
這個項目由幾個主要的組件組合起來完成一些具體的工作。
想要了解openstack,第一步我們可以觀察他的概念圖:
針對上圖的翻譯+解釋:
上圖主要回答了openstack為我們提供什么服務,它的功能有哪些,當然概念圖只是為我們提供了一個概念,而正如一開始介紹的那樣——OpenStack是一個雲平台管理的項目,它不是一個軟件,這個項目由幾個主要的組件組合起來完成一些具體的工作。
OpenStack的Grizzly版共有7個不同功能套件,分別是:
運算套件Nova:openstack中的核心,負責計算和實施一些策略,很多組件都要通過他進行調度(Nova中的nova-api負責所以API的調度,初始化大多數部署,執行部分策略)
對象儲存套件Swift:分布式對象存儲,功能類似於hadoop,可是跟hadoop又有很大不同;在openstack中,swift用於存儲創建虛擬機的鏡像文件
區塊儲存套件Cinder:配分塊存儲,給虛擬機增加一個塊存儲設備(有點類似於移動硬盤);
網通套件Quantum:通過API來管理的網絡架構系統;
身分識別套件Keystone:身份認證功能;
鏡像檔管理套件Glance:對鏡像文件進行管理;
儀表板套件Horizon:就是一個UI;
以上是針對Openstack組件的一些通俗解釋,如果大家覺得不夠詳盡,可以查閱一下其他資料:但用過百度一下的朋友就肯定會發現,網上流傳着好幾個不同版本的架構圖,幾種架構圖描述的方式都相差很大,第一眼看上去甚至都不是一個東西,面對這種情況,我們可以假設他們都是對的,然后找出他們之間的聯系,這樣我們也可以加深對openstack的理解;
現在看一下openstack的邏輯架構:
a) 終端用戶通過和nova-api對話來與OpenStack Compute交互。
b) OpenStack Compute守護進程之間通過隊列(行為)和數據庫(信息)來交換信息,以執行API請求。(交換信息的方式我們以后會講)
c) OpenStack Glance基本上是獨立的基礎架構,OpenStack Compute通過Glance API來和它交互。
其各個組件的情況如下:
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)
接着來看看這個邏輯圖在概念圖上的映射:
通過這樣一張圖我們就可以很清楚地了解各個進程的功能,我們同樣可以把各組件映射到它的概念圖上:
也可以用以下的表示方式來表現它的架構:
或者用思維導圖表示:
通過上述的幾個圖,我們基本上可以梳理清Openstack的架構了,通過比較不同表達方式,可以更透徹地理解一個事物,就像學生時代一直強調的一題多解一樣,希望能以這樣的方式加深大家對Openstack架構的理解。