1、DRBD安裝
1.1、安裝依賴包:
- yum -y install gcc kernel-devel kernel-headers flex
下載安裝drbd源碼包:
- wget http://oss.linbit.com/drbd/8.4/drbd-8.4.1.tar.gz
- tar xzf drbd-8.4.1.tar.gz
- cd drbd-8.4.1
- ./configure --prefix=/usr/local/drbd --with-km
- make KDIR=/usr/src/kernels/2.6.32-220.17.1.el6.x86_64/
- make install
- mkdir -p /usr/local/drbd/var/run/drbd
- cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d
- chkconfig --add drbd
- chkconfig drbd on
KDIR=中指定的系統內核源碼路徑,根據實際情況設置
1.2、安裝drbd模塊:
- cd drbd
- make clean
- make KDIR=/usr/src/kernels/2.6.32-220.17.1.el6.x86_64/
- cp drbd.ko /lib/modules/`uname -r`/kernel/lib/
- depmod
2、DRBD配置
首先對/dev/sda設備分區/dev/sda3(這一步我是在裝系統時就分區了),在根目錄下建立/drbdData文件夾,名字自定義,供后面掛載/dev/sda3分區設備用。
2.1、配置global_common.conf
- vi /usr/local/drbd/etc/drbd.d/global_common.conf
確保文件中包含有下內容:
- global {
- usage-count yes;
- }
- common {
- net {
- protocol C;
- }
- }
當然,還可以有其它配置,這是最基本的。
2.2、配置r0資源:
- vi /usr/local/drbd/etc/drbd.d/r0.res
寫入文件內容:
- resource r0{
- on masterNode{
- device /dev/drbd1; #邏輯設備的路徑
- disk /dev/sda3; #物理設備
- address 192.168.58.128:7788;
- meta-disk internal;
- }
- on backupNode{
- device /dev/drbd1;
- disk /dev/sda3;
- address 192.168.58.129:7788;
- meta-disk internal;
- }
- }
需要把上面用到的防火牆7788端口打開,這個端口是自定義的,如果嫌麻煩可以直接關掉防火牆。
說明:
device 是自定義的物理設備的邏輯路徑
disk 是磁盤設備,或者是邏輯分區
address 是機器監聽地址和端口
meta-disk 這個還沒弄明白,看到的資料都是設為:internal
2.3、建立resource
- modprobe drbd //載入 drbd 模塊
- lsmod | grep drbd //確認 drbd 模塊是否載入
- dd if=/dev/zero of=/dev/sda3 bs=1M count=100 //把一些資料塞到 sda3 內 (否則 create-md 時會報錯)
- drbdadm create-md r0 //建立 drbd resource
- drbdadm up r0
我遇到的問題:
- [root@backupNode /]# drbdadm up r0
- 1: Failure: (104) Can not open backing device.
- Command 'drbdsetup attach 1 /dev/sda3 /dev/sda3 internal' terminated with exit code
原因是我之前已經掛在了/dev/sda3,需要先卸載/dev/sda3設備,解決辦法:
- umount /dev/sda3
問題解決。
注:以上每一步驟,都需要在主備服務器上進行配置設置。
2.4、設置Primary Node
將masterNode設為主服務器(primary node),在masterNode上執行:
- drbdadm primary --force r0
查看drbd狀態:
- [root@backupNode /]# cat /proc/drbd
- version: 8.4.1 (api:1/proto:86-100)
- GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by root@masterNode, 2012-05-27 18:34:27
- 1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
- ns:4 nr:9504584 dw:9504588 dr:1017 al:1 bm:576 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
已經變成了主服務器。
2.5、創建DRBD文件系統
上面已經完成了/dev/drbd1的初始化,現在來把/dev/drbd1格式化成ext4格式的文件系統,在masterNode上執行:
- [root@masterNode /]# mkfs.ext4 /dev/drbd1
輸出:
- mke2fs 1.41.12 (17-May-2010)
- 文件系統標簽=
- 操作系統:Linux
- 塊大小=4096 (log=2)
- 分塊大小=4096 (log=2)
- Stride=0 blocks, Stripe width=0 blocks
- 589824 inodes, 2358959 blocks
- 117947 blocks (5.00%) reserved for the super user
- 第一個數據塊=0
- Maximum filesystem blocks=2415919104
- 72 block groups
- 32768 blocks per group, 32768 fragments per group
- 8192 inodes per group
- Superblock backups stored on blocks:
- 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
- 正在寫入inode表: 完成
- Creating journal (32768 blocks): 完成
- Writing superblocks and filesystem accounting information: 完成
- This filesystem will be automatically checked every 21 mounts or
- 180 days, whichever comes first. Use tune2fs -c or -i to override.
然后,將/dev/drbd1掛載到之前創建好的/drbdData目錄:
- [root@masterNode /]# mount /dev/drbd1 /drbdData
現在只要把數據寫入/drbdData目錄,drbd即會立刻把數據同步到backupNode的/dev/sda3分區上了。
2.6、DRBD同步測試
1、首先,在主服務器上先將設備卸載,同時將主服務器降為備用服務器:
- [root@masterNode /]# umount /dev/drbd1
- [root@masterNode /]# drbdadm secondary r0
2、然后,登錄備用服務器,將備用服務器升為主服務器,同時掛載drbd1設備到 /drbdData目錄:
- [root@masterNode /]# ssh backupnode
- Last login: Sun May 27 19:57:17 2012 from masternode
- [root@backupNode ~]# drbdadm primary r0
- [root@backupNode ~]# mount /dev/drbd1 /drbdData/
3、最后,進入/drbdData目錄,就可以看到之前在另外一台機器上放入的數據了,如果沒有看到,說明同步失敗!