全面解析Linux集群技術(shù)的要點(diǎn) |
發(fā)布時間: 2012/9/8 16:35:09 |
現(xiàn)在很多的企業(yè),網(wǎng)站都在應(yīng)用Linux操作系統(tǒng)(QQ:小默862693539),Linux的優(yōu)點(diǎn)使人們舍棄了微軟。今天就講講Linux集群技術(shù),讓你更一步了解Linux,知道Linux集群技術(shù)強(qiáng)大功能。給你挑選系統(tǒng)(QQ:小默862693539)起到參考的作用。 Linux競爭力很強(qiáng)的原因之一,是它可以運(yùn)行于極為普及的PC機(jī)上,不需要購買昂貴的專用硬件設(shè)備。在幾臺運(yùn)行Linux的PC機(jī)上,只要加入相應(yīng)的集群軟件,就可以組成具有超強(qiáng)可靠性、負(fù)載能力和計(jì)算能力的Linux集群。集群中的每臺服務(wù)器稱為一個節(jié)點(diǎn)。 按照側(cè)重點(diǎn)的不同,可以把Linux集群分為三類。一類是高可用性集群,運(yùn)行于兩個或多個節(jié)點(diǎn)上,目的是在系統(tǒng)(QQ:小默862693539)出現(xiàn)某些故障的情況下,仍能繼續(xù)對外提供服務(wù)。高可用性集群的設(shè)計(jì)思想就是要最大限度地減少服務(wù)中斷時間。這類集群中比較著名的有Turbolinux TurboHA、Heartbeat、Kimberlite等。第二類是負(fù)載均衡集群,目的是提供和節(jié)點(diǎn)個數(shù)成正比的負(fù)載能力,這種集群很適合提供大訪問量的Web服務(wù)。負(fù)載均衡集群往往也具有一定的高可用性特點(diǎn)。Turbolinux Cluster Server、Linux Virtual Server都屬于負(fù)載均衡集群。另一類是超級計(jì)算集群,按照計(jì)算關(guān)聯(lián)程度的不同,又可以分為兩種。一種是任務(wù)片方式,要把計(jì)算任務(wù)分成任務(wù)片,再把任務(wù)片分配給各節(jié)點(diǎn),在各節(jié)點(diǎn)上分別計(jì)算后再把結(jié)果匯總,生成最終計(jì)算結(jié)果。另一種是并行計(jì)算方式,節(jié)點(diǎn)之間在計(jì)算過程中大量地交換數(shù)據(jù),可以進(jìn)行具有強(qiáng)耦合關(guān)系的計(jì)算。這兩種超級計(jì)算集群分別適用于不同類型的數(shù)據(jù)處理工作。有了超級計(jì)算集群軟件,企業(yè)利用若干臺PC機(jī)就可以完成通常只有超級計(jì)算機(jī)才能完成的計(jì)算任務(wù)。這類軟件有Turbolinux EnFusion、SCore等。 高可用性集群與負(fù)載均衡集群的工作原理不同,適用于不同類型的服務(wù)。通常,負(fù)載均衡集群適用于提供靜態(tài)數(shù)據(jù)的服務(wù),如HTTP服務(wù);而高可用性集群既適用于提供靜態(tài)數(shù)據(jù)的服務(wù),如HTTP服務(wù),又適用于提供動態(tài)數(shù)據(jù)的服務(wù),如數(shù)據(jù)庫等。高可用性集群之所以能適用于提供動態(tài)數(shù)據(jù)的服務(wù),是由于節(jié)點(diǎn)共享同一存儲介質(zhì),如RAIDBox。也就是說,在高可用性集群內(nèi),每種服務(wù)的用戶數(shù)據(jù)只有一份,存儲在共用存儲設(shè)備上,在任一時刻只有一個節(jié)點(diǎn)能讀寫這份數(shù)據(jù)。 以Turbolinux TurboHA為例,集群中有兩個節(jié)點(diǎn)A和B,設(shè)這個集群只提供Oracle服務(wù),用戶數(shù)據(jù)存放于共用存儲設(shè)備的分區(qū)/dev/sdb3上。在正常狀態(tài)下,節(jié)點(diǎn)A提供Oracle數(shù)據(jù)庫服務(wù),分區(qū)/dev/sdb3被節(jié)點(diǎn)A加載在/mnt/oracle上。當(dāng)系統(tǒng)(QQ:小默862693539)出現(xiàn)某種故障并被TurboHA軟件檢測到時,TurboHA會將Oracle服務(wù)停止,并把分區(qū)/dev/sdb3卸載。之后,節(jié)點(diǎn)B上的TurboHA軟件將在節(jié)點(diǎn)B上加載該分區(qū),并啟動 Oracle服務(wù)。對于Oracle服務(wù)有一個虛擬的IP地址,當(dāng)Oracle服務(wù)從節(jié)點(diǎn)A切換到節(jié)點(diǎn)B上時,虛擬的IP地址也會隨之綁定到節(jié)點(diǎn)B上,因此用戶仍可訪問此服務(wù)。 由以上分析可以看出,高可用性集群對一種服務(wù)而言不具有負(fù)載均衡功能,它可以提高整個系統(tǒng)(QQ:小默862693539)的可靠性,但不能增加負(fù)載的能力。當(dāng)然,高可用性集群可以運(yùn)行多種服務(wù),并適當(dāng)分配在不同節(jié)點(diǎn)上,比如節(jié)點(diǎn)A提供Oracle服務(wù),同時節(jié)點(diǎn)B提供Sybase服務(wù),這也可以看成是某種意義上的負(fù)載均衡,不過這是對多種服務(wù)的分配而言。 負(fù)載均衡集群適用于提供相對靜態(tài)的數(shù)據(jù)的服務(wù),比如HTTP服務(wù)。因?yàn)橥ǔX?fù)載均衡集群的各節(jié)點(diǎn)間通常沒有共用的存儲介質(zhì),用戶數(shù)據(jù)被復(fù)制成多份,存放于每一個提供該項(xiàng)服務(wù)的節(jié)點(diǎn)上。 下面以Turbolinux Cluster Server為例簡要介紹一下負(fù)載均衡集群的工作機(jī)制。在集群中有一個主控節(jié)點(diǎn),稱為高級流量管理器(ATM)。假設(shè)這一集群僅被用來提供一項(xiàng)HTTP服務(wù),其余各節(jié)點(diǎn)均被設(shè)定為HTTP的服務(wù)節(jié)點(diǎn)。用戶對于頁面的請求全部發(fā)送到ATM上,因?yàn)锳TM上綁定了這項(xiàng)服務(wù)對外的IP地址。ATM把接受到的請求再平均發(fā)送到各服務(wù)節(jié)點(diǎn)上,服務(wù)節(jié)點(diǎn)接收到請求之后,直接把相應(yīng)的Web頁面發(fā)送給用戶。這樣一來,假如在1秒內(nèi)有1000個HTTP頁面請求,而集群中有10個服務(wù)節(jié)點(diǎn),則每個節(jié)點(diǎn)將處理100個請求。這樣,在外界看來,好象有一臺10倍速度的高速計(jì)算機(jī)在處理用戶的訪問。這也就是真正意義上的負(fù)載均衡。
HTTP頁面相對是靜態(tài)的,但有時也需要改動。Turbolinux Cluster Server提供了數(shù)據(jù)同步工具,可以很方便的把對頁面的改動同步到所有提供該項(xiàng)服務(wù)的節(jié)點(diǎn)上。 下面介紹一下對于高可用性集群與負(fù)載均衡集群的組合使用。如果用戶有一個由兩個節(jié)點(diǎn)組成的最小集群,是否可以同時獲得高可用性集群和負(fù)載均衡集群的效益呢?答案是肯定的。由于高可用性集群適用于提供動態(tài)數(shù)據(jù)的服務(wù),而負(fù)載均衡集群適用于提供靜態(tài)數(shù)據(jù)的服務(wù),所以我們不妨假設(shè)要同時提供 Oracle和HTTP服務(wù)。用戶要在節(jié)點(diǎn)A和B上安裝TurbolinuxTurboHA和TurbolinuxClusterServer軟件。把節(jié)點(diǎn)A作為Oracle正常工作的節(jié)點(diǎn),節(jié)點(diǎn)B作為Oracle服務(wù)的后備節(jié)點(diǎn),這是對TurboHA軟件而言。對于ClusterServer軟件而言,要設(shè)置節(jié)點(diǎn)B為主ATM節(jié)點(diǎn),節(jié)點(diǎn)A為后備ATM節(jié)點(diǎn),而節(jié)點(diǎn)A和節(jié)點(diǎn)B同時又都是HTTP的服務(wù)節(jié)點(diǎn)。 這樣一來,節(jié)點(diǎn)A和節(jié)點(diǎn)B都是身兼兩職,而用戶同時得到了一個具有高可用性的Oracle服務(wù)和一個具有負(fù)載均衡功能的HTTP服務(wù)。即使有一個節(jié)點(diǎn)發(fā)生故障,Oracle服務(wù)和HTTP服務(wù)都不會因此而中斷。 但對于同一種服務(wù),是不能同時獲得高可用性與負(fù)載均衡能力的。對一種服務(wù),要么是只有一份數(shù)據(jù),放在共用存儲設(shè)備上,一次被一個節(jié)點(diǎn)訪問,獲得高可用性;要么是把數(shù)據(jù)復(fù)制為多份,存儲于每個節(jié)點(diǎn)的本地硬盤上,用戶的請求同時發(fā)送到多個節(jié)點(diǎn)上,獲得負(fù)載均衡能力。 對于高可用性集群,由于它在設(shè)計(jì)時的目的就是為了最大可能地減少服務(wù)中斷時間,因此服務(wù)的切換受到很大的關(guān)注。當(dāng)一個節(jié)點(diǎn)上的服務(wù)故障時,會被很快地檢測到并被切換到其他節(jié)點(diǎn)上。但在切換時,不能忽略對數(shù)據(jù)完整性的保護(hù)。 在什么情況下數(shù)據(jù)完整性會被破壞呢?由于高可用性集群中至少有兩個節(jié)點(diǎn),連接在一個共用的存儲設(shè)備上,對于非裸分區(qū)而言,如果被兩個節(jié)點(diǎn)同時讀寫,就會造成文件系統(tǒng)(QQ:小默862693539)被破壞。因此就需要利用I/O屏障來防止這一事件的發(fā)生。 I/O屏障的目的是為了保證故障節(jié)點(diǎn)不能再繼續(xù)讀寫某一服務(wù)的共用分區(qū),實(shí)現(xiàn)的方式有多種。Kimberlite使用硬件開關(guān)來實(shí)現(xiàn),當(dāng)一個節(jié)點(diǎn)發(fā)生故障時,另一節(jié)點(diǎn)如果能偵測到,就會通過串行口發(fā)出命令,控制連接在故障節(jié)點(diǎn)電源上的硬件開關(guān),通過暫時斷電,而后又上電的方式使得故障節(jié)點(diǎn)被重啟動。 I/O屏障有多種形式。對于支持SCSI Reserve/Release命令的存儲設(shè)備,也可以用SG命令實(shí)現(xiàn)I/O屏障。正常節(jié)點(diǎn)應(yīng)使用SCSI Reserve命令“鎖住”共用存儲設(shè)備,保證其不被故障節(jié)點(diǎn)讀寫。如果故障節(jié)點(diǎn)上的集群軟件仍在運(yùn)行,如發(fā)現(xiàn)共用存儲設(shè)備已被對方鎖住,就應(yīng)把自己重啟動,以恢復(fù)正常工作狀態(tài)。 以上介紹了Linux集群技術(shù)的基本原理,也介紹了幾種著名的軟件?傊琇inux集群技術(shù)最大的發(fā)揮了PC機(jī)和網(wǎng)絡(luò)的優(yōu)勢,可以帶來可觀的性能,是一種大有前途的技術(shù)。希望通過本文你進(jìn)一步了解了Linux集群技術(shù)。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |