Linux下的高可用性方案研究
更新時(shí)間:2006年10月24日 00:00:00 作者:
保證持續(xù)穩(wěn)定的系統(tǒng)運(yùn)行時(shí)間變得越來(lái)越重要,而傳統(tǒng)意義上的小型機(jī)系統(tǒng)讓普通用戶(hù)望而卻步。用戶(hù)需要的是更高的可用性以及更低的成本。高可用性(HA)技術(shù)能自動(dòng)檢測(cè)服務(wù)器節(jié)點(diǎn)和服務(wù)進(jìn)程錯(cuò)誤、失效,并且當(dāng)發(fā)生這種情況時(shí)能夠自動(dòng)適當(dāng)?shù)刂匦屡渲孟到y(tǒng),使得集群中的其他節(jié)點(diǎn)能夠自動(dòng)承擔(dān)這些服務(wù),以實(shí)現(xiàn)服務(wù)不中斷。 Cluster應(yīng)用可分為三方面:High-Availability(HA)(高可用性集群)、Load Balance(負(fù)載均衡集群)、Scientific(科學(xué)集群)。在集群的這三種基本類(lèi)型之間,經(jīng)常會(huì)發(fā)生混合與交雜。于是,可以發(fā)現(xiàn)高可用性集群也可以在其節(jié)點(diǎn)之間均衡用戶(hù)負(fù)載,同時(shí)仍試圖維持高可用性程度。同樣,可以從要編入應(yīng)用程序的集群中找到一個(gè)并行群集,它可以在節(jié)點(diǎn)之間執(zhí)行負(fù)載均衡。而本文則側(cè)重于介紹基于Linux的HA解決方案方面的問(wèn)題。 基于LVS的HA方案 Linux要進(jìn)入高端市場(chǎng)就必須在這方面有相應(yīng)的措施,所以許多公司都在這方面加大了研究力度?,F(xiàn)在,我們可以使用一些現(xiàn)存的軟件去構(gòu)筑具有高可用性的LVS系統(tǒng)。下面列出兩種方案,以供參考。 [方案一]mon+heartbeat+ fake+coda 我們可以使用“mon”、“heart beat”、“fake”和“coda”四個(gè)軟件來(lái)構(gòu)筑具有高可用性的Virtual Server(虛擬服務(wù)器)?!癿on”是一個(gè)大眾化的資源管理系統(tǒng),用來(lái)監(jiān)控網(wǎng)絡(luò)上的服務(wù)器節(jié)點(diǎn)和網(wǎng)絡(luò)服務(wù)?!癶eartbeat”實(shí)現(xiàn)在兩臺(tái)計(jì)算機(jī)間通過(guò)在串行線上使用UDP協(xié)議傳送“心跳信息”?!癋ake”是一個(gè)使用ARP欺騙的方法來(lái)實(shí)現(xiàn)IP接管。 當(dāng)服務(wù)器故障時(shí),處理過(guò)程如下:“mon”進(jìn)程運(yùn)行在負(fù)載均衡器上,負(fù)責(zé)監(jiān)測(cè)整個(gè)集群的服務(wù)器節(jié)點(diǎn)和服務(wù)進(jìn)程。在配置文件“fping.monitor”中寫(xiě)入要檢測(cè)服務(wù)器節(jié)點(diǎn),然后“mon”進(jìn)程將會(huì)隔t秒檢查一下相應(yīng)的服務(wù)器節(jié)點(diǎn)是否還活著。 另外相關(guān)的服務(wù)監(jiān)視器也要做相應(yīng)的配置,這樣“mon”進(jìn)程將每m秒檢測(cè)一下所有節(jié)點(diǎn)的相應(yīng)服務(wù)進(jìn)程。例如:http.monitor:用于配置監(jiān)控http服務(wù);ftp.monitor:用于配置監(jiān)控ftp服務(wù);以此類(lèi)推。當(dāng)配置完成后,某個(gè)服務(wù)器節(jié)點(diǎn)失效或重新生效、服務(wù)進(jìn)程失效或重新生效時(shí)都會(huì)發(fā)送一個(gè)通告信息,因此,負(fù)載均衡器能夠知道服務(wù)器節(jié)點(diǎn)是否能接受服務(wù)。 現(xiàn)在,負(fù)載均衡器成為了整個(gè)系統(tǒng)的單點(diǎn)失效。為了防止這一現(xiàn)象,我們必須安裝一個(gè)負(fù)載均衡器的備份服務(wù)器。“fake”軟件實(shí)現(xiàn)當(dāng)負(fù)載均衡器失效時(shí),備份服務(wù)器自動(dòng)接管IP地址,并繼續(xù)服務(wù)。而“heartbeat”則隨時(shí)根據(jù)負(fù)載均衡器的狀態(tài)自動(dòng)激活/關(guān)閉備份服務(wù)器上的“fake”進(jìn)程。在負(fù)載均衡器和備份服務(wù)器上都運(yùn)行著一個(gè)“heartbeat”進(jìn)程,它們通過(guò)串行線周期性地發(fā)送“I'm alive ”消息。如果備份服務(wù)器在一個(gè)預(yù)定時(shí)間內(nèi)接收不到來(lái)自負(fù)載均衡器的“I'm alive”信息時(shí),將自動(dòng)激活“fake”進(jìn)程接管負(fù)載均衡器的IP地址,并開(kāi)始提供負(fù)載均衡服務(wù);而當(dāng)再次收到來(lái)自負(fù)載均衡器的“I'm alive ”消息時(shí),備份服務(wù)器將自動(dòng)將“fake”進(jìn)程關(guān)閉,釋放出它接管的服務(wù)器,負(fù)載均衡器重新開(kāi)始工作。 但是,如果負(fù)載均衡器在客戶(hù)正在請(qǐng)求時(shí)失效,這時(shí)會(huì)引起客戶(hù)請(qǐng)求失敗,客戶(hù)必須重新發(fā)出請(qǐng)求信息。 “coda”是一個(gè)容錯(cuò)的分布式文件系統(tǒng),源于Andrew文件系統(tǒng)。服務(wù)器上的目錄能夠存儲(chǔ)在“coda”上,所以文件能夠?qū)崿F(xiàn)高可用性,并且易于管理。 [方案二]ldirectord+heartbeat “l(fā)directord”(Linux Director Daemon)是Jacob Rief編程實(shí)現(xiàn)的一個(gè)獨(dú)立進(jìn)程,以實(shí)現(xiàn)對(duì)服務(wù)和物理服務(wù)器的監(jiān)測(cè),廣泛地用于http和https服務(wù)。 “l(fā)directord”安裝簡(jiǎn)單,能很好地與“heartbeat”配合工作?!發(fā)directord”程序包含在“ipvs”包中的“contrib”目錄中。 以下是“l(fā)directord”的一些優(yōu)點(diǎn): “l(fā)directord”是專(zhuān)門(mén)撰寫(xiě)的LVS監(jiān)測(cè)程序。 它從/etc/ha.d/xxx.cf文件中讀取所有關(guān)于IPVS路由表的配置信息。當(dāng)“l(fā)directord”運(yùn)行起來(lái)后,IPVS路由表將會(huì)被適當(dāng)?shù)嘏渲谩? 可以將Virtual service配置放在多個(gè)配置文件中,所以可以單獨(dú)修改某一種服務(wù)的參數(shù),而不影響其他的服務(wù)。“l(fā)directord”能被“heartbeat”輕松地管理----啟動(dòng)、關(guān)閉。 將“l(fā)directord”放到/etc/ha.d/resource.d/目錄下,然后在/etc/ha.d/haresources中增加一行: node1 IPaddr::10.0.0.3ldirectord::www ldirectord::mail “l(fā)directord”能夠手動(dòng)開(kāi)啟、關(guān)閉??梢栽跓o(wú)備份負(fù)載均衡器的LVS集群中使用它。 Xlinux的LATCH HA方案 正如前面所述,高可用性解決方案(HA)是極為重要的,許多廠商為此投入了大量的研究。其中,Xlinux發(fā)行版就提供LATCH HA解決方案。下面我們就一起看看LATCH HA方案。 LATCH HA解決方案的最典型的系統(tǒng)結(jié)構(gòu):兩臺(tái)主機(jī)A、B共享一個(gè)磁盤(pán)陣列,A為工作機(jī),B為備份機(jī)。它們之間用一根心跳線來(lái)連接,這稱(chēng)為“心跳檢測(cè)”,主要通過(guò)一條RS232檢測(cè)鏈路來(lái)完成。LATCH HA也采用了用Ping來(lái)驗(yàn)證系統(tǒng)宕機(jī)的方法。安裝在主機(jī)上的HA軟件通過(guò)心跳線來(lái)實(shí)時(shí)監(jiān)測(cè)對(duì)方的運(yùn)行狀態(tài),一旦正在工作的主機(jī)A因?yàn)楦鞣N硬件故障導(dǎo)致系統(tǒng)發(fā)生故障,主機(jī)B立即投入工作。怎么樣,與IBM的HACMP有點(diǎn)像吧! LATCH HA實(shí)現(xiàn)了“高可靠性共享存儲(chǔ)”架構(gòu)。該架構(gòu)由兩個(gè)或三個(gè)冗余服務(wù)器、一個(gè)共享冗余磁盤(pán)陣列、一個(gè)可選DBMS及LATCH HA系統(tǒng)軟件構(gòu)成。在LATCH HA的保護(hù)下,企業(yè)的計(jì)算機(jī)系統(tǒng)能夠提供不間斷的信息服務(wù),避免由于硬件故障或日常維護(hù)所帶來(lái)的宕機(jī),因而能夠保障最佳的可靠性及最大程度地減少宕機(jī)時(shí)間。 方案應(yīng)用 LATCH HA能夠應(yīng)用在各種集中式、客戶(hù)機(jī)/服務(wù)器模式或OLTP系統(tǒng)中。同時(shí)其與市場(chǎng)上各種主流的數(shù)據(jù)庫(kù)系統(tǒng)與OLTP軟件(如:Oracle、SYBASE、Informix、Tuxedo)也都保持兼容。LATCH HA同時(shí)提供了各種應(yīng)用程序接口。因此,客戶(hù)能夠在其私有軟件中集成各種功能來(lái)保證系統(tǒng)的高可靠性。 LATCH HA /HS2000 在線待機(jī)模式 在這種模式下,一個(gè)服務(wù)器作為主服務(wù)器。正常情況下其承當(dāng)所有的服務(wù)。另外一臺(tái)服務(wù)器作為待機(jī)服務(wù)器(正常情況下除了監(jiān)控主服務(wù)器的狀態(tài),不進(jìn)行其他的操作)。一旦主服務(wù)器宕機(jī),待機(jī)服務(wù)器就接手工作,成為新的主服務(wù)器??蛻?hù)仍然可以擁有同樣的服務(wù)器IP地址、NFS、數(shù)據(jù)、數(shù)據(jù)庫(kù)及其他……這種應(yīng)用模式近似于上面介紹的典型應(yīng)用模式(兩臺(tái)服務(wù)器實(shí)際上是在完成同一個(gè)功能應(yīng)用),安裝在主機(jī)上的HA軟件通過(guò)心跳線來(lái)實(shí)時(shí)監(jiān)測(cè)對(duì)方的運(yùn)行狀態(tài),一旦正在工作的主機(jī)A因?yàn)楦鞣N硬件故障,如電源失效、主要部件失效或者啟動(dòng)盤(pán)失效等導(dǎo)致系統(tǒng)發(fā)生故障,主機(jī)B立即投入工作。 LATCH HA /DA2000雙機(jī)就緒模式 在這種模式下,兩個(gè)主機(jī)都作為主服務(wù)器,共享自己的磁盤(pán)陣列,各自承當(dāng)一部分服務(wù)。例如:服務(wù)器A在執(zhí)行應(yīng)用A, 服務(wù)器B在執(zhí)行應(yīng)用B, 兩個(gè)主機(jī)在正常情況下各自獨(dú)立運(yùn)行自己的應(yīng)用邏輯,兩個(gè)主機(jī)同時(shí)又都作為對(duì)方的待機(jī)服務(wù)器,通過(guò)心跳線監(jiān)控對(duì)方的狀態(tài)。一旦某一服務(wù)器宕機(jī),另一臺(tái)服務(wù)器就承擔(dān)所有的服務(wù),為所有的客戶(hù)服務(wù)。一旦服務(wù)器A發(fā)生故障,服務(wù)器B馬上接管服務(wù)器A上原來(lái)的應(yīng)用;或者服務(wù)器B發(fā)生故障,服務(wù)器A馬上接管服務(wù)器B上原來(lái)的應(yīng)用,這是一種互為冗余的模式。 很明顯,一旦某一服務(wù)器宕機(jī),另一臺(tái)服務(wù)器的工作負(fù)擔(dān)就比較重,于是就有了三主機(jī)模式。 LATCH HA /HC2000 三主機(jī)模式 這種應(yīng)用模式是最高端的HA應(yīng)用模式,它既保證了系統(tǒng)的設(shè)備冗余,避免系統(tǒng)宕機(jī),而且又能保證在一旦宕機(jī)的情況下有足夠的系統(tǒng)資源可供使用。 在這種模式中,待機(jī)服務(wù)器C同時(shí)監(jiān)控主服務(wù)器A與B的狀態(tài)。一旦服務(wù)器A或B宕機(jī),服務(wù)器C將承擔(dān)其服務(wù),為客戶(hù)服務(wù)。這種系統(tǒng)結(jié)構(gòu)既保證了系統(tǒng)的安全運(yùn)行,又保證了系統(tǒng)資源。 Linux HA的解決方案當(dāng)然不限于上述兩種,但其核心思想是一致的,即提供不間斷的服務(wù)。近年來(lái)隨著Linux操作系統(tǒng)不斷走向成熟,功能不斷增強(qiáng),特別是其遵循GPL和標(biāo)準(zhǔn)化的PVM、MPI消息傳遞機(jī)制的特性和在普通PC機(jī)上越來(lái)越好的高性能網(wǎng)絡(luò)的支持,所有這些為基于Linux的集群系統(tǒng)的發(fā)展提供了堅(jiān)實(shí)的技術(shù)基礎(chǔ),在把技術(shù)轉(zhuǎn)化為具體的應(yīng)用過(guò)程中,高端的HA應(yīng)用以其穩(wěn)定可靠的性能和與Unix相比價(jià)格上的優(yōu)勢(shì)而脫穎而出。隨著基于Intel平臺(tái)的服務(wù)器業(yè)已成為關(guān)鍵性業(yè)務(wù)和應(yīng)用的主流服務(wù)器,Linux HA集群技術(shù)的應(yīng)用亦將日益廣泛。

