劉丹,李紀(jì)成,隋欣,2,王歡,李莉
(1.長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院,長春 130022;2.吉林省教育學(xué)院職業(yè)與成人教育教研培訓(xùn)學(xué)院,長春 130022)
基于Openstack私有云平臺的高可用性研究
劉丹1,李紀(jì)成1,隋欣1,2,王歡1,李莉1
(1.長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院,長春 130022;2.吉林省教育學(xué)院職業(yè)與成人教育教研培訓(xùn)學(xué)院,長春 130022)
隨著信息技術(shù)的發(fā)展,傳統(tǒng)的并行計算和網(wǎng)格計算等計算模式逐漸發(fā)展成為云計算。當(dāng)前云計算服務(wù)應(yīng)用于各行各業(yè)。企業(yè)也可以搭建自己的私有云,為內(nèi)部員工提供更加便捷的服務(wù)支持。云服務(wù)的可靠性是一個值得討論的問題。針對OpenStack私有云的高可用性進行分析,將其服務(wù)狀態(tài)分為有狀態(tài)服務(wù)和無狀態(tài)服務(wù),設(shè)計私有云平臺各個模塊的高可用方案,實現(xiàn)Openstack私有云平臺的高可用性。
OpenStack;私有云;服務(wù)狀態(tài)
隨著當(dāng)前數(shù)據(jù)量的急劇增長,網(wǎng)絡(luò)帶寬與物理硬件的提升以及虛擬化技術(shù)的飛速發(fā)展,使得云計算應(yīng)用的不斷深入,其提供的服務(wù)已應(yīng)用于各個產(chǎn)業(yè)。在私有云平臺構(gòu)建過程中,應(yīng)充分考慮其高可用性。高可用性主要是為了防止系統(tǒng)故障和數(shù)據(jù)丟失而設(shè)計,系統(tǒng)故障會導(dǎo)致面向客戶的服務(wù)無法達到正常的工作時間、或者低于服務(wù)承諾的平均無故障時間。本文針對OpenStack私有云平臺的高可用性進行討論。
OpenStack云平臺通過對計算、存儲及網(wǎng)絡(luò)資源的整合,提供給用戶更便捷的服務(wù)?!八接性啤币呀?jīng)廣泛應(yīng)用于政府、大型企業(yè)等。為支持大規(guī)模用戶的高頻訪問,要求系統(tǒng)結(jié)構(gòu)、計算資源、網(wǎng)絡(luò)資源等都應(yīng)具有一定的可用性,用來確保整個系統(tǒng)平臺穩(wěn)定的運行。OpenStack云平臺由計算節(jié)點、網(wǎng)絡(luò)節(jié)點及控制節(jié)點等核心部分構(gòu)成。因此,本文將針對這幾個模塊的高可用性進行討論,分析Nova-network、消息隊列以及數(shù)據(jù)庫等幾項核心模塊。
1.1 網(wǎng)絡(luò)配置的高可用性
OpenStack的網(wǎng)絡(luò)模塊包括nova-network和neutron兩種。本文選用nova-network作為網(wǎng)絡(luò)模塊。Nova-network提供三種網(wǎng)絡(luò)模式:Flat模式、FlatDHCP模式以及VLAN模式。在網(wǎng)絡(luò)部署時,常用的部署方案是單點網(wǎng)絡(luò)結(jié)構(gòu)。單點部署方案可以將網(wǎng)絡(luò)集成到控制節(jié)點中,也可以單獨用一個節(jié)點來提供網(wǎng)絡(luò),負(fù)責(zé)所有與其相連接的Compute節(jié)點的網(wǎng)絡(luò)供應(yīng)。其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示:
圖1 單點網(wǎng)絡(luò)結(jié)構(gòu)圖
Network節(jié)點提供了實例,實例與外界之間的網(wǎng)絡(luò)通信,并且能夠?qū)崿F(xiàn)網(wǎng)絡(luò)地址轉(zhuǎn)換與動態(tài)主機配置協(xié)議功能。因此,網(wǎng)絡(luò)節(jié)點的故障會影響到整個平臺的網(wǎng)絡(luò)中斷,造成所有的服務(wù)都失效。為避免單點故障,首先要對Nova-network進行高可用配置。
對Nova-network進行高可用(HA)的配置,可將網(wǎng)絡(luò)節(jié)點進行主備冗余配置。同時,配置兩臺服務(wù)器作為網(wǎng)絡(luò)節(jié)點,構(gòu)成“主從結(jié)構(gòu)”,即一臺“主服務(wù)器”master,一臺或多臺“從服務(wù)器”backup。如果backup服務(wù)器一段時間內(nèi)沒有收到master信號,就判斷master故障,由backup接管網(wǎng)絡(luò)服務(wù)。其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示:
圖2 主備冗余網(wǎng)絡(luò)結(jié)構(gòu)圖
當(dāng)主備冗余在發(fā)生故障的時候,主從服務(wù)器間發(fā)生切換。切換的過程中,對網(wǎng)絡(luò)會產(chǎn)生一定的影響。因此,該網(wǎng)絡(luò)配置方案不是網(wǎng)絡(luò)高可用的最優(yōu)方案。
根據(jù)上述分析結(jié)果,在實驗過程中,將HA網(wǎng)絡(luò)配置方案進行改進。將Nova-network模塊集成到計算節(jié)點中,由每個計算節(jié)點自身的Nova-network來提供網(wǎng)絡(luò),這樣所有的計算節(jié)點都可以通過Nova-network來與外界進行網(wǎng)絡(luò)通信,而且所有的計算節(jié)點中的網(wǎng)絡(luò)模塊,也將形成一個Flat模式的二層網(wǎng)絡(luò),所有計算節(jié)點中實例都可以通過這個扁平的二層網(wǎng)絡(luò)進行通信。其網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示:
圖3 二層網(wǎng)絡(luò)結(jié)構(gòu)圖
1.2 網(wǎng)絡(luò)通信的高可用性
OpenStack云平臺的各模塊間的通信是通過消息隊列的協(xié)助完成的。因此,消息隊列的高可用性對云平臺的高可用性有較大影響。消息隊列高可用性可分為集群、鏡像模式等方式。
在默認(rèn)集群模式中,隊列的消息僅在一個節(jié)點存在,主副兩個節(jié)點中有相同的元數(shù)據(jù)。消息每次進入主節(jié)點的隊列中,會從副節(jié)點經(jīng)過被需要使用的消費者拉取,也就是說每次消息都會在主副節(jié)點間進行傳輸,盡量連接每個節(jié)點去獲取隊列中的消息。但當(dāng)主節(jié)點發(fā)生故障時,如果主節(jié)點的消息還未被使用(既沒有消費者拉取也沒有傳遞到其他節(jié)點),該消息就會丟失。
在鏡像模式中,需要將消息隊列做成鏡像隊列,并將其分發(fā)到多個節(jié)點中,這種模式與上述默認(rèn)集群模式不同。該模式下,消息不需要被動的被消費者拉取,而是主動的在所有的鏡像節(jié)點上同步。鏡像模式分為master節(jié)點和slave節(jié)點。所有的消息都會經(jīng)過master向其他slave節(jié)點發(fā)送以確保消息同步。當(dāng)消息消費以后,master節(jié)點會對消費者進行ack確認(rèn),通過后才會刪除消息。若master節(jié)點故障則系統(tǒng)會選擇其中一個salve節(jié)點作為master繼續(xù)維持隊列通信。這種方案也有一定的弊端。在不考慮集群消耗的情況下,如果同時有大量消息進入鏡像隊列,這種消息同步的方式會占用很大的網(wǎng)絡(luò)帶寬造成網(wǎng)絡(luò)擁堵。
上述分析可得,無論是默認(rèn)集群模式還是鏡像模式,都有不足之處。在構(gòu)造高可靠性的云平臺時,應(yīng)將以上兩種模式相結(jié)合,設(shè)計消息隊列的高可用集群。先實現(xiàn)默認(rèn)集群模式,以此為基礎(chǔ)配置鏡像模式來實現(xiàn)網(wǎng)絡(luò)通信的高可用。
1.3 數(shù)據(jù)庫的高可用性
OpenStack中的數(shù)據(jù)庫存儲包括各個模塊的狀態(tài)信息、配置信息以及云主機的實例的相關(guān)信息。數(shù)據(jù)庫的可靠性是保障整個系統(tǒng)穩(wěn)定的基礎(chǔ)。如果出現(xiàn)數(shù)據(jù)丟失,OpenStack云平臺將會造成無法預(yù)知的后果,所以數(shù)據(jù)庫的高可用在企業(yè)應(yīng)用中是必不可少的一部分。
數(shù)據(jù)庫高可用方案可采用MySQL集群或主從數(shù)據(jù)庫來實現(xiàn)。當(dāng)高可用性需要達到99.9%級別時,通常會選擇MySQL復(fù)制;而99.99%級別則需要使用NDB集群來支撐。NDB作為數(shù)據(jù)節(jié)點存儲數(shù)據(jù),統(tǒng)一由管理節(jié)點進行管理。還有一個用來訪問數(shù)據(jù)的節(jié)點稱之為SQL節(jié)點。而整個高可用性是依賴數(shù)據(jù)節(jié)點中,數(shù)據(jù)進行多副本存儲。這樣在出現(xiàn)故障的時候才能保證數(shù)據(jù)的完整性,從而保障了數(shù)據(jù)庫的高可用。MySQL復(fù)制則大多依靠MySQL Master-Master Replication Manager來實現(xiàn),使用多個IP結(jié)合多個數(shù)據(jù)節(jié)點包含master和slave。一旦遇到某個數(shù)據(jù)節(jié)點fail,檢測不到心跳、服務(wù)器的狀態(tài),監(jiān)測模塊會將服務(wù)切換到一個正常運行的備用節(jié)點上。在正常運行的過程中,主服務(wù)器中每次數(shù)據(jù)有變化時都會寫入日志,從服務(wù)器連接到主服務(wù)器會根據(jù)日志讀取到的最后一次數(shù)據(jù)更新,來保持所有的服務(wù)器數(shù)據(jù)的一致性。
基于數(shù)據(jù)庫的主從復(fù)制管理集群,包含主節(jié)點、備用節(jié)點及監(jiān)控節(jié)點。所有的節(jié)點都配置在一個IP資源池。主節(jié)點在進行任何數(shù)據(jù)庫的讀寫操作時,利用數(shù)據(jù)庫的主從復(fù)制,同時更新備用節(jié)點的數(shù)據(jù)庫,以此保證主備數(shù)據(jù)一致。整個系統(tǒng)運行過程中,由監(jiān)控節(jié)點負(fù)責(zé)監(jiān)控主節(jié)點上各項服務(wù)是否可用,同時觸發(fā)主備節(jié)點上的IP地址轉(zhuǎn)換。當(dāng)主節(jié)點發(fā)生故障,備用節(jié)點會自動負(fù)載所有的服務(wù),以保證整個系統(tǒng)的穩(wěn)定運行。
基于以上對OpenStack私有云高可用性分析,在實驗過程中,采用以下高可用方案:在云平臺架構(gòu)中,應(yīng)設(shè)置兩個私有云控制器。這樣可以避免因單個節(jié)點壓力造成控制節(jié)點宕機。而且當(dāng)故障發(fā)生時,自動切換也不會有很大延遲。從而保證整個體統(tǒng)穩(wěn)定運行。具體私有云高可用系統(tǒng)架構(gòu)如圖4所示:
圖4 OpenStack私有云的高可用架構(gòu)圖
在私有云平臺中,網(wǎng)絡(luò)模塊集成到每個計算節(jié)點中。這是為了避免由于網(wǎng)絡(luò)節(jié)點宕機,所造成的系統(tǒng)網(wǎng)絡(luò)中斷。在云平臺架構(gòu)中,配置雙控制器,可以保證平臺的認(rèn)證、鏡像及通信等服務(wù)的穩(wěn)定運行。在提供服務(wù)的控制器發(fā)生故障時,系統(tǒng)將進行自動檢測,并切換到另外一個控制器。整個切換過程只會有短暫的延遲,對云主機的使用沒有任何影響,確保了云平臺的可靠性及高可用性。
3.1 網(wǎng)絡(luò)配置方案
在OpenStack私有云平臺架構(gòu)建立中,為了確保其高可用性。在實驗過程中,要盡量避免單點故障。因此,架構(gòu)設(shè)計時,每臺服務(wù)器應(yīng)使用雙網(wǎng)卡機制,并且配置在兩個交換機上。這樣可以保證一個網(wǎng)卡故障或者交換機故障,整個系統(tǒng)的網(wǎng)絡(luò)不會癱瘓。其網(wǎng)絡(luò)設(shè)計如圖5所示。
圖5 網(wǎng)絡(luò)設(shè)計結(jié)構(gòu)圖
在使用雙網(wǎng)卡及兩個交換機基礎(chǔ)上,需要對網(wǎng)卡進行設(shè)置以確保網(wǎng)絡(luò)通暢。為此,對每個物理服務(wù)器都進行雙網(wǎng)卡綁定。所謂雙網(wǎng)卡綁定就是利用ifenslave,將雙物理網(wǎng)卡綁定在虛擬網(wǎng)卡bond0上。實現(xiàn)了網(wǎng)絡(luò)的高可用性。其主要配置過程:
OpenStack云平臺中的全部節(jié)點都按照上述配置方案進行部署。無故障運行模式下,兩張網(wǎng)卡同時負(fù)責(zé)網(wǎng)絡(luò)通信。當(dāng)單張網(wǎng)卡出現(xiàn)故障時,另一張網(wǎng)卡將會承擔(dān)后續(xù)網(wǎng)絡(luò)的通訊任務(wù)。此時,經(jīng)測試驗證,bond0的傳輸速率是原單張網(wǎng)卡的兩倍。在實驗中,將兩個萬兆物理網(wǎng)卡綁到一個bond0上,bond0的傳輸速度是20000Mb/s,正好是單張網(wǎng)卡的兩倍。其測試過程:
3.2 有狀態(tài)服務(wù)高可用實現(xiàn)
實驗過程中,云平臺中的數(shù)據(jù)庫采用Mysql。為了實現(xiàn)數(shù)據(jù)庫高可用性,將控制節(jié)點的Mysql配置成主從復(fù)制,從而實現(xiàn)了每一步數(shù)據(jù)庫相關(guān)的操作都分別在兩個數(shù)據(jù)庫中執(zhí)行,確保了數(shù)據(jù)的完整性和Mysql的高可用;通過配置keepalive的虛擬IP,實現(xiàn)數(shù)據(jù)庫發(fā)生故障時,可以進行自動切換,這樣進一步地保證了數(shù)據(jù)庫的完整性。其主要配置過程:
在實驗過程中,消息隊列RabbitMQ的broker服務(wù)應(yīng)通過雙控制節(jié)點構(gòu)建,即Erlang節(jié)點的邏輯集合。這樣的配置方式,可以避免任意節(jié)點的單點故障導(dǎo)致消息隊列服務(wù)失效。部署RabbitMQ broker服務(wù)的關(guān)鍵是確保雙節(jié)點的Erlang cookie文件一致。因此,在配置前應(yīng)暫停所有節(jié)點的RabbitMQ服務(wù),將第一臺節(jié)點中Cookie文件復(fù)制到其它節(jié)點。然后再啟動全部節(jié)點的RabbitMQ,確保所有節(jié)點度處于運行狀態(tài)。最后,停掉其余Erlang上的RabbitMQ的應(yīng)用,將其加入到集群。其配置過程如圖6所示。之后,在Nova.conf配置文件中,Rabbit-MQ HA集群的連接地址及端口需進行設(shè)定,實現(xiàn)消息隊列的高可用性。
圖6 消息隊列構(gòu)建過程
3.3 無狀態(tài)服務(wù)高可用實現(xiàn)
云平臺無狀態(tài)服務(wù)的高可用性,通過keepalived實現(xiàn)?;谔摂M路由冗余協(xié)議協(xié)議(即vrrp協(xié)議),將多臺提供相同功能的機器構(gòu)成一個組。每組能包含一個master和多個backup。外提供服務(wù)的虛擬IP由master負(fù)責(zé)提供,當(dāng)backup收不到vrrp包時就認(rèn)為master宕機,通過優(yōu)先級進行調(diào)度將backup變成master繼續(xù)使用,用以確保云平臺的高可用。在實驗過程中,將兩臺控制節(jié)點上安裝keepalived。其主要配置過程:
其中,vrrp_script用來做健康檢查。當(dāng)檢查失敗會將vrrp_instance的值減少相應(yīng)的weigh值,并且將兩個控制節(jié)點的state全都設(shè)置成BACKUP。這樣可以防止當(dāng)master節(jié)點故障消除后,立即將BACKUP機器的服務(wù)轉(zhuǎn)接過來,所造成的對系統(tǒng)穩(wěn)定性的影響。Virtual_ipaddress中對虛擬IP進行了設(shè)置,兩個控制節(jié)點IP都應(yīng)映射到此IP。當(dāng)虛擬IP所在的節(jié)點宕機,虛擬IP會自動切換到另一個控制節(jié)點上,接管原來的所有服務(wù)。
當(dāng)所有服務(wù)都正常啟動之后,通過查看Openstack的Service列表,可以看出整個云平臺的服務(wù)信息與狀態(tài)。如圖7所示:
圖7 云平臺Service列表圖
從前文分析可得,實驗過程中整個Openstack私有云平臺包含兩個控制節(jié)點(即controller1與controller2)與多個計算節(jié)點,這兩個控制節(jié)點中包含相同服務(wù),共同來管理整個私有云平臺。通過上述的搭建方式實現(xiàn)云平臺的高可用性。
本文針對OpenStack私有云平臺的高可用性進行了討論。在多種服務(wù)狀態(tài)下,通過對OpenStack云平臺的nova-network、消息隊列以及數(shù)據(jù)庫等核心模塊的研究分析,設(shè)計了私有云平臺各個模塊的高可用方案。最終實現(xiàn)私有云平臺的高可用性,提高了云平臺的可靠性。
[1]王霄飛.基于OpenStack構(gòu)建私有云計算平臺[D].廣州:華南理工大學(xué),2012.
[2]戢友編著.OpenStack開源云.王者歸來[M].清華大學(xué)出版社,2014.
[3]陳伯龍,程志鵬,張杰編著.云計算與OpenStack虛擬機Nova篇[M].電子工業(yè)出版社,2013.
[4]劉飛宇.OpenStack云平臺下的虛擬機監(jiān)控與控制的研究與實現(xiàn)[D].成都:電子科技大學(xué),2013.
[5]白瑞俊,劉光明,張瑞虹,等.虛擬化技術(shù)OpenStack在高性能計算集群上的應(yīng)用與研究[J].計算機光盤軟件與應(yīng)用,2013,16(15):72-74.
[6]汪楠.基于OpenStack云平臺的計算資源動態(tài)調(diào)度及管理[D].大連:大連理工大學(xué),2013.
[7]Openstack部署工具總結(jié),http://www.chenshake.com/ openstack-deployment-tool-summary/
[8]黃志成.開源云計算OpenStack在高校計算機機房中的應(yīng)用研究[J].計算機與現(xiàn)代化,2013(3):204-206.
[9]趙少卡,李立耀,凌曉,等.基于OpenStack的清華云平臺構(gòu)建與調(diào)度方案設(shè)計[J].計算機應(yīng)用,2013,33(12):3335-3338,3349.
Research on High Availability of Openstack Private Cloud Platform
LIU Dan1,LI Jicheng1,SUI Xin1,2,WANG Huan1,LI Li1
(1.School of Computer Science and Technology,Changchun University of Science and Technology,ChangChun 130022;2.School of Vocational and Adult Education,Jinlin Provincial Institute of Education,ChangChun 130022)
With the development of information technology,the traditional parallel computing and grid computing model has been gradually developed into cloud computing.The current cloud computing services are used in all walks of life. The enterprises are supported to build their own cloud privately for providing internal employees with high quality and convenient computing service.The reliability question of its service is worth out while disscussing.This paper analyzes the high availability of OpenStack private cloud,divides the service status into stateful and stateless.The paper also designs the high availability scheme to each module of private cloud platform,and realizes the high availability of Open-Stack private cloud platform.
OpenStack;private cloud service;service status
P315.69
A
1672-9870(2016)06-0085-05
2016-08-26
劉丹(1983-),女,博士研究生,講師,E-mail:ld_1983@hotmail.com
李莉(1963-),女,博士,教授,博士生導(dǎo)師,E-mail:ll@cust.edu.cn