歐衛(wèi)紅 簡碧園
(廣州科技職業(yè)技術(shù)學(xué)院,廣東 廣州 510550)
OpenStack云計算平臺高可用性的研究
歐衛(wèi)紅 簡碧園
(廣州科技職業(yè)技術(shù)學(xué)院,廣東 廣州 510550)
隨著云計算技術(shù)的不斷發(fā)展,各種云計算平臺也逐漸成熟,開源云平臺OpenStack也得到了各大IT巨頭的關(guān)注和支持,發(fā)展迅速。本文論述了OpenStack云平臺的系統(tǒng)架構(gòu)和系統(tǒng)的高可用性,著重描述了系統(tǒng)中實現(xiàn)高可用性采用的兩種模式::Active/Passive(主備模式)、Active/ Active(雙活模式)。并對開放云平臺OpenStack中的各層次實現(xiàn)高可用性的實施方案進行了剖析,為搭建OpenStack云平臺時提高其可用性提供依據(jù)。
高可用性(H A);OpenStack;主備模式;雙活模式
自2006年云計算概念的提出,云計算就此形成了一個新的IT應(yīng)用領(lǐng)域,從此云計算技術(shù)也逐步在改變我們的應(yīng)用方式。云計算技術(shù)是在網(wǎng)絡(luò)環(huán)境下產(chǎn)生的,因而先天就具有開放性,開源的云計算平臺已經(jīng)成為云計算行業(yè)中一股重要的力量。OpenStack云計算平臺[1],最開始是由NASA(美國國家航空航天局)和Rackspace合作研發(fā)并發(fā)起的,并以Apache許可證授權(quán)的自由軟件和開放源代碼項目。由于它的架構(gòu)功能強大,包含了網(wǎng)絡(luò)、虛擬化、操作系統(tǒng)、服務(wù)器等各個方面,現(xiàn)已成為最炙手可熱的開源項目,各大IT巨頭都紛紛加入其中,業(yè)界普遍認(rèn)為它將是云數(shù)據(jù)中心的主要演進方向,并有可能成為云計算產(chǎn)業(yè)的事實標(biāo)準(zhǔn)。OpenStack支持目前主流的不同類型的云環(huán)境,它實施簡單且可大規(guī)模擴展,并具有豐富的、標(biāo)準(zhǔn)統(tǒng)一的云計算管理平臺,還提供一整套IaaS的解決方案。它主要的組件有:計算、網(wǎng)絡(luò)、對象存儲、塊存儲、身份認(rèn)證、鏡像服務(wù)、門戶、測量、部署編排、數(shù)據(jù)庫服務(wù)等多個組件。OpenStack云平臺具有超大規(guī)模、虛擬化、高可靠性、高通用性、高可擴展性、按需服務(wù)、高可用性、高性價比等特點,本文主要論述它的高可用性。
高可用性(High Availability),指的是在本地系統(tǒng)中單個組件發(fā)生故障的情況下,能夠繼續(xù)提供應(yīng)用服務(wù)的能力[2]。高可用性是評價一個系統(tǒng)好壞的重要標(biāo)準(zhǔn)之一。高可用性集群的主要功能是提供不間斷的服務(wù)[3]。暫時的停機會導(dǎo)致數(shù)據(jù)的丟失和災(zāi)難性的后果[4]。網(wǎng)絡(luò)應(yīng)用系統(tǒng)最好的可用性就是你有一臺服務(wù)器宕機了,而使用這些服務(wù)的客戶卻完全感覺不到,客戶的服務(wù)不會間斷、應(yīng)用數(shù)據(jù)也沒有丟失。當(dāng)服務(wù)器宕機發(fā)生后,在該機器上運行的服務(wù)肯定得做故障切換,在切換過程中有兩個主要指標(biāo):RTO(服務(wù)恢復(fù)時間)和RPO(切換時向前恢復(fù)的數(shù)據(jù)的時間長度)。當(dāng)RTO=0時就表明是即時恢復(fù),這是最好的情況,當(dāng)RTO=∞時,這是最壞的情況就是永遠(yuǎn)也恢復(fù)不了;當(dāng)RPO=0時表示使用同步的數(shù)據(jù),沒有數(shù)據(jù)丟失,而RPO>0時就表示有數(shù)據(jù)丟失。提高系統(tǒng)的高可用性就是使RTO和RPO接近或等于零。高可用性可以用下面的公式進行計算:高可用性(HA)=[1-(宕機時間)/(宕機時間+運行時間)]*100%,也可以換算成具體的宕機時間來表示,如:2個9即99%的可用性,宕機時間=(1-99%)*365天/年=3.65*24小時/年=87.6小時/年;5個9即99.999%可用性,宕機時間=(1-99.999%)*365天/年= 0.0365*24*60分鐘/年=5.265分鐘/年;現(xiàn)在最好的云計算平臺要達到11個9,可以實現(xiàn)至少幾年的時間也就宕機幾分鐘,因此,云計算平臺的可用性是非常高的。
目前高可用性都是使用冗余的組件或服務(wù)器組成集群來提供服務(wù),根據(jù)這種冗余性不同的特點可以將高可用性分為兩類:
Active/Passive(主備模式)高可用性:當(dāng)集群中只有2個節(jié)點或多個節(jié)點時,其中有一個是活動主設(shè)備而另一個或多個節(jié)點是被動的輔助設(shè)備,簡稱主備。在該模式下,系統(tǒng)由主設(shè)備向客戶提供服務(wù),但同時提供一臺或多臺冗余的備用設(shè)備,其數(shù)據(jù)與主設(shè)備同步,當(dāng)主設(shè)備故障時,備用設(shè)備被及時啟動來替代主設(shè)備提供服務(wù)。這種模式存在一定的服務(wù)恢復(fù)時間,RPO也可能不能為0,可能會丟失一些數(shù)據(jù)。
Active/Active(雙活模式)高可用性:當(dāng)集群中只有2個節(jié)點而此時這兩個節(jié)點都是活動的主設(shè)備稱雙活,而有多個節(jié)點時稱為多主。在該模式下,集群中的所有設(shè)備都同時向客戶提供服務(wù),每個節(jié)點上都運行同樣的實例,一個節(jié)點上的更新會被同步到其它所有節(jié)點上。當(dāng)其中一個節(jié)點失效時,其它的活動節(jié)點可以繼續(xù)為客戶提供服務(wù)。這種模式可以使RTO=0和RPO=0同時實現(xiàn),做到故障即時恢復(fù)和零數(shù)據(jù)丟失,可提供最高的可用性。
另一方面,高可用服務(wù)也有兩種:有狀態(tài)服務(wù),后續(xù)對服務(wù)的請求依賴于前面已經(jīng)提供的服務(wù)請求;無狀態(tài)服務(wù),各服務(wù)的請求之間沒有依賴關(guān)系,是完全獨立的。
一個完整的IAAS云平臺主要是由3部分組成:計算服務(wù),網(wǎng)絡(luò)服務(wù),存儲服務(wù)。在OpenStack中分別由Nova、Neutron、Cinder等相關(guān)服務(wù)來具體實現(xiàn),圖1是一個OpenStack云架構(gòu)圖。
圖1 OpenStack云架構(gòu)圖
OpenStack體系結(jié)構(gòu)的高可用性一般都是從兩個維度去劃分:在功能服務(wù)維度可劃分為基礎(chǔ)服務(wù)(mysql等)高可用性、計算(nova)高可用性、網(wǎng)絡(luò)(neutron)高可用性、存儲(cinder)高可用性;從物理結(jié)構(gòu)上來劃分可分為:控制節(jié)點高可用性、網(wǎng)絡(luò)節(jié)點高可用性、計算節(jié)點高可用性、基礎(chǔ)設(shè)施(電力、防火設(shè)施)高可用性。無論從什么維度去劃分,要實現(xiàn)整個系統(tǒng)的高可用性,都需要先保證在每個層面上的高可用性,然后確保在各個層面之間有效地銜接,從而實現(xiàn)整個系統(tǒng)的高可用性。
OpenStack云平臺的高可用性實現(xiàn),一個最基本的方法就是保證各工作節(jié)點是冗余的。然后根據(jù)不同工作節(jié)點上部署的服務(wù)特點和相關(guān)要求,每個節(jié)點可以使用不同的高可用模式進行工作。
(1)控制節(jié)點的高可用性
MySQL是OpenStack中controller節(jié)點中的一個基礎(chǔ)服務(wù),它作為一個開源的數(shù)據(jù)庫管理系統(tǒng),其各項技術(shù)都是非常成熟了,功能也很強大,并且已經(jīng)形成了一個完整的軟件應(yīng)用生態(tài)系統(tǒng)。但它作為一個分布式數(shù)據(jù)庫系統(tǒng),還是不夠成熟的,還需要不斷地完善。MySQL在保證系統(tǒng)的高可用性上采用傳統(tǒng)的Active/Passive(主備模式)還占相當(dāng)大的份額,目前在部署應(yīng)用時用得較多的方式是基于binlog復(fù)制的Master-Slave模式進行數(shù)據(jù)復(fù)制,使用頻率較高的有MHA(Master High Availability)方案,它可以實現(xiàn)在丟失少量數(shù)據(jù)的基礎(chǔ)上完成一定的分布式容錯和計算。淘寶網(wǎng)在數(shù)據(jù)庫方面實現(xiàn)高可用性就是采用它的改進版本TMHA。圖2是MHA的架構(gòu)圖。
圖2 主備模式高可用性架構(gòu)圖
要完全實現(xiàn)分布式容錯和計算,就必須采用Active/Active(雙活模式)。MySQL/Gelera方案采用的就是雙活模式,MySQL/Galera是一種多主同步集群,但只限于使用MySQL的InnoDB引擎,集群中任意節(jié)點的數(shù)據(jù)庫都能進行數(shù)據(jù)的讀和寫,數(shù)據(jù)庫之間的復(fù)制是基于row的并行復(fù)制,比傳統(tǒng)的MySQL Replication更加快速、高效[5]。它至少要求3臺服務(wù)器,圖3是由3臺服務(wù)器搭建成一個Pacemaker Active/Active集群。
圖3 雙活多主模式控制集群結(jié)構(gòu)圖
在上圖的集群中每個節(jié)點上都運行著API服務(wù)、內(nèi)部組件、RabbitMQ集群和鏡像消息隊列、Gelera MariaDB多主復(fù)制集群、HAProxy、Memcached等應(yīng)用組件。Pacemaker是一個集群資源管理器,帶有一個強大的依賴模式,主要負(fù)責(zé)表達群集資源之間的關(guān)系;API服務(wù)包含keystone、glance-registry、neutron-server、nova-novncproxy等服務(wù)以及相關(guān)API接口服務(wù),由Pacemaker提供虛擬的IP地址(VIP)并實現(xiàn)相互之間的依賴關(guān)系;由HAProxy提供負(fù)載均衡,并完成到相應(yīng)節(jié)點對應(yīng)API服務(wù)的映射。HAProxy組件實現(xiàn)API、MariaDB和RabbitMQ多活服務(wù)的負(fù)載均衡,從而保證系統(tǒng)的高可用性。
(2)網(wǎng)絡(luò)服務(wù)的高可用性
Openstack結(jié)構(gòu)中網(wǎng)絡(luò)節(jié)點中主要的組件及服務(wù)有:L3Agent、DHCP Agent、DHCP server和Virtual Router服務(wù)。DHCP實現(xiàn)高可用性是比較簡單的,其服務(wù)本身就支持多DHCP服務(wù)器,因此可以在多個節(jié)點上運行DHCP Agent從而實現(xiàn)DHCP server并行,然后將客戶的私有網(wǎng)絡(luò)的DHCP放在上面就行了;而Router服務(wù),要實現(xiàn)路由和外網(wǎng)的接入,這里的情況就要復(fù)雜得多,因此引入了VRRP(Virtual Router Redundancy Protocol,虛擬路由冗余協(xié)議),用一組實現(xiàn)了VRRP的路由器向客戶的私有網(wǎng)絡(luò)提供具有高可用性的虛擬路由器。
(3)存儲控制節(jié)點的高可用性
在Openstack結(jié)構(gòu)中存儲可以有多種形式,如對象存儲、塊存儲。cinder是Openstack中塊存儲管理模塊,它為運行實例提供穩(wěn)定的數(shù)據(jù)塊存儲服務(wù)。在使用共享存儲時,cinder服務(wù)只能實現(xiàn)Active/Passive(主備模式)高可用性。如要實現(xiàn)更高的可用性Active/Active(雙活)模式則只能借助第三方軟件,目前主要是利用Pacemaker來實現(xiàn)。
高可用性對于一個云平臺來說是至關(guān)重要的,Openstack云計算平臺在高可用性設(shè)計上可以整合出多種行之有效的組合,客戶在搭建自己的Openstack云計算平臺時可以根據(jù)自身的物理結(jié)構(gòu)和技術(shù)特長來選擇。目前,相當(dāng)多的社區(qū)和IT企業(yè)還在不斷努力進行改進和優(yōu)化,新技術(shù)新方法也會不斷出現(xiàn)。隨著新版本的升級,Openstack的高可用性也會得到進一步加強和完善。
[1]Documentation of Openstack[EB/OL].http://docs.openstack.org,2013-7-20.
[2]唐攀,朱志祥.基于OpenStack Sahara集群的高可用性的設(shè)計與實[J].西安文理學(xué)院學(xué)報:自然科學(xué)版1008-5564(2015)02-0055-06:55-60.
[3]張德育,張晶,劉治國.高可用性集群互連結(jié)構(gòu)研究[J].火力與指揮控制,2008,33(8):115-116,120.
[4]劉彥鋒.基于Linux下的高可用集群系統(tǒng)[D].吉林:吉林大學(xué),2004.
[5]楊軍,彭興,閆格.基于OpenStack私有云平臺構(gòu)建及高可用實現(xiàn)[J].綏化學(xué)院學(xué)報,2015(12):145-148。
Research on HighAvailability of OpenStack Cloud Computing Platform
Ou Weihong Jian Biyuan
(Guangzhou Vocational College of Science and Technology,Guangzhou 510550,Guangdong)
With the continuous development of cloud computing technology,a variety of cloud computing platforms are gradually mature.The open source cloud platform OpenStack has also gained the major IT giant's attention and support,which develops rapidly.This paper discusses the system architecture of the OpenStack cloud platform and the system's high availability,and focuses on the two modes of achieving high availability of the system:Active/Passive,Active/Active.And the implementation of the high availability of OpenStack is analyzed,providing a basis for improving the availability in the construction of the OpenStack cloud platform.
high availability(HA);OpenStack;main standby mode;double living mode
TP311.52
A
1008-6609(2016)12-0016-03
歐衛(wèi)紅(19 76-),男,湖南衡陽人,碩士,高級工程師,研究方向為計算機網(wǎng)絡(luò)技術(shù)、云計算技術(shù)和網(wǎng)絡(luò)編程。
廣東省高等教育學(xué)會高職高專云計算與大數(shù)據(jù)專業(yè)委員會科研課題,項目編號:No.G D Y JSK T 16-16。