孫蘇偉
(南京郵電大學(xué) 江蘇 南京 210000)
云計算作為大數(shù)據(jù)分析的基礎(chǔ)平臺得到了迅猛發(fā)展,在私有云建設(shè)領(lǐng)域開源的OpenStack 不僅市場占有率高,技術(shù)成熟度高,已經(jīng)逐漸成為開源云計算的標(biāo)桿,很多企業(yè)和組織都加入Openstack 開源社區(qū),很多全球排名前列的大公司都是OpenStack 基金會的會員,在云計算領(lǐng)域OpenStack 占有重要的一席。同樣,開源的分布式存儲技術(shù)Ceph 也在軟件定義存儲領(lǐng)域占有越來越重的分量,在和OpenStack 結(jié)合后,能夠?qū)崿F(xiàn)高性能、高可靠、易維護、彈性伸縮的私有云建設(shè)方案。
OpenStack 是一個由NASA 和Rackspace 聯(lián)手發(fā)起,以Apache 許可證授權(quán)的自由軟件和開放源代碼項目。項目的目標(biāo)是提供實施簡單、可大規(guī)模擴展、豐富、標(biāo)準統(tǒng)一的云計算管理平臺。作為一個開源項目,它由開源社區(qū)來負責(zé)項目開展和維護,社區(qū)有自己的組織和基金會。作為一款云操作系統(tǒng)或者云平臺管理項目,能夠為私有云和公有云的實現(xiàn)提供穩(wěn)定、高性能、高可靠、可擴展的彈性的云計算方案。
OpenStack 作為IaaS 平臺的構(gòu)建項目,主要功能和模塊都圍繞虛擬機(VM)展開,為虛擬機提供和管理計算、網(wǎng)絡(luò)和存儲能力和資源。項目中包括的核心模塊如下。
Nova:計算服務(wù)模塊,管理虛擬機的生命周期,負責(zé)虛擬機的創(chuàng)建、遷移、管理和銷毀等操作。
Neutron:提供網(wǎng)絡(luò)服務(wù),實現(xiàn)了軟件定義網(wǎng)絡(luò)功能,負責(zé)創(chuàng)建和管理網(wǎng)絡(luò),為VM 提供虛擬網(wǎng)絡(luò)和物理網(wǎng)絡(luò)連接。
Glance:提供虛擬機鏡像管理和存儲服務(wù),管理VM的啟動鏡像。
Cinder:提供塊存儲服務(wù),用作VM 中塊設(shè)備的創(chuàng)建和管理。
Swift:提供對象存儲服務(wù)的分布式存儲,VM 通過RESTful API 存放對象數(shù)據(jù)。
Ceilometer:監(jiān)控和計費功能,為平臺報警、統(tǒng)計和計費提供數(shù)據(jù)。
Keystone:認證和授權(quán),為平臺的各種服務(wù)提供認證和權(quán)限管理服務(wù)。
Horizon:用戶界面,提供基于 Web 的一個用戶操作和管理界面。
作為開源的云管理平臺項目,OpenStack 主要具備下列優(yōu)勢:
(1)發(fā)展趨勢很積極,經(jīng)過一段時間發(fā)展,應(yīng)用普及程度和范圍廣。OpenStack 作為一個開源項目不僅與開源社區(qū)合作,而且得到供應(yīng)商的普遍支持,很多關(guān)鍵模塊得到了關(guān)注,已經(jīng)發(fā)展成為開源社區(qū)項目中關(guān)注度非常高的項目之一,而且在全球范圍已經(jīng)有成熟的落地案例,可以在網(wǎng)上找到豐富的相關(guān)信息和應(yīng)用經(jīng)驗。
(2)具有極高的開放性和兼容性,可以屏蔽底層不同品牌、不同技術(shù)、不同用途的資源帶來的管理復(fù)雜度。硬件上OpenStack 能兼容市面上幾乎所有的x86 服務(wù)器和國產(chǎn)CPU 服務(wù)器,不會存在傳統(tǒng)硬件廠商綁定特定硬件的情況,完全保留用戶自主選擇的權(quán)利。軟件上由于OpenStack API 是Rest-full API,只要其他組件也是采用這種統(tǒng)一的規(guī)范,通過標(biāo)準的OpenStack API,很容易互聯(lián)互通,因此基于OpenStack 做二次開發(fā),將會比較容易[1]。
(3)自身架構(gòu)具備優(yōu)勢。與其他開源軟件相比,OpenStack 自身模塊松耦合,模塊分明,各個模塊間基本上是獨立的基礎(chǔ)架構(gòu),各模塊組件配置也較為靈活,模塊間的接口有相應(yīng)規(guī)范,通過消息的機制互通,添加獨立功能的組件非常簡單,可以靈活按需搭建最合適的云平臺。
Ceph 是一個分布式存儲系統(tǒng),項目最早起源于Sage就讀博士期間的工作,并隨后貢獻給開源社區(qū)。在經(jīng)過了數(shù)年的發(fā)展之后,特別是伴隨著云計算技術(shù)的發(fā)展,Ceph已得到眾多云計算廠商的支持并被廣泛應(yīng)用,成為開源社區(qū)受關(guān)注較高的項目之一,其中OpenStack 整合Ceph 以支持云平臺的后端存儲運用很廣泛。
按照功能和模塊劃分,Ceph 主要由OSDs、Monitors和MDSs 三個部分組成。
OSDs:Ceph OSD 守護進程,用于集群中所有數(shù)據(jù)與對象的存儲,處理數(shù)據(jù)的復(fù)制、恢復(fù)、回填、再均衡,并通過檢查其他OSD 守護進程的心跳來向 Ceph Monitors 提供一些監(jiān)控信息。
Monitors:Ceph Monitor 維護著展示集群狀態(tài)的各種圖表,包括監(jiān)視器圖、OSD 圖、歸置組(PG)圖和CRUSH 圖。Ceph 監(jiān)控整個集群的狀態(tài),保存著發(fā)生在Monitors、OSD 和PG 上的每一次狀態(tài)變更的歷史信息,維護集群的cluster MAP 二進制表,保證集群數(shù)據(jù)的一致性。
MDSs:Ceph 元數(shù)據(jù)服務(wù)器,為Ceph 文件系統(tǒng)提供元數(shù)據(jù)計算、緩存與同步。在ceph 中,元數(shù)據(jù)也是存儲在osd 節(jié)點中的,mds 類似于元數(shù)據(jù)的代理緩存服務(wù)器。
Ceph 之所以能夠得到目前的市場地位,除了開源,更因為Ceph 具備下列特點。
高擴展性:Ceph 能夠同時提供對象存儲、塊存儲和文件系統(tǒng)存儲三種存儲服務(wù)的統(tǒng)一存儲架構(gòu),還支持自定義接口,支持多種語言驅(qū)動,能夠滿足不同云平臺需求前提下的部署和應(yīng)用[2]。
高性能:通過Crush 算法的尋址操作,Ceph 摒棄了傳統(tǒng)的集中式存儲元數(shù)據(jù)尋址的方案,不僅做到數(shù)據(jù)分布均衡,而且并行度高。
高可靠:Crush 算法在一致性哈希基礎(chǔ)上很好地考慮了容災(zāi)域的隔離,結(jié)合多副本模式,使得Ceph 能夠?qū)崿F(xiàn)各類負載的副本放置規(guī)則,能夠?qū)崿F(xiàn)各類負載的副本放置規(guī)則。
大容量:Crush 算法有相當(dāng)強大的擴展性,理論上能夠支持上千個存儲節(jié)點的規(guī)模,支持TB 到PB 級的數(shù)據(jù)。
高可擴展性:由于Ceph 做到了去中心化,本身沒有主控節(jié)點,擴展起來比較容易,因而能夠滿足云計算需要的靈活擴展要求。
OpenStack 作為一款經(jīng)過市場檢驗證明的優(yōu)秀的云操作系統(tǒng),需要Ceph 提供強大的存儲功能,Ceph 相比較別的開源或私有分布式存儲方案具有一定的競爭力,很多方面具備一定優(yōu)勢,兩者屬于天然互補,可以共同發(fā)展強大。其次兩者都采用標(biāo)準化的對外接口,兩者對接起來簡單、高效。作為開源項目,社區(qū)對二者的結(jié)合已經(jīng)展開了有力支持,對二者的結(jié)合應(yīng)用都做出了專門的研究,已經(jīng)取得很多成果[3]。
結(jié)合OpenStack+Ceph 構(gòu)建私有云優(yōu)勢很明顯。根據(jù)主流的IaaS 云計算架構(gòu),結(jié)合具體的業(yè)務(wù)需求分析,做到高性能、高可靠,考慮未來能夠按需擴容的架構(gòu),最終選擇的云平臺的總體架構(gòu)采用業(yè)界廣泛使用的三層架構(gòu)模式,設(shè)計見圖1。
圖1 私有云平臺架構(gòu)
物理資源層:云計算平臺規(guī)劃使用通用的x86 服務(wù)器構(gòu)建。采用應(yīng)用遷移的方式,把應(yīng)用系統(tǒng)從老的虛擬化系統(tǒng)遷移至新建的云平臺,這樣還可以把老的服務(wù)器逐漸納入到云計算環(huán)境,進行統(tǒng)一管理。
資源虛擬化層:方案采用全面虛擬化,包含服務(wù)器虛擬化、存儲虛擬化和網(wǎng)絡(luò)虛擬化,能從底層更好地支持上層云服務(wù)。計算虛擬化采用KVM 技術(shù),依據(jù)每臺計算節(jié)點的性能和用途劃分不同的Zone,支持不同的計算資源池。存儲虛擬化運用Ceph 技術(shù),把每臺服務(wù)器的存儲能力整合起來,并根據(jù)磁盤介質(zhì)的性能差異和應(yīng)用需求,規(guī)劃多個共享的存儲資源池,提供虛擬機使用的塊設(shè)備和對象存儲兩種訪問接口。網(wǎng)絡(luò)虛擬化采用萬兆網(wǎng)絡(luò)加VLAN 的模式,外部互聯(lián)網(wǎng)經(jīng)過硬件防火墻與內(nèi)部網(wǎng)絡(luò)連接,內(nèi)部網(wǎng)絡(luò)基于Neutron 提供虛擬網(wǎng)絡(luò)服務(wù),不同的租戶之間通過VLAN 實現(xiàn)網(wǎng)絡(luò)隔離。
云服務(wù)管理層:平臺自動管理和動態(tài)分配、部署、配置、重新配置以及回收資源,也可以自動安裝應(yīng)用。平臺可以向用戶提供虛擬基礎(chǔ)架構(gòu),用戶也可以自己定義虛擬基礎(chǔ)架構(gòu)的構(gòu)成,如服務(wù)器配置,數(shù)量,存儲類型和大小,網(wǎng)絡(luò)配置等。
部署一個OpenStack+Ceph 的私有云環(huán)境,主要分為控制節(jié)點、計算節(jié)點和存儲節(jié)點。由于OpenStack 的控制節(jié)點通常為奇數(shù)個,為了實現(xiàn)高可靠必須由3 個控制節(jié)點部署為控制集群。從資源復(fù)用、性能和效率考慮控制節(jié)點還兼充當(dāng)網(wǎng)絡(luò)節(jié)點功能。為了數(shù)據(jù)的高可靠,后端的Ceph 采用三副本模式也至少需要3 個存儲節(jié)點。為了達成虛擬機基本穩(wěn)定需求,確保可漂移,方案中至少要2 個計算節(jié)點。從網(wǎng)絡(luò)可靠的維度出發(fā),用作互聯(lián)的交換機都必須是采用兩臺相同的交換機來互備。綜述搭建一個基于OpenStack 和Ceph 的高可靠私有云平臺,至少需要8 臺服務(wù)器和4 臺交換機。
OpenStack 可以擁有全棧的網(wǎng)絡(luò)架構(gòu),通過軟件定義的方式可虛擬出安全組、交換機、路由器、負載均衡器以及防火墻等網(wǎng)元,可大大節(jié)省物理網(wǎng)絡(luò)設(shè)備的消耗。這些網(wǎng)元均可被云平臺統(tǒng)一調(diào)度,形成真正意義上的網(wǎng)絡(luò)資源池。一般情況下,虛擬路由器、虛擬防火墻、負載均衡器建議部署于控制節(jié)點,將資源利用率最大化。網(wǎng)絡(luò)調(diào)度組件會以高可用方式部署于控制節(jié)點,不僅可以加固網(wǎng)絡(luò)層面的可靠性,還可增強網(wǎng)絡(luò)負載能力[4]。
OpenStack 的網(wǎng)絡(luò)可分為管理、業(yè)務(wù)、存儲、私有等幾種流量,采用邏輯分離的原則,提高網(wǎng)絡(luò)安全性,避免網(wǎng)絡(luò)之間相互干擾,且所有承載流量的網(wǎng)絡(luò)端口建議采用兩兩綁定的方式,提高網(wǎng)絡(luò)的可用性。
Mgmt 網(wǎng)絡(luò):OpenStack 內(nèi)部組件通信,用于承載控制節(jié)點與計算、存儲節(jié)點之間管理流量,如物理資源的管理,虛擬機的遷移等,建議萬兆網(wǎng)卡。
Public 網(wǎng)絡(luò):用于外部訪問云平臺地址和各組件的訪問入口。作為控制節(jié)點集群網(wǎng)絡(luò),對外提供OpenStack Dashboard,連接到業(yè)務(wù)網(wǎng)絡(luò),建議千兆網(wǎng)卡。
Private 網(wǎng)絡(luò):用于承載業(yè)務(wù)系統(tǒng)的業(yè)務(wù)流量。連接到業(yè)務(wù)網(wǎng)絡(luò),通常配置成trunk,需要多個vlan,建議千兆網(wǎng)卡。
Storage 網(wǎng)絡(luò):Ceph 內(nèi)部管理的網(wǎng)絡(luò),用于分布式存儲的數(shù)據(jù)同步、副本復(fù)制等;當(dāng)然還有一個Ceph 對外提供的網(wǎng)絡(luò),用于其他節(jié)點訪問分布式存儲,建議萬兆網(wǎng)卡。
服務(wù)器可以采用多個網(wǎng)卡直接實現(xiàn)網(wǎng)絡(luò)隔離,當(dāng)然也可以通過同一個網(wǎng)卡,依賴虛擬交換機來實現(xiàn)隔離。外部的網(wǎng)絡(luò)劃分,可以同一個交換機上采用不同的網(wǎng)段和VLAN隔離來實現(xiàn)。經(jīng)過上面的分析我們可以得到下面的一個部署方案。見圖2、表1、表2 所示。
圖2 私有云平臺服務(wù)器和交換機組成
表1 私有云平臺節(jié)點網(wǎng)絡(luò)規(guī)劃
表2 私有云平臺網(wǎng)絡(luò)VLAN 劃分
為了方便管理員對平臺的管理和維護,需要提供統(tǒng)一的操作維護界面,通過統(tǒng)一的監(jiān)控告警信息界面,將所有的告警信息,計算、存儲和網(wǎng)絡(luò)等資源的監(jiān)控信息呈現(xiàn)。云平臺的監(jiān)控和管理可分為三個維度:
(1)管理員對租戶使用虛擬機的監(jiān)控和管理。
(2)對平臺租戶和資源使用情況的監(jiān)控和管理。
(3)對硬件資源使用的監(jiān)控和管理。
平臺監(jiān)控模塊在設(shè)計開發(fā)時就要考慮管理員可以監(jiān)控物理資源、虛擬資源的運行和使用情況,提供對處理器、內(nèi)存、磁盤和網(wǎng)絡(luò)等各種監(jiān)控指標(biāo)的監(jiān)控。同時管理員也可以通過管理平臺實現(xiàn)對虛擬機的監(jiān)控管理,掌握虛擬機操作系統(tǒng)運行狀態(tài)。對硬件和能耗的監(jiān)控與智能管理,對基礎(chǔ)架構(gòu)中潛在錯誤與故障進行判斷和預(yù)警,做到對IT資源的高效、智能的精確部署,以實現(xiàn)IT 基礎(chǔ)設(shè)施環(huán)境的穩(wěn)定運行。
本文從私有云建設(shè)的維度和需求出發(fā),提出了基于OpenStack+Ceph 搭建私有云平臺的方案。OpenStack 作為云計算中IaaS 的解決方案,結(jié)合Ceph作為云平臺分布式存儲,能夠滿足大多數(shù)應(yīng)用場景和需求,是一個成熟的方案。當(dāng)然,本文僅僅描述了OpenStack+Ceph 構(gòu)建私有云的主體方案,是一個基礎(chǔ)版本,還有很多細節(jié)、模式可以深入探討,技術(shù)上有進一步創(chuàng)新和提升的空間。