歐衛紅 簡碧園
(廣州科技職業技術學院,廣東 廣州 510550)
OpenStack云計算平臺高可用性的研究
歐衛紅 簡碧園
(廣州科技職業技術學院,廣東 廣州 510550)
隨著云計算技術的不斷發展,各種云計算平臺也逐漸成熟,開源云平臺OpenStack也得到了各大IT巨頭的關注和支持,發展迅速。本文論述了OpenStack云平臺的系統架構和系統的高可用性,著重描述了系統中實現高可用性采用的兩種模式::Active/Passive(主備模式)、Active/ Active(雙活模式)。并對開放云平臺OpenStack中的各層次實現高可用性的實施方案進行了剖析,為搭建OpenStack云平臺時提高其可用性提供依據。
高可用性(H A);OpenStack;主備模式;雙活模式
自2006年云計算概念的提出,云計算就此形成了一個新的IT應用領域,從此云計算技術也逐步在改變我們的應用方式。云計算技術是在網絡環境下產生的,因而先天就具有開放性,開源的云計算平臺已經成為云計算行業中一股重要的力量。OpenStack云計算平臺[1],最開始是由NASA(美國國家航空航天局)和Rackspace合作研發并發起的,并以Apache許可證授權的自由軟件和開放源代碼項目。由于它的架構功能強大,包含了網絡、虛擬化、操作系統、服務器等各個方面,現已成為最炙手可熱的開源項目,各大IT巨頭都紛紛加入其中,業界普遍認為它將是云數據中心的主要演進方向,并有可能成為云計算產業的事實標準。OpenStack支持目前主流的不同類型的云環境,它實施簡單且可大規模擴展,并具有豐富的、標準統一的云計算管理平臺,還提供一整套IaaS的解決方案。它主要的組件有:計算、網絡、對象存儲、塊存儲、身份認證、鏡像服務、門戶、測量、部署編排、數據庫服務等多個組件。OpenStack云平臺具有超大規模、虛擬化、高可靠性、高通用性、高可擴展性、按需服務、高可用性、高性價比等特點,本文主要論述它的高可用性。
高可用性(High Availability),指的是在本地系統中單個組件發生故障的情況下,能夠繼續提供應用服務的能力[2]。高可用性是評價一個系統好壞的重要標準之一。高可用性集群的主要功能是提供不間斷的服務[3]。暫時的停機會導致數據的丟失和災難性的后果[4]。網絡應用系統最好的可用性就是你有一臺服務器宕機了,而使用這些服務的客戶卻完全感覺不到,客戶的服務不會間斷、應用數據也沒有丟失。當服務器宕機發生后,在該機器上運行的服務肯定得做故障切換,在切換過程中有兩個主要指標:RTO(服務恢復時間)和RPO(切換時向前恢復的數據的時間長度)。當RTO=0時就表明是即時恢復,這是最好的情況,當RTO=∞時,這是最壞的情況就是永遠也恢復不了;當RPO=0時表示使用同步的數據,沒有數據丟失,而RPO>0時就表示有數據丟失。提高系統的高可用性就是使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分鐘/年;現在最好的云計算平臺要達到11個9,可以實現至少幾年的時間也就宕機幾分鐘,因此,云計算平臺的可用性是非常高的。
目前高可用性都是使用冗余的組件或服務器組成集群來提供服務,根據這種冗余性不同的特點可以將高可用性分為兩類:
Active/Passive(主備模式)高可用性:當集群中只有2個節點或多個節點時,其中有一個是活動主設備而另一個或多個節點是被動的輔助設備,簡稱主備。在該模式下,系統由主設備向客戶提供服務,但同時提供一臺或多臺冗余的備用設備,其數據與主設備同步,當主設備故障時,備用設備被及時啟動來替代主設備提供服務。這種模式存在一定的服務恢復時間,RPO也可能不能為0,可能會丟失一些數據。
Active/Active(雙活模式)高可用性:當集群中只有2個節點而此時這兩個節點都是活動的主設備稱雙活,而有多個節點時稱為多主。在該模式下,集群中的所有設備都同時向客戶提供服務,每個節點上都運行同樣的實例,一個節點上的更新會被同步到其它所有節點上。當其中一個節點失效時,其它的活動節點可以繼續為客戶提供服務。這種模式可以使RTO=0和RPO=0同時實現,做到故障即時恢復和零數據丟失,可提供最高的可用性。
另一方面,高可用服務也有兩種:有狀態服務,后續對服務的請求依賴于前面已經提供的服務請求;無狀態服務,各服務的請求之間沒有依賴關系,是完全獨立的。
一個完整的IAAS云平臺主要是由3部分組成:計算服務,網絡服務,存儲服務。在OpenStack中分別由Nova、Neutron、Cinder等相關服務來具體實現,圖1是一個OpenStack云架構圖。

