What is OpenStack?
OpenStack提供開放源碼軟件,建立公共和私有云。 OpenStack是一個(gè)社區(qū)和一個(gè)項(xiàng)目,以及開放源碼軟件,以幫助企業(yè)運(yùn)行的虛擬計(jì)算或者存儲(chǔ)云。 OpenStackd開源項(xiàng)目由社區(qū)維護(hù),包括OpenStack計(jì)算(代號(hào)為Nova),OpenStack對(duì)象存儲(chǔ)(代號(hào)為SWIFT),并OpenStack鏡像服務(wù)(代號(hào)Glance)的集合。 OpenStack提供了一個(gè)操作平臺(tái),或工具包,用于編排云。
Components of OpenStack
OpenStack當(dāng)前主要有三個(gè)組件:計(jì)算,存儲(chǔ),鏡像。
OpenStack計(jì)算是一個(gè)云控制器,用來啟動(dòng)一個(gè)用戶或一個(gè)組的虛擬實(shí)例,它也用于配置每個(gè)實(shí)例或項(xiàng)目中包含多個(gè)實(shí)例為某個(gè)特定項(xiàng)目的聯(lián)網(wǎng)。
OpenStack對(duì)象存儲(chǔ)是一個(gè)在具有內(nèi)置冗余和容錯(cuò)的大容量系統(tǒng)中存儲(chǔ)對(duì)象的系統(tǒng)。對(duì)象存儲(chǔ)有各種應(yīng)用,如備份或存檔數(shù)據(jù),存儲(chǔ)圖形或視頻(流媒體數(shù)據(jù)傳輸?shù)接脩舻臑g覽器),儲(chǔ)存二級(jí)或三級(jí)靜態(tài)數(shù)據(jù),發(fā)展與數(shù)據(jù)存儲(chǔ)集成新的應(yīng)用程序,當(dāng)預(yù)測(cè)存儲(chǔ)容量困難時(shí)存儲(chǔ)數(shù)據(jù),創(chuàng)造彈性和靈活的云存儲(chǔ)Web應(yīng)用程序。
OpenStack鏡像服務(wù)是一個(gè)查找和虛擬機(jī)圖像檢索系統(tǒng)。它可以配置三種方式:使用OpenStack對(duì)象存儲(chǔ)來存儲(chǔ)圖像;使用亞馬遜S3直接存儲(chǔ),或使用S3對(duì)象存儲(chǔ)作為S3訪問中間存儲(chǔ)。
OpenStack Project Architecture
OpenStack當(dāng)前包括三個(gè)子項(xiàng)目,三個(gè)項(xiàng)目相會(huì)獨(dú)立,可以單獨(dú)安裝。
Swift 提供對(duì)象存儲(chǔ)。這是大致類似于Rackspace云文件(從它派生)或亞馬遜S3。
Glance 提供OpenStack Nova虛擬機(jī)鏡像的發(fā)現(xiàn),存儲(chǔ)和檢索。
Nova 根據(jù)要求提供虛擬服務(wù)。這與Rackspace云服務(wù)器或亞馬遜EC2類似。
將來會(huì)出現(xiàn)web 接口的子項(xiàng)目以及隊(duì)列服務(wù)的子項(xiàng)目。
Cloud Provider Conceptual Architecture
構(gòu)建自己的Iaas云環(huán)境并將其提供給用戶,需要提供以下幾個(gè)特性:
1. 允許應(yīng)用用戶注冊(cè)云服務(wù)、查看使用情況以及賬單。
2. 允許開發(fā)商和開發(fā)人員創(chuàng)建和存儲(chǔ)自定義的鏡像。
3. 允許開發(fā)商和開發(fā)人員啟動(dòng)、監(jiān)控、停止虛擬機(jī)實(shí)例。
4. 允許操作人員配置和操作云基礎(chǔ)設(shè)施。
上面只列出了基本的4個(gè)特性,當(dāng)然還有其他一些特性,將這些特性列在一起,展示如下:
在上面的模型中,假定了與云交互的四種人員(開發(fā)商、開發(fā)人員、操作員、用戶),還定義了三層架構(gòu)(表現(xiàn)、邏輯、資源)和兩個(gè)正交領(lǐng)域(集成和管理)。
表現(xiàn)層,組件與用戶交互,接受并顯示用戶的信息。在這一層,為非開發(fā)人員提供了一個(gè)web 圖形界面,為開發(fā)人員提供了API。在這一層,還存在負(fù)載均衡、控制臺(tái)代理、安全、命名服務(wù)。
邏輯層,為我們的云和控制功能提供情報(bào)。這層內(nèi)包括部業(yè)務(wù)流程(工作流程復(fù)雜的任務(wù)),調(diào)度(確定作業(yè)對(duì)資源的映射),政策(配額等),鏡像注冊(cè)表(例如鏡像的元數(shù)據(jù)),日志(事件和計(jì)量)。
集成功能,大多數(shù)服務(wù)提供商已經(jīng)有一個(gè)客戶的身份和計(jì)費(fèi)系統(tǒng)。任何云架構(gòu)將需要與這些系統(tǒng)集成。
管理層,提供一個(gè)API來管理云并提供監(jiān)控功能。
資源層,因?yàn)檫@是一個(gè)計(jì)算云,我們需要實(shí)際的計(jì)算,網(wǎng)絡(luò)和存儲(chǔ)資源,以提供給客戶。這一層提供這些服務(wù),他們可能是服務(wù)器,網(wǎng)絡(luò)交換機(jī),網(wǎng)絡(luò)附加存儲(chǔ)或其他資源。
OpenStack Compute Logical Architecture
OpenStack 中有兩個(gè)守護(hù)進(jìn)程:
接收和調(diào)解API調(diào)用的WSGI應(yīng)用程序 (nova-api,glance-api等等)。
進(jìn)行編排任務(wù)的工人守護(hù)進(jìn)程(nova-compute, nova-network,,nova-schedule)。
OpenStack中還包含兩個(gè)組件:消息隊(duì)列服務(wù)和數(shù)據(jù)庫。這兩個(gè)組件方便異步編排復(fù)雜的任務(wù)通過消息傳遞和信息共享。
這個(gè)復(fù)雜的,但不是太翔實(shí)的圖表可以概括為三句話:
終端用戶通過nova-api 接口與Openstack 計(jì)算交互。
OpenStack計(jì)算守護(hù)進(jìn)程通過隊(duì)列的交換信息(行動(dòng))和數(shù)據(jù)庫(信息)進(jìn)行API請(qǐng)求。
OpenStack Glance是一個(gè)完全獨(dú)立的基礎(chǔ)上設(shè)施。
各個(gè)組件的介紹:
nova-api
:
是對(duì)外的接口。OpenStack 云計(jì)算的核心控制器(CloudController定義在trunk/nova/api/ec2/cloud.py)。它提供了一個(gè)為所有的API查詢(OpenStack API或EC2 API)的端點(diǎn),引發(fā)多數(shù)業(yè)務(wù)流程的活動(dòng)(如運(yùn)行一個(gè)實(shí)例),并實(shí)施一些政策(主要是配額檢查)。
nova-schedule
:
根據(jù)當(dāng)前資源使用情況,決定計(jì)算節(jié)點(diǎn)分布到哪臺(tái)計(jì)算節(jié)點(diǎn)上。目前實(shí)現(xiàn)很薄,目前已支持插件方式擴(kuò)展,方便后面可能有采用更復(fù)雜算法。
nova-compute
:
接收隊(duì)列中的動(dòng)作,然后執(zhí)行一系列的系統(tǒng)命令(如啟動(dòng)KVM實(shí)例),同時(shí)更新數(shù)據(jù)庫中的狀態(tài)。
nova-volume
:
給虛擬機(jī)分配額外持久化的存儲(chǔ),管理持久卷到計(jì)算實(shí)例的創(chuàng)建,連接和分離。
nova-network
:
網(wǎng)絡(luò)管理,給虛擬機(jī)分配網(wǎng)絡(luò)和管理,使外部 PC 可以可直接訪問。它接受隊(duì)列中的網(wǎng)絡(luò)任務(wù),然后執(zhí)行任務(wù)操縱網(wǎng)絡(luò)(如設(shè)立橋接接口或更改iptables規(guī)則)。
queue
:
提供了一個(gè)守護(hù)進(jìn)程之間傳遞消息的中央樞紐。當(dāng)前由 RabbitMQ實(shí)現(xiàn),理論上可以是Python的ampqlib支持的任何AMPQ消息隊(duì)列。
SQL database
:
存儲(chǔ)云基礎(chǔ)設(shè)施的編譯時(shí)和運(yùn)行時(shí)的狀態(tài)。這包括可用的實(shí)例類型,在使用中的實(shí)例,可用的網(wǎng)絡(luò)和項(xiàng)目。
OpenStack Glance:
OpenStack 單獨(dú)的一個(gè)項(xiàng)目。
Nova Conceptual Mapping
OpenStack的架構(gòu)示意圖和目前已實(shí)現(xiàn)情況,藍(lán)色是要 openstack概念上的架構(gòu)圖,紅色是目前已實(shí)現(xiàn)的。
上面的功能模塊對(duì)應(yīng)上面模型的映射:
Service Architecture
管理和使用是走兩個(gè)通道的。管理必須要經(jīng)由 nova-api轉(zhuǎn)發(fā)過去。而運(yùn)行時(shí),直接連接計(jì)算節(jié)點(diǎn)上的虛擬機(jī)即可。
部署
部署時(shí),除了Dashboard 必須部署在 nova-api server 上以外,所有的其它進(jìn)程都可以部署在不同的機(jī)器上。
OpenStack提供了基于 Puppet 的自動(dòng)部署工具。經(jīng)過簡(jiǎn)單配置,就可以把各個(gè)組件部署到不同機(jī)器上。
鏡像管理
OpenStack的鏡像創(chuàng)建并沒有納入其職責(zé)列表。
你可以使用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/
網(wǎng)絡(luò)模型
Flat Network Manager, Flat DHCP Network Manager, VLAN Network Manager.
VLAN Network Manager 這種方式適合于共有云。
在私有云方面, IP充足,而且為了方便的互聯(lián)互通,簡(jiǎn)單的Flat結(jié)構(gòu)網(wǎng)絡(luò)比較適合。
OpenStack支持 Floating IPs ,該特性可以方便的通過更改IP來Failover(容錯(cuò)轉(zhuǎn)移)或者遷移。
參考文章
OpenStack 架構(gòu):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/