最近在看CloudMan的《每天5分鐘玩轉(zhuǎn) OpenStack》系列文章,受益很多,這篇為學(xué)習(xí)總結(jié)篇,感謝閱讀~
一、云計(jì)算服務(wù)架構(gòu)
云計(jì)算是IT技術(shù)不斷發(fā)展的產(chǎn)物。 要理解云計(jì)算,需要對(duì)IT系統(tǒng)架構(gòu)的發(fā)展過(guò)程有所認(rèn)識(shí),可以通過(guò)下圖來(lái)理解云計(jì)算:
IT系統(tǒng)架構(gòu)的發(fā)展到目前為止大致可以分為3個(gè)階段:
1、物理機(jī)架構(gòu)
這一階段,應(yīng)用部署和運(yùn)行在物理機(jī)上。 比如企業(yè)要上一個(gè)ERP系統(tǒng),如果規(guī)模不大,可以找3臺(tái)物理機(jī),分別部署Web服務(wù)器、應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器。 如果規(guī)模大一點(diǎn),各種服務(wù)器可以采用集群架構(gòu),但每個(gè)集群成員也還是直接部署在物理機(jī)上。 我見過(guò)的客戶早期都是這種架構(gòu),一套應(yīng)用一套服務(wù)器,通常系統(tǒng)的資源使用率都很低,達(dá)到20%的都是好的。
2、虛擬化架構(gòu)
摩爾定律決定了物理服務(wù)器的計(jì)算能力越來(lái)越強(qiáng),虛擬化技術(shù)的發(fā)展大大提高了物理服務(wù)器的資源使用率。 這個(gè)階段,物理機(jī)上運(yùn)行若干虛擬機(jī),應(yīng)用系統(tǒng)直接部署到虛擬機(jī)上。 虛擬化的好處還體現(xiàn)在減少了需要管理的物理機(jī)數(shù)量,同時(shí)節(jié)省了維護(hù)成本。
3、云計(jì)算架構(gòu)
虛擬化提高了單臺(tái)物理機(jī)的資源使用率,隨著虛擬化技術(shù)的應(yīng)用,IT環(huán)境中有越來(lái)越多的虛擬機(jī),這時(shí)新的需求產(chǎn)生了: 如何對(duì)IT環(huán)境中的虛擬機(jī)進(jìn)行統(tǒng)一和高效的管理。 有需求就有供給,云計(jì)算登上了歷史舞臺(tái)。
計(jì)算(CPU/內(nèi)存)、存儲(chǔ)和網(wǎng)絡(luò)是 IT 系統(tǒng)的三類資源。 通過(guò)云計(jì)算平臺(tái),這三類資源變成了三個(gè)池子 當(dāng)需要虛機(jī)的時(shí)候,只需要向平臺(tái)提供虛機(jī)的規(guī)格。 平臺(tái)會(huì)快速?gòu)娜齻€(gè)資源池分配相應(yīng)的資源,部署出這樣一個(gè)滿足規(guī)格的虛機(jī)。 虛機(jī)的使用者不再需要關(guān)心虛機(jī)運(yùn)行在哪里,存儲(chǔ)空間從哪里來(lái),IP是如何分配,這些云平臺(tái)都搞定了。
云平臺(tái)是一個(gè)面向服務(wù)的架構(gòu),按照提供服務(wù)的不同分為 IaaS、PaaS 和 SaaS。 如下圖所示:
三層架構(gòu)的說(shuō)明如下:
IaaS(Infrastructure as a Service)
基礎(chǔ)設(shè)施即服務(wù),該層提供的服務(wù)是虛擬機(jī)。 IaaS 負(fù)責(zé)管理虛機(jī)的生命周期,包括創(chuàng)建、修改、備份、啟停、銷毀等。 使用者從云平臺(tái)得到的是一個(gè)已經(jīng)安裝好鏡像(操作系統(tǒng)+其他預(yù)裝軟件)的虛擬機(jī)。 使用者需要關(guān)心虛機(jī)的類型(OS)和配置(CPU、內(nèi)存、磁盤),并且自己負(fù)責(zé)部署上層的中間件和應(yīng)用。 IaaS 的使用者通常是數(shù)據(jù)中心的系統(tǒng)管理員。 典型的 IaaS 例子有 AWS、Rackspace、阿里云等。
PaaS(Platform as a Service)
平臺(tái)即服務(wù),該層提供的服務(wù)是應(yīng)用的運(yùn)行環(huán)境和一系列中間件服務(wù)(比如數(shù)據(jù)庫(kù)、消息隊(duì)列等)。 使用者只需專注應(yīng)用的開發(fā),并將自己的應(yīng)用和數(shù)據(jù)部署到PaaS環(huán)境中。 PaaS負(fù)責(zé)保證這些服務(wù)的可用性和性能。 PaaS的使用者通常是應(yīng)用的開發(fā)人員。 典型的 PaaS 有 Heroku、Google App Engine、IBM BlueMix 等。
SaaS(Software as a Service)
軟件即服務(wù),該層提供的是應(yīng)用服務(wù)。 使用者只需要登錄并使用應(yīng)用,無(wú)需關(guān)心應(yīng)用使用什么技術(shù)實(shí)現(xiàn),也不需要關(guān)系應(yīng)用部署在哪里。 SaaS的使用者通常是應(yīng)用的最終用戶。 典型的 SaaS 有 Google Gmail、Salesforce 等。
現(xiàn)在,基于Docker的CaaS容器云平臺(tái)架構(gòu)設(shè)計(jì)也逐漸流行起來(lái),還有最新的容器編排框架k8s(Kubernetes),詳細(xì)介紹可以參考這篇文章:基于Docker的CaaS容器云平臺(tái)架構(gòu)設(shè)計(jì)
二、云計(jì)算與OpenStack
OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface.
以上是官網(wǎng)對(duì) OpenStack 的定義,OpenStack 對(duì)數(shù)據(jù)中心的計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)資源進(jìn)行統(tǒng)一管理。 由此可見,OpenStack 針對(duì)的是 IT 基礎(chǔ)設(shè)施,是 IaaS 這個(gè)層次的云操作系統(tǒng)。
OpenStack 已經(jīng)走過(guò)了 6 個(gè)年頭。 每半年發(fā)布一個(gè)版本,版本以字母順序命名,現(xiàn)在已經(jīng)到第 14 個(gè)版本 Newton(字母 N)。 OpenStack最初只有兩個(gè)模塊(服務(wù)),現(xiàn)在已經(jīng)有 20+(見下圖),每個(gè)模塊作為獨(dú)立的子項(xiàng)目開發(fā)。
作為 IaaS 層的云操作系統(tǒng),OpenStack 為虛機(jī)提供并管理三大類資源:計(jì)算、網(wǎng)絡(luò)和存儲(chǔ)。如下圖所示:
三、OpenStack架構(gòu)
架構(gòu)能幫助我們站在高處看清楚事物的整體結(jié)構(gòu),避免過(guò)早地進(jìn)入細(xì)節(jié)而迷失方向。下圖是 OpenStack 的 Conceptual Architecture
中間菱形VM是虛擬機(jī),圍繞 VM 的那些長(zhǎng)方形代表 OpenStack 不同的模塊(OpenStack 叫服務(wù),后面都用服務(wù)這個(gè)術(shù)語(yǔ)),下面來(lái)分別介紹。
Nova:管理 VM 的生命周期,是 OpenStack 中最核心的服務(wù)。
Neutron:為 OpenStack 提供網(wǎng)絡(luò)連接服務(wù),負(fù)責(zé)創(chuàng)建和管理L2、L3 網(wǎng)絡(luò),為 VM 提供虛擬網(wǎng)絡(luò)和物理網(wǎng)絡(luò)連接。
Glance:管理 VM 啟動(dòng)鏡像,Nova 創(chuàng)建 VM 時(shí)將使用 Glance 提供的鏡像。
Cinder:為 VM 提供塊存儲(chǔ)服務(wù)。Cinder 提供的每一個(gè) Volume 在 VM 看來(lái)就是一塊虛擬硬盤,一般用作數(shù)據(jù)盤。
Swift:提供對(duì)象存儲(chǔ)服務(wù)。VM 可以通過(guò) RESTful API 存放對(duì)象數(shù)據(jù)。作為可選的方案,Glance 可以將鏡像存放在 Swift 中;Cinder 也可以將 Volume 備份到 Swift 中。
Keystone:為 OpenStack 的各種服務(wù)提供認(rèn)證和權(quán)限管理服務(wù)。簡(jiǎn)單的說(shuō),OpenStack 上的每一個(gè)操作都必須通過(guò) Keystone 的審核。
Ceilometer:提供 OpenStac k監(jiān)控和計(jì)量服務(wù),為報(bào)警、統(tǒng)計(jì)或計(jì)費(fèi)提供數(shù)據(jù)。
Horizon:為 OpenStack 用戶提供一個(gè) Web 的自服務(wù) Portal。
在上面的這些服務(wù)中,哪些是 OpenStack 的核心服務(wù)呢? 核心服務(wù)就是如果沒(méi)有它,OpenStack 就跑不起來(lái)。 很顯然:
Nova 管理計(jì)算資源,是核心服務(wù)。
Neutron 管理網(wǎng)絡(luò)資源,是核心服務(wù)。
Glance 為 VM 提供 OS 鏡像,屬于存儲(chǔ)范疇,是核心服務(wù)。
Cinder 提供塊存儲(chǔ),VM怎么也得需要數(shù)據(jù)盤吧,是核心服務(wù)。
Swift 提供對(duì)象存儲(chǔ),不是必須的,是可選服務(wù)。
Keystone 認(rèn)證服務(wù),沒(méi)它 OpenStack 轉(zhuǎn)不起來(lái),是核心服務(wù)。
Ceilometer 監(jiān)控服務(wù),不是必須的,可選服務(wù)。
Horizon 操作界面,也是必須的。
再看OpenStack核心服務(wù)內(nèi)部的組成結(jié)構(gòu):
Logical Architecture
在 Logical Architecture 中,可以看到每個(gè)服務(wù)又由若干組件組成。 以 Neutron 為例,包含:
- Neutron Server、Neutron plugins 和 Neutron agents
- Network provider
- 消息隊(duì)列 Queue
- 數(shù)據(jù)庫(kù) Neutron Database
上面是 Logical Architecture,描述的是 Neutron 服務(wù)各個(gè)組成部分以及各組件之間的邏輯關(guān)系。 而在實(shí)際的部署方案上,各個(gè)組件可以部署到不同的物理節(jié)點(diǎn)上。
OpenStack 本身是一個(gè)分布式系統(tǒng),不但各個(gè)服務(wù)可以分布部署,服務(wù)中的組件也可以分布部署。 這種分布式特性讓 OpenStack 具備極大的靈活性、伸縮性和高可用性。 當(dāng)然從另一個(gè)角度講,這也使得 OpenStack 比一般系統(tǒng)復(fù)雜,學(xué)習(xí)難度也更大。