閆映東 文成玉
摘 要:文章針對中小企業(yè)云平臺在單控制節(jié)點(diǎn)易導(dǎo)致單節(jié)點(diǎn)故障和網(wǎng)絡(luò)性能及安全的問題,提出了一種基于Keepalived+多網(wǎng)卡綁定的解決方案以實(shí)現(xiàn)OpenStack云平臺的高可用。該方案將主從式雙機(jī)熱備技術(shù)和集群技術(shù)相融合,并通過多網(wǎng)卡綁定技術(shù)提高物理網(wǎng)絡(luò)的負(fù)載和容錯率實(shí)現(xiàn)OpenStack云平臺的高可用性。實(shí)驗(yàn)證明,在一臺控制節(jié)點(diǎn)或鏈路中斷的情況下,OpenStack云平臺仍然能夠穩(wěn)定運(yùn)行,該高可用性方案具有可行性。
關(guān)鍵詞:高可用;Keepalived;鏈路綁定
隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展,中小企業(yè)私有化云平臺建設(shè)日益迫切,用戶對云平臺在穩(wěn)定方面提出了更高的要求。保證云服務(wù)的高可用性,就是保證用戶業(yè)務(wù)的連續(xù)性。企業(yè)自身的私有云出現(xiàn)問題,則會導(dǎo)致公司運(yùn)營癱瘓,損失將會更大。中小企業(yè)的私有云更需要穩(wěn)定可靠,對私有云高可用研究更加迫切。
近年來,針對不同OpenStack云平臺提出了多種系統(tǒng)高可用解決方案。有控制節(jié)點(diǎn)采用Keepalived+haproxy實(shí)現(xiàn)平臺的雙活模式高可用[1],也有采用pacemaker+corosysnc實(shí)現(xiàn)主從模式高可用[2]。這些方案雖然實(shí)現(xiàn)了云平臺控制節(jié)點(diǎn)的高可用,但是在物理網(wǎng)絡(luò)方面和存儲方面的高可用有很多不足。對于中小企業(yè)來說,后期運(yùn)維成本過高。
為了實(shí)現(xiàn)OpenStack云平臺的高可用性,從硬件、軟件和策略等多方面進(jìn)行分析和設(shè)計(jì),提出了一套基于Keepalived+多網(wǎng)卡綁的解決方案提高OpenStack云平臺的高可用性。
1 云平臺高可用性基本原理
云計(jì)算分為SaaS,PaaS,IaaS三大服務(wù)模式,即軟件即服務(wù)、平臺即服務(wù)和基礎(chǔ)即服務(wù)。OpenStack是由RackSpace和NASA共同開發(fā)的云計(jì)算平臺,幫助服務(wù)商和企業(yè)內(nèi)部實(shí)現(xiàn)類似亞馬遜EC2和S3的云基礎(chǔ)架構(gòu)服務(wù),屬于IAAS服務(wù)模式。
高可用性(High Availability,HA)用來描述一個系統(tǒng)經(jīng)過專門的設(shè)計(jì),以減少停工時(shí)間,而保持其服務(wù)的高度可用性[3]。
HA分為兩類:(1) Active/Passive HA,稱為主備集群模式,備用節(jié)點(diǎn)處于監(jiān)聽和備份模式,故障發(fā)生時(shí)及時(shí)切換,替代主設(shè)備提供服務(wù)。(2) Active/Active HA,稱為雙主集群模式,集群中節(jié)點(diǎn)互備互援,每個節(jié)點(diǎn)都提供服務(wù)[4]。
2 高可用云平臺設(shè)計(jì)與實(shí)現(xiàn)
控制節(jié)點(diǎn)高可用集群提供控制節(jié)點(diǎn)中各個服務(wù)的高可用性,保障對整個集群管理能力的正常運(yùn)行。
2.1 控制節(jié)點(diǎn)高可用集群
控制節(jié)點(diǎn)中所運(yùn)行的OpenStack服務(wù)都是無狀態(tài)的,各個組件之間只依賴消息隊(duì)列進(jìn)行通信[3]。OpenStack的keystone,glance,nova,neutron和horizon通過keealived提供虛擬IP (VIP)來實(shí)現(xiàn)高可用,并對外提供服務(wù)。Mariadb和Rabbitmq直接在兩臺控制節(jié)點(diǎn)上搭建雙主集群。故對控制節(jié)點(diǎn)高可用集群采用雙機(jī)熱備模式。
2.1.1 Keepalived
Keepalived是一個實(shí)現(xiàn)多機(jī)熱備的軟件。通過利用Keepalived所提供的的浮動IP功能,就可以簡單實(shí)現(xiàn)一個多機(jī)熱備高可用功能。主節(jié)點(diǎn)和備節(jié)點(diǎn)對外表現(xiàn)為一個虛擬IP,主節(jié)點(diǎn)會發(fā)送特定的消息給備節(jié)點(diǎn),當(dāng)備節(jié)點(diǎn)收不到這個消息時(shí)(此時(shí)主節(jié)點(diǎn)不可用),備節(jié)點(diǎn)會接管虛擬IP繼續(xù)提供服務(wù)[5]。
首先,在主節(jié)點(diǎn)和備節(jié)點(diǎn)安裝Keepalived軟件及相關(guān)依賴包。在兩個節(jié)點(diǎn)中的Keepalived.conf文件中添加和修改選項(xiàng),確定VIP。格式如下:
virtual_ipaddress {VIP的具體IP地址)
在主節(jié)點(diǎn)中確定主節(jié)點(diǎn)和優(yōu)先級,在備用節(jié)點(diǎn)中確定備用節(jié)點(diǎn)和優(yōu)先級,格式如下:
vrrp_instance VI_1{
state MASTER(備用節(jié)點(diǎn)改為:BACKUP)
priority 100(備用節(jié)點(diǎn)改為:90)
)
完成配置之后,在數(shù)據(jù)庫和消息隊(duì)列集群搭建完成之后,在配置文件加入關(guān)于數(shù)據(jù)庫和消息隊(duì)列的配置選項(xiàng)。
2.1.2 數(shù)據(jù)庫和消息隊(duì)列的雙主集群
Mariadb雙活集群中的每一臺節(jié)點(diǎn)既是Master,又是另一節(jié)點(diǎn)的Slave。這樣,任何一方所做的變更,都會通過復(fù)制應(yīng)用到另外一方的數(shù)據(jù)庫中。在兩個節(jié)點(diǎn)的配置文件中修改或者增加這些配置:server-id;啟用中繼日志和二進(jìn)制日志;修改起始值和步長,以避免在Mariadb自動為INSERT語句選擇互相沖突的值;在Mariadb的命令行中執(zhí)行如下命令:創(chuàng)建有復(fù)制權(quán)限的用戶。當(dāng)上述配置完成后,相互指定對方為自己的主服務(wù)器,并啟動服務(wù)器復(fù)制進(jìn)程。
Rabbitmq集群模式大概分為3種:單一模式、普通模式和鏡像模式。本設(shè)計(jì)中的集群模式采用鏡像模式,可以解決普通模式出現(xiàn)的問題(當(dāng)主節(jié)點(diǎn)出現(xiàn)故障,功能就無法實(shí)現(xiàn))。同時(shí)與普通模式的不同之處在于消息實(shí)體會主動在鏡像節(jié)點(diǎn)間同步,而不是用戶取數(shù)據(jù)時(shí)臨時(shí)拉取。
集群中分為兩類節(jié)點(diǎn):內(nèi)存節(jié)點(diǎn)和磁盤節(jié)點(diǎn)。內(nèi)存節(jié)點(diǎn),一般只保存狀態(tài)到內(nèi)存中,這樣執(zhí)行效率高,但是不易保存。磁盤節(jié)點(diǎn),保存狀態(tài)到內(nèi)存和磁盤中,這樣更可靠。本設(shè)計(jì)采用節(jié)點(diǎn)為磁盤節(jié)點(diǎn)的鏡像模式集群。
2.2 物理網(wǎng)絡(luò)的高可用
平臺系統(tǒng)中的物理網(wǎng)絡(luò)是由網(wǎng)卡、網(wǎng)線和交換機(jī)等構(gòu)成的。網(wǎng)卡作為節(jié)點(diǎn)之間數(shù)據(jù)交換的唯一出口,節(jié)點(diǎn)上的網(wǎng)卡損壞、網(wǎng)卡失效、網(wǎng)絡(luò)電纜中斷,都會導(dǎo)致節(jié)點(diǎn)之間的連接失敗,造成云平臺系統(tǒng)癱瘓。多網(wǎng)卡鏈路綁定策略(Mulitiple Network Channel Bonding,MNCB)能夠提高物理網(wǎng)絡(luò)的高可用性。通過網(wǎng)卡綁定,將多塊網(wǎng)卡虛擬成一塊邏輯網(wǎng)卡進(jìn)行工作,自動分擔(dān)負(fù)載。將各網(wǎng)卡合成在一起為各個網(wǎng)段共同提供高帶寬的服務(wù)。當(dāng)其中一塊物理網(wǎng)卡出現(xiàn)故障時(shí),其他物理網(wǎng)卡可以快速承擔(dān)故障網(wǎng)卡的工作,保障整個工作流程的延續(xù),既可以提升主機(jī)的網(wǎng)絡(luò)吞吐量,又提供了網(wǎng)絡(luò)的高可用性[6]。
2.3 測試
本文采用2臺控制節(jié)點(diǎn),2臺計(jì)算節(jié)點(diǎn)。各節(jié)點(diǎn)配置雙網(wǎng)卡,管理網(wǎng)絡(luò)為192.168.0.0/24。所有節(jié)點(diǎn)安裝的操作系統(tǒng)為Centos7.1-Server,OpenStack版本為Kilo。
對該云平臺的高可用性性能進(jìn)行測試,具體測試步驟及結(jié)果如下。
(1)關(guān)閉任意一臺控制節(jié)點(diǎn),測試確認(rèn)控制節(jié)點(diǎn)相關(guān)服務(wù)組件、mariadb和rabbitmq均能提供正常服務(wù),然后測試計(jì)算節(jié)點(diǎn)和存儲節(jié)點(diǎn)。
(2)斷開云平臺任一節(jié)點(diǎn)的任意一條網(wǎng)線,此時(shí)OpenStack云平臺能正常工作。
通過以上2個實(shí)驗(yàn)得出,此高可用性方案可以對單點(diǎn)故障進(jìn)行檢測和處理,實(shí)現(xiàn)了OpenStack云平臺的高可用服務(wù)。
3 結(jié)語
采用了Ke ep alived模式設(shè)計(jì)的控制節(jié)點(diǎn)集群為OpenStack云平臺實(shí)現(xiàn)服務(wù)的高可用提供便利。隨著公司的業(yè)務(wù)發(fā)展,OpenStack云平臺規(guī)模也會擴(kuò)大,其中的虛擬機(jī)量和數(shù)據(jù)量都會增加。如果加入Ceph集群的高擴(kuò)展性并在后期增加osd和節(jié)點(diǎn),可以更好地提高OpenStack云平臺的高可用性。
[參考文獻(xiàn)]
[1]李興,羅華永,陳星.基于OpenStack架構(gòu)上的高可用實(shí)現(xiàn)[J]電腦編程技巧與維護(hù),2016 (21):38-40,56.
[2]羅兵,譙英,符曉.OpenStack云平臺的高可用設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2017 (6):608-612.
[3]鄒仁明,彭雋,李軍.OpenStack開源云平臺高可用架構(gòu)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2014 (10):396-400.
[4]張龍興,朱志祥,梁小江.一種基于云計(jì)算的高可用性集群設(shè)計(jì)與實(shí)現(xiàn)[J]西安文理學(xué)院學(xué)報(bào)(自然科學(xué)版),2014 (3):9-13.
[5]錢景輝,廖鋰.基于Keepalived的動態(tài)浮動IP集群實(shí)現(xiàn)[J].化工自動化及儀表,2012 (7):926-928.
[6]胡修林,王運(yùn)鵬,郭輝.多網(wǎng)卡鏈路綁定策略的研究與實(shí)現(xiàn)[J].小型微型計(jì)算機(jī)系統(tǒng),2005 (2):165-168