What is OpenStack? css
OpenStack提供開放源碼軟件,創建公共和私有云。OpenStack是一個社區和一個項目,以及開放源碼軟件,以幫助企業運行的虛擬計算或者存儲雲。OpenStackd開源項目由社區維護,包括OpenStack計算(代號爲Nova),OpenStack對象存儲(代號爲SWIFT),並OpenStack鏡像服務(代號Glance)的集合。OpenStack提供了一個操做平臺,或工具包,用於編排雲。 web
Components of OpenStack 算法
OpenStack當前主要有三個組件:計算,存儲,鏡像。
OpenStack計算是一個雲控制器,用來啓動一個用戶或一個組的虛擬實例,它也用於配置每一個實例或項目中包含多個實例爲某個特定項目的聯網。
OpenStack對象存儲是一個在具備內置冗餘和容錯的大容量系統中存儲對象的系統。對象存儲有各類應用,如備份或存檔數據,存儲圖形或視頻(流媒體數據傳輸到用戶的瀏覽器),儲存二級或三級靜態數據,發展與數據存儲集成新的應用程序,當預測存儲容量困難時存儲數據,創造彈性和靈活的雲存儲Web應用程序。
OpenStack鏡像服務是一個查找和虛擬機圖像檢索系統。它能夠配置三種方式:使用OpenStack對象存儲來存儲圖像;使用亞馬遜S3直接存儲,或使用S3對象存儲做爲S3訪問中間存儲。 數據庫
OpenStack Project Architecture ubuntu
OpenStack當前包括三個子項目,三個項目相會獨立,能夠單獨安裝。
• Swift 提供對象存儲。這是大體相似於Rackspace雲文件(從它派生)或亞馬遜S3。
• Glance 提供OpenStack Nova虛擬機鏡像的發現,存儲和檢索。
• Nova 根據要求提供虛擬服務。這與Rackspace雲服務器或亞馬遜EC2相似。
未來會出現web 接口的子項目以及隊列服務的子項目。 api
Cloud Provider Conceptual Architecture 瀏覽器
構建本身的Iaas雲環境並將其提供給用戶,須要提供如下幾個特性:
1. 容許應用用戶註冊雲服務、查看使用狀況以及帳單。
2. 容許開發商和開發人員建立和存儲自定義的鏡像。
3. 容許開發商和開發人員啓動、監控、中止虛擬機實例。
4. 容許操做人員配置和操做雲基礎設施。 安全
上面只列出了基本的4個特性,固然還有其餘一些特性,將這些特性列在一塊兒,展現以下: 服務器
在上面的模型中,假定了與雲交互的四種人員(開發商、開發人員、操做員、用戶),還定義了三層架構(表現、邏輯、資源)和兩個正交領域(集成和管理)。
表現層,組件與用戶交互,接受並顯示用戶的信息。在這一層,爲非開發人員提供了一個web圖形界面,爲開發人員提供了API。在這一層,還存在負載均衡、控制檯代理、安全、命名服務。
邏輯層,爲咱們的雲和控制功能提供情報。這層內包括部業務流程(工做流程複雜的任務),調度(肯定做業對資源的映射),政策(配額等),鏡像註冊表(例如鏡像的元數據),日誌(事件和計量)。
集成功能,大多數服務提供商已經有一個客戶的身份和計費系統。任何雲架構將須要與這些系統集成。
管理層,提供一個API來管理雲並提供監控功能。
資源層,由於這是一個計算雲,咱們須要實際的計算,網絡和存儲資源,以提供給客戶。這一層提供這些服務,他們多是服務器,網絡交換機,網絡附加存儲或其餘資源。 網絡
OpenStack Compute Logical Architecture
OpenStack中有兩個守護進程:
接收和調解API調用的WSGI應用程序(nova-api,glance-api等等)。
進行編排任務的工人守護進程(nova-compute, nova-network,,nova-schedule)。
OpenStack中還包含兩個組件:消息隊列服務和數據庫。這兩個組件方便異步編排複雜的任務經過消息傳遞和信息共享。
這個複雜的,但不是太翔實的圖表能夠歸納爲三句話:
l終端用戶經過nova-api接口與Openstack計算交互。
lOpenStack計算守護進程經過隊列的交換信息(行動)和數據庫(信息)進行API請求。
lOpenStack Glance是一個徹底獨立的基礎上設施。
各個組件的介紹:
nova-api:是對外的接口。OpenStack 雲計算的核心控制器(CloudController定義在trunk/nova/api/ec2/cloud.py)。它提供了一個爲全部的API查詢(OpenStack API或EC2 API)的端點,引起多數業務流程的活動(如運行一個實例),並實施一些政策(主要是配額檢查)。
nova-schedule:根據當前資源使用狀況,決定計算節點分佈到哪臺計算節點上。目前實現很薄,目前已支持插件方式擴展,方便後面可能有采用更復雜算法。
nova-compute:接收隊列中的動做,而後執行一系列的系統命令(如啓動KVM實例),同時更新數據庫中的狀態。
nova-volume:給虛擬機分配額外持久化的存儲,管理持久捲到計算實例的建立,鏈接和分離。
nova-network:網絡管理,給虛擬機分配網絡和管理,使外部 PC 能夠可直接訪問。它接受隊列中的網絡任務,而後執行任務操縱網絡(如設立橋接接口或更改iptables規則)。
queue:提供了一個守護進程之間傳遞消息的中央樞紐。當前由 RabbitMQ實現,理論上能夠是Python的ampqlib支持的任何AMPQ消息隊列。
SQL database:存儲雲基礎設施的編譯時和運行時的狀態。這包括可用的實例類型,在使用中的實例,可用的網絡和項目。
OpenStack Glance:OpenStack 單獨的一個項目。
Nova Conceptual Mapping
OpenStack的架構示意圖和目前已實現狀況,藍色是要 openstack概念上的架構圖,紅色是目前已實現的。
上面的功能模塊對應上面模型的映射:
Service Architecture
管理和使用是走兩個通道的。管理必需要經由 nova-api轉發過去。而運行時,直接鏈接計算節點上的虛擬機便可。
部署
部署時,除了Dashboard 必須部署在 nova-api server 上之外,全部的其它進程均可以部署在不一樣的機器上。
OpenStack提供了基於 Puppet的自動部署工具。通過簡單配置,就能夠把各個組件部署到不一樣機器上。
鏡像管理
OpenStack的鏡像建立並無歸入其職責列表。
你可使用Ubuntu的已有image (https://help.ubuntu.com/community/UEC/),或者直接從新本身經過KVM安裝 :
http://cssoss.wordpress.com/2011/04/27/openstack-beginners-guide-for-ubuntu-11-04-image-management/
網絡模型
Flat Network Manager, Flat DHCP Network Manager, VLAN Network Manager. VLAN Network Manager 這種方式適合於共有云。 在私有云方面, IP充足,並且爲了方便的互聯互通,簡單的Flat結構網絡比較適合。 OpenStack支持 Floating IPs ,該特性能夠方便的經過更改IP來Failover(容錯轉移)或者遷移。