最近在看CloudMan的《每天5分鐘玩轉(zhuǎn) OpenStack》系列文章吐绵,受益很多,這篇為學(xué)習(xí)總結(jié)篇,感謝閱讀~
一淋硝、云計算服務(wù)架構(gòu)
云計算是IT技術(shù)不斷發(fā)展的產(chǎn)物。 要理解云計算宽菜,需要對IT系統(tǒng)架構(gòu)的發(fā)展過程有所認識谣膳,可以通過下圖來理解云計算:
IT系統(tǒng)架構(gòu)的發(fā)展到目前為止大致可以分為3個階段:
1、物理機架構(gòu)
這一階段铅乡,應(yīng)用部署和運行在物理機上继谚。 比如企業(yè)要上一個ERP系統(tǒng),如果規(guī)模不大阵幸,可以找3臺物理機花履,分別部署Web服務(wù)器芽世、應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器。 如果規(guī)模大一點诡壁,各種服務(wù)器可以采用集群架構(gòu)济瓢,但每個集群成員也還是直接部署在物理機上。 我見過的客戶早期都是這種架構(gòu)妹卿,一套應(yīng)用一套服務(wù)器旺矾,通常系統(tǒng)的資源使用率都很低,達到20%的都是好的夺克。
2箕宙、虛擬化架構(gòu)
摩爾定律決定了物理服務(wù)器的計算能力越來越強,虛擬化技術(shù)的發(fā)展大大提高了物理服務(wù)器的資源使用率铺纽。 這個階段柬帕,物理機上運行若干虛擬機,應(yīng)用系統(tǒng)直接部署到虛擬機上狡门。 虛擬化的好處還體現(xiàn)在減少了需要管理的物理機數(shù)量陷寝,同時節(jié)省了維護成本。
3其馏、云計算架構(gòu)
虛擬化提高了單臺物理機的資源使用率凤跑,隨著虛擬化技術(shù)的應(yīng)用,IT環(huán)境中有越來越多的虛擬機尝偎,這時新的需求產(chǎn)生了: 如何對IT環(huán)境中的虛擬機進行統(tǒng)一和高效的管理饶火。 有需求就有供給,云計算登上了歷史舞臺致扯。
計算(CPU/內(nèi)存)肤寝、存儲和網(wǎng)絡(luò)是 IT 系統(tǒng)的三類資源。 通過云計算平臺抖僵,這三類資源變成了三個池子 當需要虛機的時候鲤看,只需要向平臺提供虛機的規(guī)格。 平臺會快速從三個資源池分配相應(yīng)的資源耍群,部署出這樣一個滿足規(guī)格的虛機义桂。 虛機的使用者不再需要關(guān)心虛機運行在哪里,存儲空間從哪里來蹈垢,IP是如何分配慷吊,這些云平臺都搞定了。
云平臺是一個面向服務(wù)的架構(gòu)曹抬,按照提供服務(wù)的不同分為 IaaS溉瓶、PaaS 和 SaaS。 如下圖所示:
三層架構(gòu)的說明如下:
IaaS(Infrastructure as a Service)
基礎(chǔ)設(shè)施即服務(wù),該層提供的服務(wù)是虛擬機堰酿。 IaaS 負責(zé)管理虛機的生命周期疾宏,包括創(chuàng)建、修改触创、備份坎藐、啟停、銷毀等哼绑。 使用者從云平臺得到的是一個已經(jīng)安裝好鏡像(操作系統(tǒng)+其他預(yù)裝軟件)的虛擬機岩馍。 使用者需要關(guān)心虛機的類型(OS)和配置(CPU、內(nèi)存凌那、磁盤)兼雄,并且自己負責(zé)部署上層的中間件和應(yīng)用吟逝。 IaaS 的使用者通常是數(shù)據(jù)中心的系統(tǒng)管理員帽蝶。 典型的 IaaS 例子有 AWS、Rackspace块攒、阿里云等励稳。
PaaS(Platform as a Service)
平臺即服務(wù),該層提供的服務(wù)是應(yīng)用的運行環(huán)境和一系列中間件服務(wù)(比如數(shù)據(jù)庫囱井、消息隊列等)驹尼。 使用者只需專注應(yīng)用的開發(fā),并將自己的應(yīng)用和數(shù)據(jù)部署到PaaS環(huán)境中庞呕。 PaaS負責(zé)保證這些服務(wù)的可用性和性能新翎。 PaaS的使用者通常是應(yīng)用的開發(fā)人員。 典型的 PaaS 有 Heroku住练、Google App Engine地啰、IBM BlueMix 等。
SaaS(Software as a Service)
軟件即服務(wù)讲逛,該層提供的是應(yīng)用服務(wù)亏吝。 使用者只需要登錄并使用應(yīng)用,無需關(guān)心應(yīng)用使用什么技術(shù)實現(xiàn)盏混,也不需要關(guān)系應(yīng)用部署在哪里蔚鸥。 SaaS的使用者通常是應(yīng)用的最終用戶。 典型的 SaaS 有 Google Gmail许赃、Salesforce 等止喷。
現(xiàn)在,基于Docker的CaaS容器云平臺架構(gòu)設(shè)計也逐漸流行起來混聊,還有最新的容器編排框架k8s(Kubernetes)弹谁,詳細介紹可以參考這篇文章:基于Docker的CaaS容器云平臺架構(gòu)設(shè)計
二、云計算與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)對 OpenStack 的定義,OpenStack 對數(shù)據(jù)中心的計算僵闯、存儲和網(wǎng)絡(luò)資源進行統(tǒng)一管理卧抗。 由此可見,OpenStack 針對的是 IT 基礎(chǔ)設(shè)施鳖粟,是 IaaS 這個層次的云操作系統(tǒng)社裆。
OpenStack 已經(jīng)走過了 6 個年頭。 每半年發(fā)布一個版本向图,版本以字母順序命名泳秀,現(xiàn)在已經(jīng)到第 14 個版本 Newton(字母 N)。 OpenStack最初只有兩個模塊(服務(wù))榄攀,現(xiàn)在已經(jīng)有 20+(見下圖)嗜傅,每個模塊作為獨立的子項目開發(fā)。
作為 IaaS 層的云操作系統(tǒng)檩赢,OpenStack 為虛機提供并管理三大類資源:計算吕嘀、網(wǎng)絡(luò)和存儲。如下圖所示:
三贞瞒、OpenStack架構(gòu)
架構(gòu)能幫助我們站在高處看清楚事物的整體結(jié)構(gòu)偶房,避免過早地進入細節(jié)而迷失方向道媚。下圖是 OpenStack 的 Conceptual Architecture
中間菱形VM是虛擬機酪我,圍繞 VM 的那些長方形代表 OpenStack 不同的模塊(OpenStack 叫服務(wù),后面都用服務(wù)這個術(shù)語)逗扒,下面來分別介紹乒融。
Nova:管理 VM 的生命周期掰盘,是 OpenStack 中最核心的服務(wù)。
Neutron:為 OpenStack 提供網(wǎng)絡(luò)連接服務(wù)赞季,負責(zé)創(chuàng)建和管理L2愧捕、L3 網(wǎng)絡(luò),為 VM 提供虛擬網(wǎng)絡(luò)和物理網(wǎng)絡(luò)連接碟摆。
Glance:管理 VM 啟動鏡像晃财,Nova 創(chuàng)建 VM 時將使用 Glance 提供的鏡像。
Cinder:為 VM 提供塊存儲服務(wù)典蜕。Cinder 提供的每一個 Volume 在 VM 看來就是一塊虛擬硬盤断盛,一般用作數(shù)據(jù)盤。
Swift:提供對象存儲服務(wù)愉舔。VM 可以通過 RESTful API 存放對象數(shù)據(jù)钢猛。作為可選的方案,Glance 可以將鏡像存放在 Swift 中轩缤;Cinder 也可以將 Volume 備份到 Swift 中命迈。
Keystone:為 OpenStack 的各種服務(wù)提供認證和權(quán)限管理服務(wù)贩绕。簡單的說,OpenStack 上的每一個操作都必須通過 Keystone 的審核壶愤。
Ceilometer:提供 OpenStac k監(jiān)控和計量服務(wù)淑倾,為報警、統(tǒng)計或計費提供數(shù)據(jù)征椒。
Horizon:為 OpenStack 用戶提供一個 Web 的自服務(wù) Portal娇哆。
在上面的這些服務(wù)中,哪些是 OpenStack 的核心服務(wù)呢勃救? 核心服務(wù)就是如果沒有它碍讨,OpenStack 就跑不起來。 很顯然:
Nova 管理計算資源蒙秒,是核心服務(wù)勃黍。
Neutron 管理網(wǎng)絡(luò)資源,是核心服務(wù)晕讲。
Glance 為 VM 提供 OS 鏡像覆获,屬于存儲范疇,是核心服務(wù)益兄。
Cinder 提供塊存儲锻梳,VM怎么也得需要數(shù)據(jù)盤吧箭券,是核心服務(wù)净捅。
Swift 提供對象存儲,不是必須的辩块,是可選服務(wù)蛔六。
Keystone 認證服務(wù),沒它 OpenStack 轉(zhuǎn)不起來废亭,是核心服務(wù)国章。
Ceilometer 監(jiān)控服務(wù),不是必須的豆村,可選服務(wù)液兽。
Horizon 操作界面,也是必須的掌动。
再看OpenStack核心服務(wù)內(nèi)部的組成結(jié)構(gòu):
Logical Architecture
在 Logical Architecture 中四啰,可以看到每個服務(wù)又由若干組件組成。 以 Neutron 為例粗恢,包含:
- Neutron Server柑晒、Neutron plugins 和 Neutron agents
- Network provider
- 消息隊列 Queue
- 數(shù)據(jù)庫 Neutron Database
上面是 Logical Architecture,描述的是 Neutron 服務(wù)各個組成部分以及各組件之間的邏輯關(guān)系眷射。 而在實際的部署方案上匙赞,各個組件可以部署到不同的物理節(jié)點上佛掖。
OpenStack 本身是一個分布式系統(tǒng),不但各個服務(wù)可以分布部署涌庭,服務(wù)中的組件也可以分布部署芥被。 這種分布式特性讓 OpenStack 具備極大的靈活性、伸縮性和高可用性坐榆。 當然從另一個角度講撕彤,這也使得 OpenStack 比一般系統(tǒng)復(fù)雜,學(xué)習(xí)難度也更大猛拴。