什麼是DRBD?
DRBD 是由內核模塊和相關腳本而構成,用以構建高可用性的集群。其實現方式是通過網絡來鏡像整個設備。您可以把它看作是一種網絡RAID。
drbd 的應用范圍是什麼?除此之外,創建高可用性集群還需要什麼?
Drbd 負責接收數據,把數據寫到本地磁盤,然後發送給另一個主機。另一個主機再將數據存到自己的磁盤中。其他所需的組件有集群成員服
務,如TurboHA 或心跳連接,以及一些能在塊設備上運行的應用程序。
例如:
o 裸I/O
o 文件系統及fsck
o 具有恢復能力的數據庫。
它是如何工作的?
每個設備(drbd 提供了不止一個設備)都有一個狀態,可能是‘主’狀態或‘輔助’狀態。在帶有主要設備的節點上,應用程序應能運行和
訪問設備(/dev/nbX)。每次寫入都會發往本地低層設備和帶有‘輔助’狀態設備的節點中。次要設備只能簡單地把數據寫入它的低層塊設
備上。讀取數據通常在本地進行。如果主要節點發生故障,心跳將會把輔助設備轉換到主狀態,並啟動其上的應用程序。(如果您將它和無
日志FS 一起使用,則需要運行fsck)。
如果發生故障的節點恢復工作,它就會成為新的輔助節點,而且必須使自己的內容與主節點的內容保持同步。當然,這些操作不會干擾到後
台的服務。
drbd 同現在的HA 集群有什麼關系?
大部分現行高可用性集群(如:惠普、康柏等等)使用的是共享存儲器,因此存儲器連接多個節點(用共享的SCSI 總線或光纖通道就可以
做到)。Drbd 也可以作為一個共享的設備,但是它並不需要任何不常見的硬件。它在IP 網絡中運行,而且在價格上IP 網絡要比專用的存
儲網絡經濟的多。目前,drbd 每次只允許對一個節點進行讀寫訪問,這對於通常的故障切換高可用性集群來講已經足夠用了。以後的版本
將支持兩個節點進行讀寫存取。這很有用,比如對GFS 來講就是如此。兼容性Drbd 可以在ide、SCSI 分區和整個驅動器之上運行,但不能
在回路模塊設備上運行。(如果您硬要這樣做,它就會發生死鎖)。Drbd 也不能在回送網絡設備中運行。(因為它同樣會發生死鎖:所有
請求都會被發送設備占用,發送流程也會阻塞在sock_sendmsg()中。有時,接收線程正從網絡中提取數據塊,並試圖把它放在高速緩存器
中;但系統卻要把一些數據塊從高速緩存器中取到磁盤中。這種情況往往會在接收器的環境下發生,因為所有的請求都已經被接收器塊占用
了。
安裝
下載軟件
最新的穩定版本為0.6.11,您可從http://www.drbd.org/releases.html 下載它。
環鏡:redhat9.0 drbd.0.7.10.tar.gz
配置:查看解壓的INSTALL文件。
1.[wanwan@root]cd /usr/src/linux-2.4
2.[wanwan@root]make mrproper
3.[wanwan@root]cp configs/kernel-2.4.20-i586.config ./config
4.[wanwan@root]make -s oldconfig_nonint ; make -s oldconfig_nonint
5.[wanwan@root] vi Makefile 修改 -8customer 把 customer刪除
6.[wanwan@root] make dep
7.[wanwan@root]make include/linux/version.h
解壓drbd-0.7.10
8.[wanwan@root]cd /usr/src/drbd-0.7.10/drbd
9.[wanwan@root]make clean all
10.[wanwan@root]make;
11.[wanwan@root]make install;
測試加載drbd 模塊
如果這些都已經創建和安裝妥當,您就可以測試加載模塊了。
$ /sbin/insmod drbd
如果一切正常,您不會看見任何ERROR(錯誤)信息,用Ismod 程序可以驗證模塊是否已被加載。
dev2-98:~/rpm/SPECS # lsmod
最後修改配置文件/etc/drbd.conf
參考如下:
resource drbd0 { //設備名
protocol C;
incon-degr-cmd "echo '!DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f";
startup {
degr-wfc-timeout 120;
}
disk {
on-io-error detach;
}
 .net {
}
syncer {
rate 10M;
group 1;
al-extents 257;
}
on Web_1{ //主機名
device /dev/drbd0; //設備名
disk /dev/sda2; //硬盤符
address 192.168.3.195:7788; //主機IP地址:端口
meta-disk internal;
}
on web_2 { //輔計算機
device /dev/drbd0; //設備名
disk /dev/sda5; //硬盤符
address 192.168.2.250:7788; //IP地址:端口
meta-disk internal;
}
另:增設為主鏡像 drdbsetup /dev/drbd0 primary --do-what-I-say;
建立虛擬設備for i in `seq 0 15` ; do mknod -m 0660 /dev/drbd$i b 147 $i; done
鏡像設備名:mount /dev/drbd0 /dev/sda2
啟動drbd /etc/init.d/drbd start/stop/reload/restart/
後續的應用等續.