如何將有問題節(jié)點從Linux集群中脫離出來
在之前有關數(shù)據(jù)中心高可用性系列的文章中,我們講了如何搭建Linux高可用的架構。同時也讓你知道“shoot the other node in the head(使出現(xiàn)問題的節(jié)點從集群環(huán)境中脫離,簡稱:STONITH)”技術對于確保在Linux集群中共享存儲集成的重要性。在本篇中,你將會學到如何實施“split brain detection(分腦檢測,簡稱:SBD)”STONITH,作為一個使用共享磁盤設備的STONITH程序,可以方便的在大部分環(huán)境中進行實施。
目前針對STONITH,有許多不同的程序可被使用。SBD STONITH的優(yōu)勢在于部署的方便性和可靠性。唯一的要求是Linux環(huán)境中必須有共享存儲。典型意義上說,就是需要一個“光纖存儲網(wǎng)絡——storage area network”(英文簡稱:SAN)。如果你沒有一個SAN網(wǎng)絡,你也可以使用Linux的iSCSI功能來搭建,有關iSCSI的介紹將會在之后的系列中詳細闡述。
在SBD STONITH里,Linux集群的節(jié)點們使用心跳機制來保持互相之間的信息更新。如果集群中的一個節(jié)點發(fā)生錯誤,一條有關此節(jié)點的錯誤記錄就會被寫下并發(fā)送到共享的存儲設備。當文件系統(tǒng)資源安全的切換到Linux集群的另一個節(jié)點上之后,此節(jié)點就必須接受這條錯誤信息并自己關閉自己。
SBD STONITH是一個簡單但有效的方法用來確保在Linux集群環(huán)境中數(shù)據(jù)和其他節(jié)點的集成,但是要實現(xiàn)這個功能的前提條件是必須能夠進入SAN環(huán)境。接下去的步驟描述了如何搭建SBD STONITH環(huán)境。
1.首先,你必須創(chuàng)建一個小的邏輯單位(LUN)卷。理論上1MB就足夠了,但是為了安全起見,最好的辦法是創(chuàng)建一個至少一柱(一般為8MB)的SBD。接下來,你需要找到這個LUN設備獨一無二的設備名稱,因為這個將會被集群中的節(jié)點們看到。典型意義上來說,你會使用multipath –l命令在Linux集群中的一個節(jié)點來找出這個LUN所使用的獨一無二的設備名稱。
2.現(xiàn)在作為root用戶,從眾多節(jié)點中的一個命令行開始,你需要標記你剛剛創(chuàng)建的SBD設備的LUN,使用sbd -d <devicename> create 命令。這條命令會將SBD的信息寫入設備,所以不管你使用哪個設備名稱,只要你能從那個節(jié)點看到這個設備就行。確保當使用此設備工作時,你工作的設備名稱不會改變。那就意味著你應該使用/dev/disk/by-id 在一開始來命名設備名稱。雖然這些名字又長又丑,但是至少他們不會改變。你可以使用ls-l 命令來查閱“簡單的”設備名稱。所以定義這個設備/dev/disk/by-id/scsi-149455400000000000000000003000000250600000f000000 作為SBD STONITH 設備, 使用sbd -d /dev//disk/by-id/scsi-149455400000000000000000003000000250600000f000000 來創(chuàng)建。
4.此時,你可以使用sbd -d /dev/disk/by-id/scsi-149455400000000000000000003000000250600000f000000 dump 命令來查看哪些被寫入了此設備。這給予了你類似下文的一份輸出
Listing: Requesting current SBD information using sbd -d <device> dump
xen1:/dev/disk/by-id # sbd -d /dev/disk/by-id/scsi-149455400000000000000000003000000250600000f000000 dump
Header version : 2
Number of slots : 255
Sector size : 512
Timeout (watchdog) : 2
Timeout (allocate) : 2
Timeout (loop) : 1
Timeout (msgwait) : 4
4.另外,使用kernel watchdogs來建立Linux系統(tǒng)也是必需的,其作用是幫助系統(tǒng)檢測在集群中是否有節(jié)點被hung住。最優(yōu)的方法是使用硬件協(xié)助的warchdog。如果,由于某些原因,這個方法對你正使用的硬件不適用,你可以使用watchdog的軟件版本。要操作此步驟,在集群的所有節(jié)點中,位于/etc/init.d/boot.local文件里增加一行modprobe softdog就可以。
5.此時,你可以啟動Linux高可用管理客戶端以及使用用戶hacluster登錄。選擇Configuration > Resources并點擊Add。
6.在Add窗口中,選擇Primitive 類型并點擊OK。接著進入ID sbd-stonith。 確保下面的幾組參數(shù)設定好:
•ID: sbd
•Class: stonith
•Type: external/sbd
7.在Instance Attributes選項卡上,你可以看到參數(shù)sbd_device當前并沒有值。點擊Edit,進入SBD設備的block設備名稱。你必須確保block設備名稱在Linux集群的所有節(jié)點上是相同的,所以確保使用/dev/disk/by-id names來完成這個操作。
8.現(xiàn)在點擊OK, 接著是兩次Apply,在你的集群中增加資源。
9.要完成此步驟,你還要在所有節(jié)點上創(chuàng)建一個文件,名為/etc/sysconfig/sbd。在此文件中,你必須定義兩個參數(shù)。SBD_DEVICE 參數(shù)告訴集群軟件當負載時,哪個設備必須使用SBD設備。SBD_OPTS 參數(shù)則用來告訴使用哪個開始參數(shù)。在接下去的列表中,有個例子來展示這個文件看上去的樣子。千萬不要忘記將sbd設備的名字放在/etc/sysconfig/sbd文件里,不然它不能正常工作。
Listing:
xen1:/dev/disk/by-id # cat /etc/sysconfig/sbd
SBD_DEVICE="/dev/disk/by-id/scsi-14945540000000000000000000300000026060 0000f000000-"
SBD_OPTS="-W"
此時,STONITH就配置好了,你可以重啟集群中的節(jié)點來確認是否工作正常。一旦重啟了,你會看到STONITH代理從心跳管理接口直接啟動。你的Linux集群現(xiàn)在就在一個安全區(qū)域內(nèi),所以你可以開始創(chuàng)建你想去保護的高可用資源。在本系列的下一篇中,你會學到如何在Linux高可用環(huán)境中搭建Apache。
TechTarget中國原創(chuàng)內(nèi)容,原文鏈接:http://www.searchdatacenter.com.cn/showcontent_53594.htm