HA集群結(jié)構(gòu)圖 HA實(shí)際上是兩臺(tái)(或更多)計(jì)算機(jī)通過(guò)一定方式互相監(jiān)聽(tīng),實(shí)現(xiàn)熱備份。當(dāng)其中Primary server出現(xiàn)問(wèn)題時(shí),Standby server能夠自動(dòng)立即接替工作,使用戶(hù)感覺(jué)不到停機(jī)。在Primary server恢復(fù)正常之后,Standby server又會(huì)把工作還給Primary server。(出處:賽迪網(wǎng))
相關(guān)文章
在Linux(Ubuntu)下搭建PHP環(huán)境的操作步驟
ubuntu中文名叫烏班圖,ubuntu系統(tǒng)是一個(gè)以桌面應(yīng)用為主的linux操作系統(tǒng),今天給大家演示如何在Linux(Ubuntu)下搭建PHP環(huán)境,有需要的可以參考學(xué)習(xí)。2016-08-08Linux系統(tǒng)下ssh的相關(guān)配置詳細(xì)解析
以下是對(duì)Linux系統(tǒng)下ssh的相關(guān)配置進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下2013-08-08Linux fedora 24 忘記密碼圖形化界面修改root密碼的方法
這篇文章主要介紹了Linux fedora 24 忘記密碼圖形化界面修改root密碼的方法,在文章下文給大家補(bǔ)充了fedora23忘記root密碼的修改方法,需要的朋友可以參考下2017-02-02Linux無(wú)盤(pán)工作站架設(shè)實(shí)例
Linux無(wú)盤(pán)工作站架設(shè)實(shí)例...2006-10-10