理論總結:
DRBD:distributed replicated block device分佈式複製塊設備,基於主機通過網絡複製數據,是內核中控制複製數據的一個模塊
drbdadm:用戶空間的管理工具,需要分析配置參數來實現對drbd的控制
drbd運行在兩個節點,默認爲主從,主從可以切換
Master/Master模式:
1、文件系統必須爲集羣文件系統如:GFS2;OCFS2(本身提供高可用功能)
2、使用高可用環境
3、使用分佈式鎖DLM
Master/Slave模式:
1、可以使用普通文件系統
2、可以切換主從角色
3、如果需要爲高可用提供存儲空間,需要將DRBD作爲HA的一個資源
4、從節點不可讀、不可寫、不可掛載
複製協議:
ProtocolA:異步,數據被送到TCP/IP協議緩衝區就宣佈複製完成
ProtocolB:半同步,也稱內存同步,數據發送到從節點的內存接收緩衝區
ProtocolC:異步,數據寫到對方的磁盤
準備工作:
1、 使主機能正常解析兩節點:
- #vim /etc/hosts
- 172.16.3.11 cluster1.luck.com cluster1
- 172.16.3.12 cluster2.luck.com cluster2
注意:
2、 在兩節點上建立雙機互信如在節點cluster1上:
- #ssh-keygen –t rsa
- #ssh-copy-id –i .ssh/id_rsa.pub [email protected]
3、 使兩節點的時間保持同步
4、 在兩節點上新建立一個屬性大小都相同的分區,分區儘可能小
假設節點cluster1的新建分區爲/dev/sda5,cluster2的爲/dev/sda6
安裝與配置:基本上兩節點配置相同,已建立了雙機互信,可以直接拷貝相同文件(命令scp)
下載rpm包:
drbd共有兩部分組成:內核模塊和用戶空間的管理工具。其中drbd內核模塊代碼已經整合進Linux內核2.6.33以後的版本中,因此,如果您的內核版本高於此版本的話,你只需要安裝管理工具即可;否則,您需要同時安裝內核模塊和管理工具兩個軟件包,並且此兩者的版本號一定要保持對應。
目前在用的drbd版本主要有8.0、8.2和8.3三個版本,其對應的rpm包的名字分別爲drbd, drbd82和drbd83,對應的內核模塊的名字分別爲kmod-drbd, kmod-drbd82和kmod-drbd83。各版本的功能和配置等略有差異;我們實驗所用的平臺爲x86且系統爲rhel5.4,因此需要同時安裝內核模塊和管理工具。我們這裏選用最新的8.3的版本(drbd83-8.3.8-1.el5.centos.i386.rpm和kmod-drbd83-8.3.8-1.el5.centos.i686.rpm),下載地址爲:http://mirrors.sohu.com/centos/5.6/extras/i386/RPMS/。
安裝:
- #rpm –ivh drbd83-8.3.8-1.el5.centos.i386.rpm
- #rpm –ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
drbd的主配置文件爲/etc/drbd.conf;爲了管理的便捷性,目前通常會將些配置文件分成多個部分,且都保存至/etc/drbd.d目錄中,主配置文件中僅使用"include"指令將這些配置文件片斷整合起來。通常,/etc/drbd.d目錄中的配置文件爲global_common.conf和所有以.res結尾的文件。其中global_common.conf中主要定義global段和common段,而每一個.res的文件用於定義一個資源。
爲drbd準備配置文件:
- #cp /usr/share/doc/drbd83-8.3.8/drbd.conf /etc
爲drbd配置參數,編輯global_common.conf文件添加如下幾個參數:
- #vim /etc/drbd.d/global_common.conf
- disk {
- on-io-error detach;
- }
- net {
- cram-hmac-alg “sha1”; #定義在
- shared-secred “mysajfkafkjaklj”;
- }
- syncer {
- rate 1000M;
- }
定義一個資源/etc/drbd.d/web.res,內容如下:
注意:資源名不能有空白,且只能是ASCII碼
- #vim /etc/drbd.d/web.res
- resouce web { #資源名爲“web”
- device /dev/drbd0; #指出drbd的標示名
- meta-disk internal; #網絡通信屬性
- on cluster1.luck.com { #設置節點cluster1
- disk /dev/sda5; #指出作爲drbd的設備
- address 172.16.3.11:7789; #指定ip和端口號
- }
- on cluster2.luck.com {
- disk /dev/sda6;
- address 172.16.3.12:7789;
- }
以上文件兩個節點上必須相同,因此可以基於ssh將剛纔配置的文件同步到cluster2節點上:
- #scp /etc/drbd.* clusters2:/etc
在兩個節點上初始化已定義的資源並啓動服務:
1)初始化資源,在兩節點執行:
- # drbdadm create-md web
2)啓動服務,在cluster1和cluster2上分別執行:
- #/etc/init.d/drbd start
以下兩個命令可以查看啓動狀態:
- # cat /proc/drbd
- # drbd-overview
注意命令執行後可以看到“Secondary/Secondary”的關鍵字,此信息表示兩個節點都處於secondary狀態
設置節點cluster1的狀態爲primary:
- # drbdsetup /dev/drbd0 primary –o
設置主節點的命令還可寫爲:
- # drbdadm -- --overwrite-data-of-peer primary web
而後再次查看狀態,可以發現數據同步過程已經開始,等數據同步完成以後再次查看狀態,可以發現節點已經實時狀態,且節點已經有了主次
- # drbd-overview
創建文件系統:
文件系統的掛載只能在Primary節點進行,因此,也只有在設置了主節點後才能對drbd設備進行格式化:
- # mke2fs -j -L DRBD /dev/drbd0
- # mkdir /mnt/drbd
- # mount /dev/drbd0 /mnt/drbd
切換主從節點時,要先把現在狀態爲primary的 節點設爲secondary:
假如cluster1節點的狀態爲primary,下面來驗證主從drbd的複製:
Cluster1:
- # cp -r /etc/drbd.* /mnt/drbd
- # umount /mnt/drbd
- # drbdadm secondary web
查看狀態:
- # drbd-overview
- 0:web Connected Secondary/Secondary UpToDate/UpToDate C r----
Cluster2:
- # drbdadm primary web
- # drbd-overview
- 0:web Connected Primary/Secondary UpToDate/UpToDate C r----
- # mkdir /mnt/drbd
- # mount /dev/drbd0 /mnt/drbd
使用下面的命令查看在此前在主節點上覆制至此設備的文件是否存在:
- # ls /mnt/drbd