兩臺(tái)linux完美實(shí)現(xiàn)雙機(jī)熱備
一直想做基于linux的雙機(jī)熱備,一直沒(méi)有時(shí)間和機(jī)會(huì)。一直以為只要做雙機(jī)熱備的實(shí)驗(yàn)就必須兩臺(tái)機(jī)器外接一個(gè)存儲(chǔ)。甚至一個(gè)月以前在學(xué)習(xí)keepalived的時(shí)候還在琢磨keepalvied去掉哪些條件可以實(shí)現(xiàn)雙機(jī)熱備。直到一個(gè)月以前設(shè)計(jì)存儲(chǔ)方案的時(shí)候部門(mén)老大給了一個(gè)國(guó)外的鏈接介紹drbd+nfs實(shí)現(xiàn)nfs的熱備方案的時(shí)候,我的眼前一亮,這不就是我一直想做的不依靠存儲(chǔ)實(shí)現(xiàn)熱備的解決方案嗎?
先來(lái)糾正一下自己的錯(cuò)誤認(rèn)識(shí)吧,沒(méi)接觸keepalived和heartbeat的時(shí)候,道聽(tīng)途說(shuō)的認(rèn)為keepalived出現(xiàn)以后就沒(méi)有必要再用heartbeat了。在仔細(xì)學(xué)習(xí)了這兩個(gè)傳奇人物以后發(fā)現(xiàn):keepavled是專門(mén)為高可用的集群而誕生的,而heartbeat生是雙機(jī)熱備的人死是雙機(jī)熱備的死人。
好了,說(shuō)說(shuō)本文實(shí)現(xiàn)的原理吧。大體來(lái)說(shuō)就是heartbeat+drbd。heartbeat自是不用說(shuō),用它來(lái)實(shí)現(xiàn)資源的統(tǒng)一調(diào)度;而drbd就是本文的重頭戲。這一個(gè)什么東東呢?官方的東東咱就不說(shuō)了。用咱們自己的話說(shuō),就是實(shí)現(xiàn)兩臺(tái)機(jī)器的兩塊硬盤(pán)的實(shí)時(shí)完整復(fù)制(drbd即磁盤(pán)鏡像)。它的出現(xiàn),解決了兩臺(tái)機(jī)器做雙機(jī)時(shí)的數(shù)據(jù)一致性問(wèn)題。
ok,廢話半天,說(shuō)一下本文的實(shí)現(xiàn)環(huán)境:
os:ubuntu9.04ip1:192.168.1.11 drbd1ip2:192.168.1.12 drbd2disk:/dev/sdb1(一個(gè)8G的分區(qū))通過(guò)drbd,掛在每臺(tái)機(jī)器上的sdb1這塊分區(qū)將成為咱們“存儲(chǔ)”。let's go !
++++++現(xiàn)在開(kāi)始兩臺(tái)機(jī)器配置一樣++++++
1.設(shè)定hostsvi /etc/hosts192.168.1.11 drbd1192.168.1.12 drbd2注意:比如在1.11這臺(tái)機(jī)器上。drbd1是你執(zhí)行hostname命令看到的,而不是隨手一寫(xiě)的喲:)
2.安裝并配置drbd
1).安裝drbd。
你可以去http://oss.linbit.com/drbd/下載最新的版本。本文為了方便直接從ubuntu的源進(jìn)行安裝apt-get install drbd8-utils
2).創(chuàng)建配置文件
如果用apt-get或者yum的方式安裝的話,會(huì)默認(rèn)創(chuàng)建配置文件,而編譯安裝則不會(huì)。不管直接清空或改名,寫(xiě)入以下內(nèi)容。
vi /etc/drbd.confcommon { syncer { rate 10M; } #速率}resource r0 { protocol C; disk { on-io-error detach; } on drbd1 { #drbd1為第一臺(tái)機(jī)器的機(jī)器名 device /dev/drbd0; #創(chuàng)建的虛擬資源 disk /dev/sdb1;#實(shí)際的物理分區(qū),一定要注意,是一個(gè)單獨(dú)的分區(qū),而且是未經(jīng)格式化的 address 192.168.1.11:7788; #第一臺(tái)機(jī)器的ip地址,及通訊端口 meta-disk internal; #類型,局域網(wǎng) } on drbd2 { device /dev/drbd0; disk /dev/sdb1; address 192.168.1.12:7788; meta-disk internal; } }
3)創(chuàng)建資源
drbdadm create-md r0 #r0為剛才配置文件里的資源名會(huì)提示三個(gè)疑問(wèn),如果你英文還可以的話,可以閱讀一下,不然的話,直接回車。在終點(diǎn)你會(huì)看到success:)
4)啟動(dòng)drbd服務(wù)
/etc/init.d/drbd startcat /proc/drbd你應(yīng)該可以看到
注意里面我標(biāo)注的"Secondary/Secondary"意思是說(shuō)現(xiàn)在這塊盤(pán)是從盤(pán),主盤(pán)不知道。
#p#++++++現(xiàn)在開(kāi)始只在drbd1上操作++++++
5)初始化網(wǎng)絡(luò)硬盤(pán)
drbdsetup /dev/drbd0 primary -ocat /proc/drbd

