drbd


1、DRBD安裝

1.1、安裝依賴包:

[java]   view plain copy
  1. yum -y install gcc kernel-devel kernel-headers flex  


下載安裝drbd源碼包:

[java]   view plain copy
  1. wget http://oss.linbit.com/drbd/8.4/drbd-8.4.1.tar.gz  
  2. tar xzf drbd-8.4.1.tar.gz  
  3. cd drbd-8.4.1  
  4. ./configure --prefix=/usr/local/drbd --with-km  
  5. make KDIR=/usr/src/kernels/2.6.32-220.17.1.el6.x86_64/  
  6. make install  
  7. mkdir -p /usr/local/drbd/var/run/drbd  
  8. cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d  
  9. chkconfig --add drbd  
  10. chkconfig drbd on  

KDIR=中指定的系統內核源碼路徑,根據實際情況設置

1.2、安裝drbd模塊:

[java]   view plain copy
  1. cd drbd  
  2. make clean  
  3. make KDIR=/usr/src/kernels/2.6.32-220.17.1.el6.x86_64/  
  4. cp drbd.ko /lib/modules/`uname -r`/kernel/lib/  
  5. depmod  

 

2、DRBD配置

首先對/dev/sda設備分區/dev/sda3(這一步我是在裝系統時就分區了),在根目錄下建立/drbdData文件夾,名字自定義,供后面掛載/dev/sda3分區設備用。

2.1、配置global_common.conf

編輯全局配置:
[java]   view plain copy
  1. vi /usr/local/drbd/etc/drbd.d/global_common.conf  


確保文件中包含有下內容:

[java]   view plain copy
  1. global {  
  2.   usage-count yes;  
  3. }  
  4. common {  
  5.   net {  
  6.     protocol C;  
  7.   }  
  8. }  

當然,還可以有其它配置,這是最基本的。

 

2.2、配置r0資源:

創建r0資源:
[java]   view plain copy
  1. vi /usr/local/drbd/etc/drbd.d/r0.res  


寫入文件內容:

[java]   view plain copy
  1. resource r0{  
  2.         on masterNode{  
  3.                 device          /dev/drbd1; #邏輯設備的路徑  
  4.                 disk            /dev/sda3;  #物理設備  
  5.                 address         192.168.58.128:7788;  
  6.                 meta-disk       internal;  
  7.         }  
  8.         on backupNode{  
  9.                 device          /dev/drbd1;  
  10.                 disk            /dev/sda3;  
  11.                 address         192.168.58.129:7788;  
  12.                 meta-disk       internal;  
  13.         }  
  14. }  

需要把上面用到的防火牆7788端口打開,這個端口是自定義的,如果嫌麻煩可以直接關掉防火牆。

說明:

device 是自定義的物理設備的邏輯路徑

disk       是磁盤設備,或者是邏輯分區

address   是機器監聽地址和端口

meta-disk   這個還沒弄明白,看到的資料都是設為:internal

 

2.3、建立resource

[java]   view plain copy
  1. modprobe drbd                               //載入 drbd 模塊  
  2. lsmod | grep drbd                                            //確認 drbd 模塊是否載入  
  3. dd if=/dev/zero of=/dev/sda3 bs=1M count=100    //把一些資料塞到 sda3 內 (否則 create-md 時會報錯)  
  4. drbdadm create-md r0                                     //建立 drbd resource  
  5. drbdadm up r0     


我遇到的問題:

[java]   view plain copy
  1. [root@backupNode /]# drbdadm up r0  
  2. 1: Failure: (104) Can not open backing device.  
  3. Command 'drbdsetup attach 1 /dev/sda3 /dev/sda3 internal' terminated with exit code   


原因是我之前已經掛在了/dev/sda3,需要先卸載/dev/sda3設備,解決辦法:

[java]   view plain copy
  1. umount /dev/sda3  

問題解決。

 

注:以上每一步驟,都需要在主備服務器上進行配置設置。

 

2.4、設置Primary Node

將masterNode設為主服務器(primary node),在masterNode上執行:

[java]   view plain copy
  1. drbdadm primary --force r0  


查看drbd狀態:

[java]   view plain copy
  1. [root@backupNode /]# cat /proc/drbd  
  2. version: 8.4.1 (api:1/proto:86-100)  
  3. GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by root@masterNode2012-05-27 18:34:27  
  4.   
  5.  1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----  
  6.     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上執行:

[java]   view plain copy
  1. [root@masterNode /]# mkfs.ext4 /dev/drbd1  

輸出:

[java]   view plain copy
  1. mke2fs 1.41.12 (17-May-2010)  
  2. 文件系統標簽=  
  3. 操作系統:Linux  
  4. 塊大小=4096 (log=2)  
  5. 分塊大小=4096 (log=2)  
  6. Stride=0 blocks, Stripe width=0 blocks  
  7. 589824 inodes, 2358959 blocks  
  8. 117947 blocks (5.00%) reserved for the super user  
  9. 第一個數據塊=0  
  10. Maximum filesystem blocks=2415919104  
  11. 72 block groups  
  12. 32768 blocks per group, 32768 fragments per group  
  13. 8192 inodes per group  
  14. Superblock backups stored on blocks:  
  15.         32768983041638402293762949128192008847361605632  
  16.   
  17. 正在寫入inode表: 完成  
  18. Creating journal (32768 blocks): 完成  
  19. Writing superblocks and filesystem accounting information: 完成  
  20.   
  21. This filesystem will be automatically checked every 21 mounts or  
  22. 180 days, whichever comes first.  Use tune2fs -c or -i to override.  


然后,將/dev/drbd1掛載到之前創建好的/drbdData目錄:

[java]   view plain copy
  1. [root@masterNode /]# mount /dev/drbd1 /drbdData  


現在只要把數據寫入/drbdData目錄,drbd即會立刻把數據同步到backupNode的/dev/sda3分區上了。

2.6、DRBD同步測試

1、首先,在主服務器上先將設備卸載,同時將主服務器降為備用服務器:

[java]   view plain copy
  1. [root@masterNode /]# umount /dev/drbd1  
  2. [root@masterNode /]# drbdadm secondary r0  


2、然后,登錄備用服務器,將備用服務器升為主服務器,同時掛載drbd1設備到 /drbdData目錄:

[java]   view plain copy
  1. [root@masterNode /]# ssh backupnode  
  2. Last login: Sun May 27 19:57:17 2012 from masternode  
  3. [root@backupNode ~]# drbdadm primary r0  
  4. [root@backupNode ~]# mount /dev/drbd1 /drbdData/  

 

3、最后,進入/drbdData目錄,就可以看到之前在另外一台機器上放入的數據了,如果沒有看到,說明同步失敗!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM