天天看點

[網摘學習]關于OpenStack架構

openstack提供開放源碼軟體,建立公共和私有雲。 openstack是一個社群和一個項目,以及開放源碼軟體,以幫助企業運作的虛拟計算或者存儲雲。 openstackd開源項目由社群維護,包括openstack計算(代号為nova),openstack對象存儲(代号為swift),并openstack鏡像服務(代号glance)的集合。 openstack提供了一個操作平台,或工具包,用于編排雲。

openstack目前主要有三個元件:計算,存儲,鏡像。

openstack計算是一個雲控制器,用來啟動一個使用者或一個組的虛拟執行個體,它也用于配置每個執行個體或項目中包含多個執行個體為某個特定項目的聯網。

openstack對象存儲是一個在具有内置備援和容錯的大容量系統中存儲對象的系統。對象存儲有各種應用,如備份或存檔資料,存儲圖形或視訊(流媒體資料傳輸到使用者的浏覽器),儲存二級或三級靜态資料,發展與資料存儲內建新的應用程式,當預測存儲容量困難時存儲資料,創造彈性和靈活的雲存儲web應用程式。

openstack鏡像服務是一個查找和虛拟機圖像檢索系統。它可以配置三種方式:使用openstack對象存儲來存儲圖像;使用亞馬遜s3直接存儲,或使用s3對象存儲作為s3通路中間存儲。

openstack目前包括三個子項目,三個項目相會獨立,可以單獨安裝。

• swift 提供對象存儲。這是大緻類似于rackspace雲檔案(從它派生)或亞馬遜s3。

• glance 提供openstack nova虛拟機鏡像的發現,存儲和檢索。

• nova 根據要求提供虛拟服務。這與rackspace雲伺服器或亞馬遜ec2類似。

将來會出現web 接口的子項目以及隊列服務的子項目。

建構自己的iaas雲環境并将其提供給使用者,需要提供以下幾個特性:

1. 允許應用使用者注冊雲服務、檢視使用情況以及賬單。

2. 允許開發商和開發人員建立和存儲自定義的鏡像。

3. 允許開發商和開發人員啟動、監控、停止虛拟機執行個體。

4. 允許操作人員配置和操作雲基礎設施。

上面隻列出了基本的4個特性,當然還有其他一些特性,将這些特性列在一起,展示如下:

在上面的模型中,假定了與雲互動的四種人員(開發商、開發人員、操作員、使用者),還定義了三層架構(表現、邏輯、資源)和兩個正交領域(內建和管理)。

表現層,元件與使用者互動,接受并顯示使用者的資訊。在這一層,為非開發人員提供了一個web 圖形界面,為開發人員提供了api。在這一層,還存在負載均衡、控制台代理、安全、命名服務。

邏輯層,為我們的雲和控制功能提供情報。這層内包括部業務流程(工作流程複雜的任務),排程(确定作業對資源的映射),政策(配額等),鏡像系統資料庫(例如鏡像的中繼資料),日志(事件和計量)。

內建功能,大多數服務提供商已經有一個客戶的身份和計費系統。任何雲架構将需要與這些系統內建。

管理層,提供一個api來管理雲并提供監控功能。

資源層,因為這是一個計算雲,我們需要實際的計算,網絡和存儲資源,以提供給客戶。這一層提供這些服務,他們可能是伺服器,網絡交換機,網絡附加存儲或其他資源。

openstack 中有兩個守護程序:

接收和調解api調用的wsgi應用程式 (nova-api,glance-api等等)。

進行編排任務的勞工守護程序(nova-compute, nova-network,,nova-schedule)。

openstack中還包含兩個元件:消息隊列服務和資料庫。這兩個元件友善異步編排複雜的任務通過消息傳遞和資訊共享。這個複雜的,但不是太翔實的圖表可以概括為三句話:

 終端使用者通過nova-api 接口與openstack 計算互動。

 openstack計算守護程序通過隊列的交換資訊(行動)和資料庫(資訊)進行api請求。

 openstack glance是一個完全獨立的基礎上設施。

各個元件的介紹:

<code>nova-api</code><code>:</code>是對外的接口。openstack 雲計算的核心控制器(cloudcontroller定義在trunk/nova/api/ec2/cloud.py)。它提供了一個為所有的api查詢(openstack api或ec2 api)的端點,引發多數業務流程的活動(如運作一個執行個體),并實施一些政策(主要是配額檢查)。

<code>nova-schedule</code><code>:</code>根據目前資源使用情況,決定計算節點分布到哪台計算節點上。目前實作很薄,目前已支援插件方式擴充,友善後面可能有采用更複雜算法。

<code>nova-compute</code><code>:</code>接收隊列中的動作,然後執行一系列的系統指令(如啟動kvm執行個體),同時更新資料庫中的狀态。

<code>nova-volume</code><code>:</code>給虛拟機配置設定額外持久化的存儲,管理持久卷到計算執行個體的建立,連接配接和分離。

<code>nova-network</code><code>:</code>網絡管理,給虛拟機配置設定網絡和管理,使外部 pc 可以可直接通路。它接受隊列中的網絡任務,然後執行任務操縱網絡(如設立橋接接口或更改iptables規則)。

<code>sql database</code><code>:</code>存儲雲基礎設施的編譯時和運作時的狀态。這包括可用的執行個體類型,在使用中的執行個體,可用的網絡和項目。

<code>openstack glance:</code>openstack 單獨的一個項目。

openstack的架構示意圖和目前已實作情況,藍色是要 openstack概念上的架構圖,紅色是目前已實作的。

上面的功能子產品對應上面模型的映射:

管理和使用是走兩個通道的。管理必須要經由 nova-api轉發過去。而運作時,直接連接配接計算節點上的虛拟機即可。

部署時,除了dashboard 必須部署在 nova-api server 上以外,所有的其它程序都可以部署在不同的機器上。openstack提供了基于 puppet 的自動部署工具。經過簡單配置,就可以把各個元件部署到不同機器上。

openstack的鏡像建立并沒有納入其職責清單。

你可以使用ubuntu的已有image (https://help.ubuntu.com/community/uec/),或者直接重新自己通過kvm安裝  :

<a href="http://cssoss.wordpress.com/2011/04/27/openstack-beginners-guide-for-ubuntu-11-04-image-management/">http://cssoss.wordpress.com/2011/04/27/openstack-beginners-guide-for-ubuntu-11-04-image-management/</a>

flat network manager, flat dhcp network manager, vlan network manager.

vlan network manager 這種方式适合于共有雲。

在私有雲方面, ip充足,而且為了友善的互聯互通,簡單的flat結構網絡比較适合。

openstack支援 floating ips ,該特性可以友善的通過更改ip來failover(容錯轉移)或者遷移。

轉載請注明出處:http://www.cnblogs.com/haochuang/ 8年it工作經驗,5年測試技術與管理,2年産品與項目管理,曾參與過雲計算\雲存儲\車聯網産品研發工作; 業餘自媒體人,有技術類垂直微信公衆号;如有招聘或求職方面需求,請mail to [email protected] ;或通過 qq:363573922 微網誌:@念槐聚 聯系;