摘要:提供關鍵業務的不間斷服務,目前的解決辦法是采用雙機熱備或者集群技術,采用基于開源LinuxHA項目下的免費軟件Heartbeat作為雙機熱備方案無疑是極具性價比的選擇#65377;討論了Heartbeat的基本原理,提出了一種基于Linux的雙機熱備系統,并基于B/S架構建立了該系統的管理模式#65377;
關鍵詞:雙機熱備;高可用性;Heartbeat
中圖分類號:TP31文獻標志碼:A
文章編號:1001-3695(2007)04-0255-03
近年來,接入Internet的用戶數目急劇增加,同時企業也加速了傳統的商業模式到電子商務的改革#65377;電子商務中,作為運行企業關鍵業務的服務器是保障商業運作有效#65380;安全,實現企業利潤最大化的保證,但是在信息系統建設中充滿安全危機,服務器一個小小的軟硬件故障或誤操作都有可能造成關鍵業務出現中斷或癱瘓,使企業蒙受損失#65377;因此,系統的高可用性是關鍵#65377;所謂高可用性包括一切避免系統服務中斷的技術,它有多種解決方案,如雙機熱備#65380;集群,高端容錯主機等#65377;其中高端容錯主機是完全基于硬件的容錯,價格昂貴,僅用于對容錯有極高要求的應用#65377;集群技術是指一組相互獨立的服務器,在網絡中表現為單一的系統,并以單一系統的模式加以管理以提供高可用性的服務#65377;集群技術偏重于解決負載均衡#65380;科學計算等問題,投資大#65380;安裝使用復雜,一般只適用于大型系統#65377;雙機熱備系統投資小#65380;配置簡單,對于運行關鍵業務的中小型系統,雙機熱備方案無疑是更具性價比的選擇#65377;
本文中的系統采用免費開源的基于LinuxHA(Linux高可用性)項目下的Heartbeat搭建了一個純軟件模式的雙機熱備平臺,并編寫了一個基于B/S結構的#65380;友好圖形界面的Linux HA Web管理系統#65377;采用本系統即使是Linux新手也能較快速方便地建立一個雙機熱備系統,可勝任中小企業的電子商務#65380;ERP#65380;MIS#65380;CRM#65380;IDC等關鍵業務應用#65377;
1雙機熱備系統
雙機熱備系統就是對于重要的服務,使用兩臺服務器共同執行同一服務,在運行的過程中實時互相備份,以冗余提高系統的可靠性#65377;當一臺服務器出現故障時,另一臺可以立即發現故障并接管那臺服務器以承擔服務任務,從而在不需要人工干預的情況下,自動保證系統能持續提供服務#65377;更具體地說,雙機熱備常見的形式是基于Active/Standby方式的服務器熱備#65377;兩個服務器數據同時使用一個共享的存儲設備,或者不使用共享存儲設備,通過軟件實時保持兩臺機器的同步#65377;在同一時間內只有一臺服務器保持Active狀態,另一臺備份服務器(從機)處于監控準備狀態#65377;當其中保持Active狀態的一臺服務器出現故障無法啟動時,備份服務器會通過軟件診測(一般是通過心跳診斷)將Standby機器激活,保證應用在短時間內完全恢復正常使用#65377;
1.1雙機熱備的實現模式
(1)基于共享的存儲設備的方式
基于存儲共享的雙機熱備是采用兩臺服務器,使用共享的存儲設備(磁盤陣列柜或存儲區域網SAN)#65377;兩臺服務器可以采用互備#65380;主從#65380;并行等不同的方式#65377;在工作過程中,兩臺服務器將以一個虛擬的IP地址對外提供服務,依照工作方式的不同將服務請求發送給其中一臺服務器承擔;同時,服務器通過心跳線偵測另一臺服務器的工作狀況#65377;當一臺服務器出現故障時,另一臺服務器根據心跳偵測的情況作出判斷,并進行資源切換#65380;接管服務#65377;由于使用共享的存儲設備,兩臺服務器使用的實際上是一樣的數據,由雙機熱備軟件對其進行管理#65377;但在基于存儲共享的雙機熱備系統中,存在共享的存儲設備單點故障問題#65377;若要解決該問題,用戶還需花大價錢建立異地存儲子系統#65377;
(2)沒有共享的存儲設備的純軟件方式
純軟件的方式則是通過鏡像軟件,將數據實時復制到另一臺服務器上,這樣同樣的數據就在兩臺服務器上各存在一份#65377;如果一臺服務器出現故障,可以及時切換到另一臺服務器#65377;純軟件方式還有另外一種情況,即服務器只是提供應用服務,并不保存數據(如只進行某些計算,作為應用服務器使用)#65377;這種情況下同樣也不需要使用共享的存儲設備,直接使用雙機熱備軟件即可#65377;純軟件方式無須專門購買昂貴的磁盤陣列柜或存儲區域網SAN,費用低#65380;易搭建#65380;配置簡單,十分適合于中#65380;小企業的關鍵應用#65377;下面談到的雙機熱備系統均指該種方式#65377;
1.2雙機熱備軟件——HA Heartbeat系統
目前,市場上主要的基于Windows和Linux平臺的商業雙機熱備軟件包括HACMP#65380;LifeKeeper#65380; RosaHA#65380;LanderCluster#65380;NEC ExpressCluster#65380;Plus Well等,都具備心跳監測和資源接管的功能#65377;但是隨之而來的便是昂貴的費用,這讓很多小企業望而卻步#65377;
正因為如此,需要尋找一個開源免費的軟件來實現HA功能,這就是HighAvailability Linux Project(Linux下的高可用性項目)#65377;它是一個Linux下的開源項目, HighAvailability Linux 開源項目的目標就是通過社區開發,努力提供一個提升 Linux 可靠性(Reliability)#65380;可用性(Availability)和可服務性(Serviceability)(RAS)的群集解決方案#65377;LinuxHA 項目得到了廣泛的應用,是很多高可用性解決方案的重要組成部分#65377;
Heartbeat是HighAvailability Linux Project的產物,是一套提供防止業務主機因不可避免的意外性或計劃性宕機問題的高可用性軟件#65377;Heartbeat 是可以從 LinuxHA 項目 Web 站點公開獲得的軟件包,它提供了所有 HA(高可用性)系統所需要的基本功能,如啟動和停止資源#65380;監測群集中系統的可用性#65380;在群集中的節點間轉移共享 IP 地址的所有者等#65377;它通過串行線#65380;以太網接口或同時使用兩者來監測特定服務(或多個服務)的運行狀況#65377;眾所周知Linux是一個開源的操作系統,建立于Linux之上的Heartbeat同樣也是開源免費的,可以根據各種需求對Heartbeat進行必要的改進#65380;二次開發,以便更適合每個人的需要,同時也為該開源項目添磚加瓦#65377;這樣就可以得到一個最適合自己的HA高可用性軟件,搭建一套完整的雙機熱備平臺#65377;
Heartbeat實現了HA功能中的核心功能——心跳,將Heartbeat軟件同時安裝在兩臺服務器上,用于監視系統的狀態,協調主從服務器的工作,維護系統的可用性#65377;它能偵測服務器應用級系統軟件#65380;硬件發生的故障,及時地進行錯誤隔絕#65380;恢復;通過系統監控#65380;服務監控#65380;IP自動遷移等技術實現在整個應用中無單點故障,簡單#65380;經濟地確保重要的服務持續高可用性#65377;
2Heartbeat雙機熱備系統架構
本文中的系統采用免費開源的基于LinuxHA項目下的Heartbeat搭建了一個純軟件模式的雙機熱備平臺, 其工作模式為主從方式(Active/Standby),即主服務器工作,從服務器處于監控準備狀態#65377;當Heartbeat檢測到主機宕機時,從服務器接管主服務器的工作,待主服務器恢復正常后,系統能自動將服務切換到主服務器上運行#65377; 系統采用兩臺PC機(都配備有雙網卡)作為主從服務器,兩臺機器的Eth0網卡接入外部網絡,供客戶端訪問;兩臺機器的Eth1網卡通過一根RJ45交叉網線直接互連,配置內部IP,供心跳使用;一根串口直連線纜作為心跳線連接在兩臺機器的串口之間#65377;這樣做的目的是為了避免不必要的失效切換,故建立了兩條獨立的物理路徑作為通信路徑了解對方的運行情況#65377;
此方案容錯功能實現的關鍵是在主服務器宕機進行切換時,對客戶端來說主服務器是透明的,即主機的切換在工作端看來沒有變化,所有基于主機的應用都正常#65377;Heartbeat采用了虛擬IP地址映射技術來實現此功能,本系統采用了如圖1所示的系統體系架構及表1的網絡配置#65377;
通過下面的小實驗,以Web服務為例看Heartbeat是如何提供雙機熱備功能的#65377;首先在Heartbeat的一個配置文件/etc/ha.d/haresources中設置虛擬IP地址并用域名hyjj.3322.org綁定這個IP地址,以便提供對外Web服務;同時設置需同步的服務,本實驗中設置的是Httpdf服務#65377;兩臺機器同時通過/etc/init.d/heartbeat start把Heartbeat進程運行起來,Heartbeat會把本地的Apache服務啟動起來#65377;通過訪問這個虛擬的IP地址或域名可以訪問到Web頁面,實際訪問到的真實頁面是主服務器上的頁面#65377;當手動把主服務器宕掉后,在訪問hyjj.3322.org時會出現打不開頁面的情況,因為此時hyjj.3322.org映射到的Linuxha1主機已經宕機了,過幾秒鐘后再訪問這個202.115.48.137的IP地址或hyjj.3322.org域名時又可以訪問了#65377;這是因為,Heartbeat通過心跳線檢測到了主服務器已經宕機,馬上激活從服務器,自動將202.115.48.137的IP切換到從服務器上,從服務器接管主服務器的資源,提供對外服務,所以看到了與剛才一樣的Web頁面#65377;由此可以看到當系統發生出現故障進行切換時,對用戶來說服務器是透明的,系統提供了不間斷的網絡服務#65377;
3Heartbeat管理系統的實現
Linux下的大多數服務類軟件都是通過在Shell下直接配置#65380;操作的,Heartbeat也不例外#65377;但是對于一個Linux新手,直接修改復雜的配置文件#65380;手動地啟動服務無疑是一個困難的事情#65377;鑒于此,本文設計了Heartbeat管理系統——Linux HA Web管理系統來完成配置#65380;啟動等工作#65377;該系統基于B/S結構,管理員通過瀏覽器(可遠程訪問)經身份認證后進入該管理系統,通過一個Web圖形界面來對Heartbeat進行管理,類似于phpMyAdmin對MySQL那樣的圖形管理界面#65377;其拓撲結構如圖2所示#65377;
Heartbeat共有三個配置文件,分別是/etc/ha.d/目錄下的Ha.cf,Haresources和Authkeys#65377;其中,Ha.cf是主要配置文件,Haresources是資源配置文件,Authkeys是認證信息配置文件#65377;Linux HA Web管理系統使用戶可以直接通過瀏覽器的圖形界面選擇采用系統預設好的缺省配置或自行客戶化配置來設置這些配置文件,重啟Heartbeat服務,避免了直接在Linux下修改復雜的配置文件#65377;
整個Heartbeat Web管理系統采用JSP編寫,后臺采用Tomcat作解析#65377;這里以其中一個核心的應用——/etc/ha.d/ha.cf配置文件的讀寫功能為例,給出了圖形化配置/etc/ha.d/ha.cf的代碼片斷#65377;
4結束語
本文運用開源的HighAvailability Linux Project的Heartbeat軟件包,開發實現了一個具有友好的Web圖形配置面的雙機熱備系統#65377;經初步測試,該系統可用于小型有高可用性需求的應用#65377;
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。