原文:http://blog.chinaunix.net/uid-26719405-id-3904528.html
html
DRBD(Distributed Replicated Block Device),分佈式複製塊設備,是一種經過TCP/IP網絡實現塊設備數據實時鏡像的方案。利用這種方案,單一主節點模式(single primary mode)雙機系統可以實時地將業務數據保存在主備節點的磁盤中,正常狀況下兩個節點的數據是如出一轍的。node
drbd的結構示意圖及工做原理mysql
從上圖咱們能夠 清晰的看出drbd是以主從(Primary/Secondary)方式工做的,這點原理與mysql的主從複製的架構有些類似。主節點上的drbd提高爲Primary並負責接收寫入數據,當數據到達drbd模塊時,一份繼續往下走寫入到本地磁盤實現數據的持久化,同時並將接收到的要寫入的數據發送一分到本地的drbd設備上經過tcp傳到另一臺主機的drbd設備上(Secondary node),另外一臺主機上的對應的drbd設備再將接收到的數據存入到本身的磁盤當中。這裏與mysql的基於經過二進制日誌完成數據的複製的確很類似,可是也有一些不一樣之處。好比:mysql的從節點不能寫可是能夠讀,可是drbd的從節點是不能讀、不能掛載。sql
所以,drbd對同一設備塊每次只容許對主節點進行讀、寫操做,從節點不能寫也不能讀。這樣感受是否是對主機有資源浪費,的確HA架構中爲了提供冗餘能力是有資源浪費,可是你能夠對上圖的兩臺主機創建兩個drbd資源並互爲主從,這樣兩臺機器都能利用起來,可是配置起來就複雜了。可是話又說回來,用drbd做爲廉價的共享存儲設備,要節約不少成本,由於價格要比專用的存儲網絡便宜不少,其性能與穩定性方面也還不錯。vim
drbd的複製模式(協議)安全
A協議:服務器
異步複製協議。一旦本地磁盤寫入已經完成,數據包已在發送隊列中,則寫被認爲是完成的。在一個節點發生故障時,可能發生數據丟失,由於被寫入到遠程節點上的數據可能仍在發送隊列。儘管,在故障轉移節點上的數據是一致的,但沒有及時更新。所以,這種模式效率最高,可是數據不安全,存在數據丟失。網絡
B協議:架構
內存同步(半同步)複製協議。一旦本地磁盤寫入已完成且複製數據包達到了對等節點則認爲寫在主節點上被認爲是完成的。數據丟失可能發生在參加的兩個節點同時故障的狀況下,由於在傳輸中的數據可能不會被提交到磁盤異步
C協議:
同步複製協議。只有在本地和遠程節點的磁盤已經確認了寫操做完成,寫才被認爲完成。沒有數據丟失,因此這是一個羣集節點的流行模式,但I/O吞吐量依賴於網絡帶寬。所以,這種模式數據相對安全,可是效率比較低。
一.環境
系統:Centos6.1 x86
DRBD: 8.3.9編譯安裝 (http://www.drbd.org)
Hostname :www.cheng.com
Ip: 192.168.0.11
Hostname : www.bao.com
Ip : 192.168.0.22
二.編譯安裝drbd (兩臺機器作一樣的操做)
安裝依賴軟件包 yum install kernel-devel -y
Wget http://oss.linbit.com/drbd/8.3/drbd-8.3.9.tar.gz
tar -zxvf drbd-8.3.9.tar.gz
cd drbd-8.3.9
./configure --prefix=/ --with-km
make && make install
chkconfig --add drbd
Chkconfig drbd on
檢查是否安裝成功: drbdadm
是否能夠看到版本信息: cat /proc/drbd
重啓後再次檢查 : cat /proc/drbd
三.配置服務器中的hostname hosts
[root@www /]# vim /etc/hosts
添加 192.168.0.11 www.cheng.com
192.168.0.11 www.bao.com
三.在兩個服務器上單獨分區一個分區或者添加一個空的硬盤 (兩臺機器作一樣的操做)
/dev/sdb5
四.配置drbd
注意,新版本的DRBD的配置文件已拆分紅多個,所有放在/etc/drbd.d/目錄,具體可參考/etc/drbd.conf中的配置.
若是開了iptables防火牆,須要打開對應的7789端口。
在主節點配置
[root@www /]# vim /etc/drbd.d/dbdata.res
resource dbdata {
on www.cheng.com{
device /dev/drbd1;
disk /dev/sdb5;
address 192.168.0.11:7789;
meta-disk internal;
}
on www.bao.com{
device /dev/drbd1;
disk /dev/sdb5;
address 192.168.0.22:7789;
meta-disk internal;
}
}
建立drbd設備
[root@www /]# drbdadm create-md all
[root@www /]# /etc/init.d/drbd restart
查看是否有相應的塊設備:
[root@www /]# ls -l /dev/drbd1
[root@www /]# cat /proc/drbd
如今能夠查看DRBD的狀態,而後在www.cheng.com主機上執行:
[root@www /]# cat /proc/drbd
五.使用drdb
數據同步完成後在主機上
[root@www /]# drbdadm -- --overwrite-data-of-peer primary dbdata
[root@www /]# mkfs.ext3 /dev/drbd1 #格式化
[root@www /]# mount /dev/drbd1 /mnt/
如今能夠把主機上的DRBD設備掛載到一個目錄上進行使用.備機的DRBD設備沒法被掛載,由於它是,用來接收主機數據的,由DRBD負責操做.
六.Drbd主備機切換
有時,你須要將DRBD的主備機互換一下.能夠執行下面的操做:
在主機上,先要卸載掉DRBD設備.
對192.168.0.11 進行降級操做
[root@www /]# umount /mnt #必須先卸載
[root@www /]# drbdadm secondary dbdata #切換成備機
在備機器上進行升級操做
[root@www /]# drbdadm primary dbdata #切換成主機
成爲了」主機」.你能夠把它的/dev/drbd1進行掛載和使用了.一樣,數據會被同步到192.168.0.22上進行使用了