應(yīng)用解析:利用Linux和GFS打造集群存儲(chǔ) |
發(fā)布時(shí)間: 2012/9/3 17:22:54 |
負(fù)載均衡是一項(xiàng)困難的任務(wù)。我們經(jīng)常需要通過(guò)NFS(網(wǎng)絡(luò)文件系統(tǒng))或其他機(jī)制來(lái)為數(shù)據(jù)提供中心地址,從而共享文件系統(tǒng)。雖然你的安全機(jī)制可能可以讓你免于Web服務(wù)器節(jié)點(diǎn)的故障,但是你仍然需要通過(guò)中央存儲(chǔ)節(jié)點(diǎn)來(lái)共享數(shù)據(jù)。 通過(guò)GFS(全局文件系統(tǒng))——Linux的一個(gè)免費(fèi)集群文件系統(tǒng)——你可以創(chuàng)建一個(gè)不需要依賴其他服務(wù)器的真正穩(wěn)定的集群。在這篇文章中,我們將展示如何正確地設(shè)置GFS. 從概念上來(lái)說(shuō),一個(gè)集群文件系統(tǒng)可以允許多個(gè)操作系統(tǒng)載入同一個(gè)文件系統(tǒng)并可以在同一時(shí)間內(nèi)向同一文件系統(tǒng)寫(xiě)入數(shù)據(jù),F(xiàn)在有許多集群文件系統(tǒng),包括Sun的Lustre,Oracle的OCFS(Oracle集群文件系統(tǒng)),以及Linux的GFS. 有許多方法可以讓一個(gè)塊設(shè)備同時(shí)被多個(gè)服務(wù)器所使用。你可以分區(qū)出一個(gè)對(duì)多個(gè)服務(wù)器都可視的SAN(存儲(chǔ)局域網(wǎng))LUN(邏輯單元號(hào)),設(shè)置好相應(yīng)的iSCSI(互聯(lián)網(wǎng)小型計(jì)算機(jī)系統(tǒng)接口),或使用DRBD(分布式復(fù)制塊設(shè)備)在兩臺(tái)服務(wù)器之間復(fù)制一個(gè)分區(qū)。在使用DRBD的時(shí)候,你將需要在主/主節(jié)點(diǎn)中設(shè)置好DRBD以使用GFS. GFS要求 運(yùn)行GFS意味著你在運(yùn)行一個(gè)集群。目前為止,運(yùn)行GFS的最簡(jiǎn)單的手段就是使用Red Hat Cluster Suite(RHCS:Red Hat集群套件)。這個(gè)套件在CentOS中就有。此外,還需要下面這些包:cman——集群管理器;lvm2-cluster——使LVM(邏輯卷管理器)可以支持集群的CLVM(集群邏輯卷管理器)包;kmod-gfs——GFS內(nèi)核模塊;最后是gfs-utils. 集群管理器(cman)包含必要的工具,比如分布式鎖管理器。除非你希望花時(shí)間來(lái)確認(rèn)各種不同的分發(fā)版本是如何采用cman的,否則我們強(qiáng)烈推薦使用CentOS或RHEL.同時(shí),你還將獲得RH(Red Hat)所維護(hù)的各種最新版本的集群服務(wù),此外你還可以獲得一個(gè)比較穩(wěn)定的環(huán)境。 Fencing(阻絕)機(jī)制是絕對(duì)必要的。一些指導(dǎo)性文章建議將阻絕模式設(shè)定成"手動(dòng)",因?yàn)樽杞^設(shè)置有可能比較復(fù)雜。阻絕意味在集群中進(jìn)行隔離,或馬上中斷某些危險(xiǎn)節(jié)點(diǎn)的運(yùn)作。如果集群無(wú)法阻絕某個(gè)發(fā)生故障的節(jié)點(diǎn),那么你的GFS將會(huì)出現(xiàn)很多問(wèn)題,因此不要跳過(guò)這個(gè)步驟。 創(chuàng)建集群設(shè)置 你可以通過(guò)/etc/cluster/里面的cluster.conf完成大部分的集群設(shè)置。我不建議使用各種集群管理應(yīng)用程序來(lái)創(chuàng)建這個(gè)設(shè)置文件。即使是完全支持的RHEL應(yīng)用程序,比如兩個(gè)月前發(fā)布的Conga,也經(jīng)常會(huì)創(chuàng)建一些無(wú)效的cluster.conf文件,并且無(wú)法被必要的服務(wù)所解析。 下面是一個(gè)cluster.conf文件的例子。這個(gè)設(shè)置文件采用漂亮的XML格式,其內(nèi)容非常直接。首先,我們對(duì)集群進(jìn)行命名,我們將這個(gè)集群稱(chēng)作"Web.1". 先跳過(guò)fence daemon選項(xiàng),下一個(gè)部分就是集群主體的設(shè)置內(nèi)容。你需要在clusternodes部分定義兩個(gè)節(jié)點(diǎn)。設(shè)置文件將同時(shí)存放在兩個(gè)節(jié)點(diǎn)上,這樣這兩個(gè)節(jié)點(diǎn)就都知道彼此的情況。 集群內(nèi)的每個(gè)節(jié)點(diǎn)都聲明其阻絕方式的名稱(chēng)是獨(dú)一無(wú)二的。在clusternames結(jié)束標(biāo)簽下面,我們看到fencedevice部分定義了每個(gè)節(jié)點(diǎn)如何阻絕其他節(jié)點(diǎn)的方式。使用一個(gè)支持IPMI(智能平臺(tái)管理接口)的服務(wù)器是最好的方式,而且其設(shè)置也是相當(dāng)簡(jiǎn)單。你只要將IPMI的地點(diǎn)以及登錄方式告訴IP就可以了。為了避免在cluster.conf中留下密碼,你可以將它指向一個(gè)由根所擁有的腳本并由這個(gè)腳本來(lái)返回密碼。 我們還要指出的是我們?cè)谠O(shè)置中定義了兩個(gè)節(jié)點(diǎn)。這是必須的,因?yàn)橥ǔ?lái)說(shuō),除非大部分節(jié)點(diǎn)都同意自己的狀態(tài),否則集群無(wú)法達(dá)到"Quorate"狀態(tài)。如果只有兩個(gè)節(jié)點(diǎn)的話,沒(méi)有肯定多數(shù),因此這種方式讓集群只能在兩個(gè)節(jié)點(diǎn)下工作,而不能只在只有一個(gè)節(jié)點(diǎn)的情況下工作。這是設(shè)置基本集群的必要方式。 在每個(gè)節(jié)點(diǎn)上運(yùn)行"service cman start",系統(tǒng)應(yīng)該可以開(kāi)始正常運(yùn)作。你可以檢查"clustat"或"cman nodes"來(lái)確認(rèn)節(jié)點(diǎn)是否良好運(yùn)行。如果有哪個(gè)必要的部分沒(méi)有啟動(dòng),那么集群將不會(huì)顯示"Quorate"狀態(tài)。 GFS設(shè)置 首先,我們需要設(shè)置CLVM,這樣我們才可以通過(guò)GFS使用LVM.激活CLVM只要在lvm.conf中設(shè)定"locking type=3"就可以了。 然后,就像平常一樣創(chuàng)建一個(gè)LVM卷組和卷,但是使用的是共享的塊設(shè)備。如果你使用的是DRBD,你將有可能使用/dev/drbd0.我創(chuàng)建了一個(gè)物理卷,然后創(chuàng)建一個(gè)名為vg01的卷組,然后創(chuàng)建一個(gè)名為web1的邏輯卷,這個(gè)卷在:/dev/vg01/web1. 最后,我們需要?jiǎng)?chuàng)建文件系統(tǒng): gfs_mkfs -t web1:mygfs -p lock_dlm -j 2 /dev/vg01/web1 -t中給定的名稱(chēng)必須是集群的名稱(chēng),然后后面是你給這個(gè)文件系統(tǒng)所起的名字。只有web1集群的成員才可以載入這個(gè)文件系統(tǒng)。然后,設(shè)定分布式鎖管理器的鎖鑰類(lèi)型,指明你需要兩份journal(因?yàn)檫@是一個(gè)雙節(jié)點(diǎn)集群)。如果你預(yù)計(jì)未來(lái)要增加更多的節(jié)點(diǎn),那么你需要在這時(shí)設(shè)定足夠高的journal數(shù)量。 總結(jié) 我們現(xiàn)在可以開(kāi)始使用這個(gè)文件系統(tǒng)了。在兩個(gè)節(jié)點(diǎn)上啟動(dòng)"clvmd"和"gfs"服務(wù)。現(xiàn)在你就可以通過(guò)"-t gfs"來(lái)將類(lèi)型指定為GFS,從而載入文件系統(tǒng)。 在開(kāi)始啟動(dòng)之前,一定要設(shè)定好cman,clvmd和gfs服務(wù)。你最好能熟悉clustat和gfs_tool命令,因?yàn)樵谙到y(tǒng)出現(xiàn)問(wèn)題的時(shí)候,你可以用這些命令來(lái)查找問(wèn)題所在。 不要指望GFS能很快。如果有一個(gè)節(jié)點(diǎn)在進(jìn)行大量的寫(xiě)入操作的話,那么在訪問(wèn)文件系統(tǒng)的時(shí)候出現(xiàn)停頓是很正常的。對(duì)于一個(gè)數(shù)據(jù)讀取操作比數(shù)據(jù)寫(xiě)入操作多得多的Web集群來(lái)說(shuō),這倒不是什么問(wèn)題。如果出現(xiàn)明顯延遲,那么首先要檢查一下所有組件的狀況,然后評(píng)估正在寫(xiě)入的數(shù)據(jù)。防止延遲現(xiàn)象的最常見(jiàn)措施就是確保HTTP對(duì)話中的數(shù)據(jù)不是寫(xiě)入GFS卷。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |