云計算 OpenStack架構預覽
What is OpenStack?
OpenStack提供開放源碼軟件,建立公共和私有云。 OpenStack是一個社區和一個項目,以及開放源碼軟件,以幫助企業運行的虛擬計算或者存儲云。 OpenStackd開源項目由社區維護,包括OpenStack計算(代號為Nova),OpenStack對象存儲(代號為SWIFT),并OpenStack鏡像服務(代號Glance)的集合。 OpenStack提供了一個操作平臺,或工具包,用于編排云。
Components of OpenStack
OpenStack當前主要有三個組件:計算,存儲,鏡像。
OpenStack計算是一個云控制器,用來啟動一個用戶或一個組的虛擬實例,它也用于配置每個實例或項目中包含多個實例為某個特定項目的聯網。
OpenStack對象存儲是一個在具有內置冗余和容錯的大容量系統中存儲對象的系統。對象存儲有各種應用,如備份或存檔數據,存儲圖形或視頻(流媒體數據傳輸到用戶的瀏覽器),儲存二級或三級靜態數據,發展與數據存儲集成新的應用程序,當預測存儲容量困難時存儲數據,創造彈性和靈活的云存儲Web應用程序。
OpenStack鏡像服務是一個查找和虛擬機圖像檢索系統。它可以配置三種方式:使用OpenStack對象存儲來存儲圖像;使用亞馬遜S3直接存儲,或使用S3對象存儲作為S3訪問中間存儲。
OpenStack Project Architecture
OpenStack當前包括三個子項目,三個項目相會獨立,可以單獨安裝。
? Swift 提供對象存儲。這是大致類似于Rackspace云文件(從它派生)或亞馬遜S3。
? Glance 提供OpenStack Nova虛擬機鏡像的發現,存儲和檢索。
? Nova 根據要求提供虛擬服務。這與Rackspace云服務器或亞馬遜EC2類似。
將來會出現web 接口的子項目以及隊列服務的子項目。
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中還包含兩個組件:消息隊列服務和數據庫。這兩個組件方便異步編排復雜的任務通過消息傳遞和信息共享。
這個復雜的,但不是太翔實的圖表可以概括為三句話:
? 終端用戶通過nova-api 接口與Openstack 計算交互。
? OpenStack計算守護進程通過隊列的交換信息(行動)和數據庫(信息)進行API請求。
? OpenStack 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(容錯轉移)或者遷移。
參考文章
OpenStack 架構:http://blog.csdn.net/anghlq/article/details/6543880
nova code:https://bugs.launchpad.net/nova
openstack-nova-architecture:http://ken.pepple.info/openstack/2011/04/22/openstack-nova-architecture/
轉自:http://www.javachen.com/2011/07/openstack-architecture-overview/