你會(huì)發(fā)現(xiàn)現(xiàn)在已經(jīng)是"Primary/Secondary"了,而且已經(jīng)開(kāi)始同步硬盤(pán)狀態(tài)。
為了實(shí)時(shí)的查看同步情況,你可以在drbd1上執(zhí)行
watch -n1 cat /proc/drbd

同步還在進(jìn)行

經(jīng)過(guò)一段時(shí)間的等待,你會(huì)發(fā)現(xiàn)成功完成!

同步完成以后,在drbd2上查看硬盤(pán)狀態(tài)

注意磁盤(pán)狀態(tài)是:"Secondary/Primary"
格式化網(wǎng)絡(luò)磁盤(pán)

6)設(shè)置drbd開(kāi)機(jī)啟動(dòng)
在兩臺(tái)機(jī)器上都執(zhí)行
chkconfig drbd on
7)手工測(cè)試drbd是不是正常工作
在drbd1上建立3個(gè)文件

在drbd2上驗(yàn)證結(jié)果

ok,我們現(xiàn)在已經(jīng)確定drbd是正常工作的了。也相信在這么細(xì)致的介紹下,你已經(jīng)熟悉了它是怎么工作了。我們現(xiàn)在有了“網(wǎng)絡(luò)存儲(chǔ)”了。下一步就是讓一個(gè)東東幫我們調(diào)度資源了。簡(jiǎn)單的幾步配置有請(qǐng)heartbeat出場(chǎng)
3.配置heartbeat
1)安裝heartbeat
apt-get install heartbeat
2)配置heartbeat
vi /etc/heartbeat/ha.cflogfacility local0keepalive 2deadtime 10auto_failback offbcast eth0node drbd1 drbd2
vi /etc/heartbeat/haresourcesdrbd1 drbddisk::r0 Filesystem::/dev/drbd0::/mnt::ext3
vi authkeysauth 33 md5 abc
chmod 600 authkeys
3)相同的配置復(fù)制到drbd2
scp authkeys haresources ha.cf root@192.168.1.12:/etc/heartbeat/

4)確保服務(wù)都是正常運(yùn)行的
/etc/init.d/drbd start/etc/init.d/heartbeat start
5)切換測(cè)試
通過(guò)cat /proc/drbd查看drbd的狀態(tài)或者mount查看/mnt是不是已經(jīng)掛載確定資源所在的機(jī)器。然后在那臺(tái)機(jī)器的/mnt新建立一些文件并停掉那臺(tái)機(jī)器上的heartbeat??戳硪慌_(tái)機(jī)器上/mnt是不是被自動(dòng)掛載了呢?里面是不是有剛創(chuàng)建的文件?good luck!
總結(jié):基本兩臺(tái)linux實(shí)現(xiàn)的雙機(jī)熱備到此就要結(jié)束了?;仡櫼幌颅h(huán)境:兩臺(tái)機(jī)器;兩塊獨(dú)立的分區(qū),最好是一樣大,只分區(qū),而沒(méi)有格式化;linux操作系統(tǒng);drbd網(wǎng)絡(luò)磁盤(pán);heartbeat實(shí)現(xiàn)資源調(diào)度;好像就這么多東西吧??赡苣f(shuō)了,看完這篇文章,一點(diǎn)實(shí)際意義都沒(méi)有,因?yàn)橹皇菍?shí)現(xiàn)了共享磁盤(pán)。哈哈,我要說(shuō),要想發(fā)揮威力就要仔細(xì)的看一下heartbeat的資源調(diào)度了,有了這位大管家,還有啥實(shí)現(xiàn)不了的服務(wù)呢?
【編輯推薦】















 
 
 



 
 
 
 