李聰穎 王瑞剛 于金良


摘 要:高可用性集群是以減少服務(wù)間斷時間為目的的一組服務(wù)節(jié)點(diǎn),該系統(tǒng)能夠最大限度地向用戶提供不間斷的網(wǎng)絡(luò)服務(wù),使集群的整體服務(wù)最大可用。文中采用Pacemaker對Apache提供集群資源管理,并用Corosync實(shí)現(xiàn)通信和關(guān)系管理,當(dāng)集群中的某一個節(jié)點(diǎn)發(fā)生故障時,其他節(jié)點(diǎn)將在幾秒鐘甚至更短時間內(nèi)自動接管集群資源和服務(wù),從而不間斷的向用戶提供服務(wù),最大限度地減少服務(wù)中斷的時間。本系統(tǒng)添加了一個VIP資源,利用VIP測試Apache的高可用性。測試結(jié)果表明,該集群系統(tǒng)可以有效增強(qiáng)Apache集群服務(wù)的可用性,具有高性價比、高可靠性、高擴(kuò)展性等特點(diǎn)。
關(guān)鍵詞:Apache;Pacemaker;Linux;高可用;資源配置
中圖分類號:TP302.1 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2016)08-00-03
0 引 言
隨著計(jì)算機(jī)網(wǎng)絡(luò)的廣泛應(yīng)用,確保向用戶提供連續(xù)不間斷的網(wǎng)絡(luò)服務(wù)變得日趨重要。在金融、電信以及政府等領(lǐng)域,服務(wù)器設(shè)備擔(dān)負(fù)著存儲、處理和傳遞大量重要信息等任務(wù),一旦服務(wù)器出現(xiàn)故障,可能會給用戶造成非常嚴(yán)重的損失。因此,要保證網(wǎng)絡(luò)服務(wù)的連續(xù)性,使用高可用集群技術(shù)是最佳選擇。
高可用集群作為一個整體向用戶提供一組服務(wù)不間斷的網(wǎng)絡(luò)資源,為了確保集群對外連續(xù)不斷地提供可用的服務(wù),實(shí)現(xiàn)故障檢測和業(yè)務(wù)切換的自動化,從而盡可能的降低因軟、硬件故障或人為操作失誤帶來的損失。本文介紹了現(xiàn)有高可用性集群系統(tǒng)的實(shí)現(xiàn)技術(shù),提出了一種利用Pacemaker管理Apache高可用集群資源的系統(tǒng)方案,并設(shè)計(jì)實(shí)現(xiàn)了基于Apache的高可用性集群管理系統(tǒng)。在集群中,Corosync檢測主節(jié)點(diǎn)和備份節(jié)點(diǎn)的狀態(tài),判斷當(dāng)前節(jié)點(diǎn)是否處于活躍狀態(tài)。如果主節(jié)點(diǎn)發(fā)生故障,備份節(jié)點(diǎn)將自動接管資源和服務(wù),確保集群對外提供連續(xù)的網(wǎng)絡(luò)服務(wù)。本集群管理系統(tǒng)可用性高、管理簡便且易實(shí)現(xiàn)。經(jīng)多次實(shí)驗(yàn)反復(fù)測試,本系統(tǒng)能夠檢測故障并高效的實(shí)現(xiàn)主備節(jié)點(diǎn)資源切換,快速接管服務(wù),從而實(shí)現(xiàn)Apache集群的高可用性。
1 Pacemaker簡介
Heartbeat和Corosync都是高可用集群中的集群信息層(Cluster Messaging Layer),主要傳遞集群信息與心跳信息,并沒有資源管理功能,資源管理依舊依賴于上層的集群資源管理器,本文采用的便是 Pacemaker集群資源管理器。Pacemaker是Heartbeat到V3版本后拆分出來的資源管理器,現(xiàn)在Corosync合成了高可用集群中的最佳組合。Pacemaker能夠監(jiān)測和恢復(fù)資源以確保集群服務(wù)的最大可用性,它可以做任意規(guī)模的集群,配備強(qiáng)大的依賴模型使管理員能夠準(zhǔn)確理解集群資源之間的關(guān)系,編寫各種腳本對集群資源進(jìn)行管理。
Pacemaker的關(guān)鍵特性是能夠監(jiān)測故障并恢復(fù)節(jié)點(diǎn)服務(wù),不需要共享存儲,可以管理任何能用腳本控制的資源服務(wù),使用STONITH保證數(shù)據(jù)的一致性,支持任意類型的集群,包括主/主, 主/備, N+1, N+M, N-to-1和 N-to-N各種類型。能夠自動同步集群中各節(jié)點(diǎn)的配置文件,設(shè)定集群范圍內(nèi)的多種資源約束,支持更多高級服務(wù)類型及需要多種模式的服務(wù),也支持統(tǒng)一的腳本化集群shell。
2 技術(shù)架構(gòu)
Pacemaker堆棧結(jié)構(gòu)如圖1所示,圖中,當(dāng)Pacemaker與Corosync集成時,可以支持常見的多種開源集群文件系統(tǒng),并用一個通用的分布式鎖控制器協(xié)調(diào)同步資源,Corosync負(fù)責(zé)通信,Pacemaker管理成員關(guān)系和隔離服務(wù)。Pacemaker的內(nèi)部組件如圖2所示。
Pacemaker由以下幾 個關(guān)鍵組件組成:
PE 或者策略引擎 (PE or Policy Engine, PEngine):主要負(fù)責(zé)將CRM傳遞過來的信息按照配置文件中的設(shè)置計(jì)算出下一個集群狀態(tài)。
Stonithd(Shoot-The-Other-Node-In-The-Head ):通常用遠(yuǎn)程電源開關(guān)來充當(dāng)。在 Pacemaker 中,STONITH設(shè)備被當(dāng)成資源監(jiān)控,然而Stonithd會根據(jù)STONITH的拓?fù)浣Y(jié)構(gòu)實(shí)施管理,例如它的客戶端請求隔離一個節(jié)點(diǎn),則它就會重啟那個節(jié)點(diǎn)。
集群資源管理守護(hù)進(jìn)程 (Cluster Resource Management Daemon, CRMD):主要作為PEngine和lrm的消息代理,需要同時選舉一個leader去協(xié)調(diào)管理集群的活動,包括集群資源的啟動和停止。
集群信息基礎(chǔ) (Cluster Information Base, CIB):CIB在系統(tǒng)中充當(dāng)?shù)氖钱?dāng)前集群中各資源原始配置以及之后動態(tài)變化了的狀態(tài),是一個不斷更新的信息庫。當(dāng)CIB收集到資源以及節(jié)點(diǎn)統(tǒng)計(jì)信息的變化后,都會整合到一起成為當(dāng)前集群最新的信息,并分發(fā)給集群各個節(jié)點(diǎn)。
3 Pacemaker功能概述
CIB包含集群中所有資源的配置信息和當(dāng)前狀態(tài),CIB的內(nèi)容會被自動同步在整個集群中。PEngine計(jì)算集群的理想狀態(tài)并生成指令列表,然后輸送到DC(指定協(xié)調(diào)員),把所有節(jié)點(diǎn)選舉的DC節(jié)點(diǎn)作為主決策節(jié)點(diǎn),如果主決策節(jié)點(diǎn)宕機(jī),會迅速選舉建立一個新的主決策節(jié)點(diǎn)。DC將PEngine生成的理想策略指令列表傳遞給集群中其他節(jié)點(diǎn)上的LRMD,或者用CRMD通過集群消息傳遞基礎(chǔ)結(jié)構(gòu)。當(dāng)集群中有節(jié)點(diǎn)發(fā)生故障,Pengine會重新計(jì)算理想策略。如果出現(xiàn)特殊情況,需要關(guān)閉節(jié)點(diǎn)以保護(hù)共享數(shù)據(jù)或完整的資源回收,Pacemaker則應(yīng)用Stonithd設(shè)備,STONITH應(yīng)用遠(yuǎn)程電源開關(guān)將節(jié)點(diǎn)“爆頭”。Pacemaker把STONITH設(shè)備配置為資源保存在CIB中,使它可以更方便地監(jiān)測節(jié)點(diǎn)宕機(jī)。
4 系統(tǒng)的實(shí)現(xiàn)與測試
4.1 系統(tǒng)環(huán)境部署
集群架構(gòu)如圖3所示,本系統(tǒng)采用ACTIVE/PASSIVE集群架構(gòu)模式,設(shè)置兩個節(jié)點(diǎn)node1和node2,操作系統(tǒng)為Ubuntu14.04,分別在兩個節(jié)點(diǎn)上安裝Apache,Corosync,Pacemaker,并添加一個虛擬IP資源,通過VIP訪問兩個節(jié)點(diǎn)上的Apache服務(wù)并測試集群的高可用性。
4.2 系統(tǒng)資源配置
4.2.1 創(chuàng)建一個VIP地址資源
增加虛擬IP命令:
primitive vip ocf:heartbeat: IPaddr params ip=10.10.10.81 nic=eth0 cidr_netmask=24
檢查配置是否正確命令:verify,如果沒有報(bào)錯,則配置正確。然后用commit命令提交,把信息寫入cib.xml的配置文件中。
查看添加的資源,成功添加VIP資源如圖5所示。有一個VIP資源運(yùn)行在node1上。
4.2.2 設(shè)置資源黏性
當(dāng)一個節(jié)點(diǎn)出現(xiàn)故障時,資源在節(jié)點(diǎn)上來回流動會造成某段時間內(nèi)無法正常訪問,因此在資源因?yàn)楣?jié)點(diǎn)故障轉(zhuǎn)移到其它節(jié)點(diǎn)后,即便原來的節(jié)點(diǎn)恢復(fù)正常也禁止資源再次流轉(zhuǎn)回來,此舉可通過定義資源的黏性(stickiness)來實(shí)現(xiàn)。
資源黏性是指資源更傾向于運(yùn)行在哪個節(jié)點(diǎn)。本系統(tǒng)將node1資源粘性值設(shè)置為100,在沒有故障的情況下資源就會在node1上。當(dāng)node1出現(xiàn)故障時,資源才會跳轉(zhuǎn)到node2上。rsc_defaults resource-stickiness=100
4.3 系統(tǒng)測試
停止node1節(jié)點(diǎn)服務(wù),查看集群狀態(tài)。從圖6可以看出,node1離線。VIP資源在node2上運(yùn)行。測試成功。
4.4 瀏覽器測試
為了區(qū)分兩個節(jié)點(diǎn),在Apache的index.html中分別添加Welcome to node1!Welcome to node2!,訪問Apache的頁面時就會出現(xiàn)不同的內(nèi)容。
因?yàn)榕渲昧薞IP資源,所以用VIP10.10.10.81訪問時,也能夠出現(xiàn)Apache的頁面。如圖8 所示,用VIP訪問Apache時,可以從瀏覽器頁面看到服務(wù)運(yùn)行在node1上。
5 結(jié) 語
本文介紹了Pacemaker的特性,并使用Pacemaker進(jìn)行資源管理以及Corosync實(shí)現(xiàn)通信,搭建一個Apache高可用集群系統(tǒng)。利用集群配置的VIP資源進(jìn)行測試,當(dāng)node1節(jié)點(diǎn)服務(wù)停止或者出現(xiàn)故障時,資源可以自動快速跳轉(zhuǎn)到node2節(jié)點(diǎn)上。當(dāng)恢復(fù)node1節(jié)點(diǎn)的服務(wù)時,資源還會停留在node2上,這樣可防止資源來回流動,保持系統(tǒng)的穩(wěn)定性和高可靠性。測試結(jié)果表明,本系統(tǒng)管理方便、可用性高,能夠高效的切換資源,提供不間斷的服務(wù),實(shí)現(xiàn)集群的高可用性,從而將因軟、硬件故障和人為錯誤帶來的損失降到最低,在多個領(lǐng)域都可以得到廣泛應(yīng)用。
參考文獻(xiàn)
[1] OpenStack.OpenStack High Availability Guide[EB /OL].http://docs.openstack.org/high-availability-guide/content /index.html.(2013-12-05)[2013-12-05]
[2] OpenStack.OpenStack Installation Guide for Ubuntu12.04[EB /OL]. http://docs. openstack.org/.(2012-12-26)[2013-08-10].
[3] High-availabilityCluster[EB/OL].http://en.wikipedia.org/wiki/High-availability_cluster
[4] Linux HA[EB/OL]. http://www.linux-ha.org
[5] Pacemaker[EB/OL]. http://clusterlabs.org/
[6]宋現(xiàn)鋒.基于Linux 的高可用性集群管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2012.
[7]崔小燕. Linux集群系統(tǒng)分析[J].西安郵電學(xué)院學(xué)報(bào),2006,11(5):103-106.
[8]歸達(dá)偉.計(jì)算機(jī)集群技術(shù)[J].西安郵電學(xué)院學(xué)報(bào),2004(4):98-100.
[9]謝曉燕,張靜雯. 一種基于Linux集群技術(shù)的負(fù)載均衡方法[J].西安郵電大學(xué)學(xué)報(bào),2014,19(3):64-68.
[10]訾海燕,朱國暉.一種基于服務(wù)質(zhì)量的資源分配算法[J]. 西安郵電大學(xué)學(xué)報(bào),2013,18(5):117-120.