圖1 OpenStack云架構圖
OpenStack體系結構的高可用性一般都是從兩個維度去劃分:在功能服務維度可劃分為基礎服務(mysql等)高可用性、計算(nova)高可用性、網絡(neutron)高可用性、存儲(cinder)高可用性;從物理結構上來劃分可分為:控制節點高可用性、網絡節點高可用性、計算節點高可用性、基礎設施(電力、防火設施)高可用性。無論從什么維度去劃分,要實現整個系統的高可用性,都需要先保證在每個層面上的高可用性,然后確保在各個層面之間有效地銜接,從而實現整個系統的高可用性。
OpenStack云平臺的高可用性實現,一個最基本的方法就是保證各工作節點是冗余的。然后根據不同工作節點上部署的服務特點和相關要求,每個節點可以使用不同的高可用模式進行工作。
(1)控制節點的高可用性
MySQL是OpenStack中controller節點中的一個基礎服務,它作為一個開源的數據庫管理系統,其各項技術都是非常成熟了,功能也很強大,并且已經形成了一個完整的軟件應用生態系統。但它作為一個分布式數據庫系統,還是不夠成熟的,還需要不斷地完善。MySQL在保證系統的高可用性上采用傳統的Active/Passive(主備模式)還占相當大的份額,目前在部署應用時用得較多的方式是基于binlog復制的Master-Slave模式進行數據復制,使用頻率較高的有MHA(Master High Availability)方案,它可以實現在丟失少量數據的基礎上完成一定的分布式容錯和計算。淘寶網在數據庫方面實現高可用性就是采用它的改進版本TMHA。圖2是MHA的架構圖。

圖2 主備模式高可用性架構圖
要完全實現分布式容錯和計算,就必須采用Active/Active(雙活模式)。MySQL/Gelera方案采用的就是雙活模式,MySQL/Galera是一種多主同步集群,但只限于使用MySQL的InnoDB引擎,集群中任意節點的數據庫都能進行數據的讀和寫,數據庫之間的復制是基于row的并行復制,比傳統的MySQL Replication更加快速、高效[5]。它至少要求3臺服務器,圖3是由3臺服務器搭建成一個Pacemaker Active/Active集群。

圖3 雙活多主模式控制集群結構圖
在上圖的集群中每個節點上都運行著API服務、內部組件、RabbitMQ集群和鏡像消息隊列、Gelera MariaDB多主復制集群、HAProxy、Memcached等應用組件。Pacemaker是一個集群資源管理器,帶有一個強大的依賴模式,主要負責表達群集資源之間的關系;API服務包含keystone、glance-registry、neutron-server、nova-novncproxy等服務以及相關API接口服務,由Pacemaker提供虛擬的IP地址(VIP)并實現相互之間的依賴關系;由HAProxy提供負載均衡,并完成到相應節點對應API服務的映射。HAProxy組件實現API、MariaDB和RabbitMQ多活服務的負載均衡,從而保證系統的高可用性。
(2)網絡服務的高可用性
Openstack結構中網絡節點中主要的組件及服務有:L3Agent、DHCP Agent、DHCP server和Virtual Router服務。DHCP實現高可用性是比較簡單的,其服務本身就支持多DHCP服務器,因此可以在多個節點上運行DHCP Agent從而實現DHCP server并行,然后將客戶的私有網絡的DHCP放在上面就行了;而Router服務,要實現路由和外網的接入,這里的情況就要復雜得多,因此引入了VRRP(Virtual Router Redundancy Protocol,虛擬路由冗余協議),用一組實現了VRRP的路由器向客戶的私有網絡提供具有高可用性的虛擬路由器。
(3)存儲控制節點的高可用性
在Openstack結構中存儲可以有多種形式,如對象存儲、塊存儲。cinder是Openstack中塊存儲管理模塊,它為運行實例提供穩定的數據塊存儲服務。在使用共享存儲時,cinder服務只能實現Active/Passive(主備模式)高可用性。如要實現更高的可用性Active/Active(雙活)模式則只能借助第三方軟件,目前主要是利用Pacemaker來實現。
高可用性對于一個云平臺來說是至關重要的,Openstack云計算平臺在高可用性設計上可以整合出多種行之有效的組合,客戶在搭建自己的Openstack云計算平臺時可以根據自身的物理結構和技術特長來選擇。目前,相當多的社區和IT企業還在不斷努力進行改進和優化,新技術新方法也會不斷出現。隨著新版本的升級,Openstack的高可用性也會得到進一步加強和完善。
[1]Documentation of Openstack[EB/OL].http://docs.openstack.org,2013-7-20.
[2]唐攀,朱志祥.基于OpenStack Sahara集群的高可用性的設計與實[J].西安文理學院學報:自然科學版1008-5564(2015)02-0055-06:55-60.
[3]張德育,張晶,劉治國.高可用性集群互連結構研究[J].火力與指揮控制,2008,33(8):115-116,120.
[4]劉彥鋒.基于Linux下的高可用集群系統[D].吉林:吉林大學,2004.
[5]楊軍,彭興,閆格.基于OpenStack私有云平臺構建及高可用實現[J].綏化學院學報,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
歐衛紅(19 76-),男,湖南衡陽人,碩士,高級工程師,研究方向為計算機網絡技術、云計算技術和網絡編程。
廣東省高等教育學會高職高專云計算與大數據專業委員會科研課題,項目編號:No.G D Y JSK T 16-16。