摘要:CentOS 6 DRBD安裝
一、前言簡述
DRBD是一個使用軟體實現伺服器之間鏡像設備內容的儲存複製解決方案,類似於RAID-1功能,因此可用於高
可用性(High Availability)之中。
DRBD利用網路來傳輸兩台伺服器的共用資料區達到資料同步。當我們將數據資料寫入Node1的Backup Files時,
數據資料將會被傳輸到Node2上,以相同形式記錄。Primary Node與Secondary Node的數據資料可保證即時同步。
當Primary Node故障時,Secondary Node尚保留一份相同的數據資料,而可繼續使用。
DRBD共有兩部分組成:內核模組和使用者空間的管理工具,其中內核模組代碼已經整合進Linux Kernel 2.6.33
以後的版本中。因此,若Kernel版本高於此版本的話,僅需安裝管理工具即可。否則,則需同時安裝內核模組和管理
工具,並且此兩部分的版本編號必須保持對應。
二、Server配置
Node1(Primary Node) | Node2(Secondary Node) | |
Hostname | node1.centos6.tw | node2.centos6.tw |
System | CentOS 6.2 release 6.2 (Final) | CentOS 6.2 release 6.2 (Final) |
H.D.D. | /dev/sda 20GB(System) | /dev/sda 20GB(System) |
/dev/sdb 10GB(Backup Files) | /dev/sdb 10GB(Backup Files) | |
Network | Ent.:192.168.75.136/24 | Ent.:192.168.75.137/24 |
Int.:192.168.62.136/24 | Int.:192.168.62.137/24 |
三、前置作業(Node1和Node2)
A. Firewall and SElinux
為確認安裝及測試過程順利,因此先行關閉此兩部分。
a. vim /etc/selinux/config:因變更SELinux設定後需重新開機,因此先行設定。
b. service iptables stop
B. host
a. vim /etc/hosts:為避免因DNS問題導致無法解析FQDN,因此直接寫入hosts內
C. 建立分割區於/dev/sdb
a. fdisk /dev/sdb
b. partprobe:使剛才的partition table變更生效
c. fdisk -l:確定partition table狀態
d. mkdir /backup:建立資料夾backup
四、安裝(Node1和Node2)
A. 相關套件安裝
a. yum -y install gcc kernel-devel kernel-headers flex
B. 安裝DRBD
a. wget http://oss.linbit.com/drbd/8.4/drbd-8.4.2.tar.gz
b. tar zxvf drbd-8.4.2.tar.gz
c. ./configure --prefix=/usr/local/drbd --with-km
d. make KDIR=/usr/src/kernels/2.6.32-279.11.1.el6.x86_64/
註:KDIR=指定系統kernel源碼路徑,因實際情況更改設定
e. make install
C. 其他相關設定
a. mkdir -p /usr/local/drbd/var/run/drbd
b. cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d
c. chkconfig --add drbd
d. chkconfig drbd on
D. 安裝DRBD模組
a. cd drbd
b. make clean
c. make KDIR=/usr/src/kernels/2.6.32-279.11.1.el6.x86_64/
註:KDIR=指定系統kernel源碼路徑,因實際情況更改設定
d. cp drbd.ko /lib/modules/`uname -r`/kernel/lib/
e. depmod
五、設定(Node1和Node2)
A. 設定檔配置
a. vim /usr/local/drbd/etc/drbd.conf
註:設定『fence-peer』,若安裝heartbeat才需要設定。
B. 權限調整(非必要,需安裝heartbeat)
a. chgrp haclient /sbin/drbdsetup
b. chmod o-x /sbin/drbdsetup
c. chmod u+s /sbin/drbdsetup
d. chgrp haclient /sbin/drbdmeta
e. chmod o-x /sbin/drbdmeta
f. chmod u+s /sbin/drbdmeta
C. 載入DRBD模組及建立resource
a. modprobe drbd:載入DRBD模組
b. lsmod | grep drbd:確認DRBD模組是否載入
c. dd if=/dev/zero of=/dev/sdb1 bs=1M count=100:塞入一些資料到/dev/sdb1,
否則有時create-md時會出現錯誤。
d. drbdadm create-md ha:建立drbd resource ha
e. service drbd start
f. chkconfig drbd on
D. DRBD狀態(service drbd status or cat /proc/drbd)
a. Inconsistent/Inconsistent:ds出現Inconsistent表示兩台node資料尚未同步。
b. SyncTarget:cs出現SyncTarget表示正在同步中,可看到目前同步時的進度
c. Secondary/Unknown:若node1服務啟動而node2尚未啟動的話,則ro會出現Secondary/Unknown
d. Secondary/Secondary:表示尚未設定Primary Node。
六、完成
A. Primary Node(Node1設定)
設定Primary Node,預設使用Node1作為Primary Node
a. drbdadm -- --overwrite-data-of-peer primary ha
b. service drbd status
Node1設定完後,在狀態ro可看到Primary/Secondary,而Node2則為Secondary/Primary。
B. 格式化(Node1設定)
a. mkfs.ext4 /dev/drbd0
C. 掛載(Node1設定)
a. mount /dev/drbd0 /backup
七、測試
A. Primary Node:先放些資料至/backup
B. Secondary Node
a. drbdadm down ha
因Secondary Node在DRBD仍啟動的狀態下是無法掛載資料夾『backup』的,所以必須先停止才能掛載。
b. mount -t ext4 /dev/sdb1 /backup
c. ls /backup
此時就可以看到資料已同步過來了
C. 手動切換
我們可以手動將Node1設定為Secondary Node,而將Node2設定為Primary Node
a. umount /dev/drbd0(Node1設定):先在Node1卸載drbd0
b. drbdadm secondary ha(Node1設定):再設定為Secondary
c. drbdadm primary ha(Node2設定):設定之前,記得先將umount /dev/sdb1並drbdadm up ha。
設定完後可查看一下狀態,確認目前Node2確實為Primary Node
d. mount -t ext4 /dev/drbd0 /backup(Node2設定)
記得要掛載資料夾上去喔,不然Node1和Node2都沒有掛載資料夾就好玩了。
D. 監控狀態
a. watch -n 1 service drbd status:若欲即時查看DRBD狀態,可以下此指令,每1秒更新一次
八、參考來源
http://www.drbd.org/users-guide/
http://www.drbd.org/docs/install/
http://www.centos.bz/2012/02/drbd-compile-install-deploy/
http://blog.csdn.net/greensurfer/article/details/7606951
http://hi.baidu.com/_you_yan/item/d2d92e10f12784a4feded599
http://lhf214318.blog.51cto.com/4361118/838133
http://www.wenzizone.com/tag/drbd
http://www.cnblogs.com/feisky/archive/2011/12/25/2310346.html
http://www.slideshare.net/dbabc/dbabcnet-heartbeat-drbdmy-sql
http://pkgs.org/centos-6-rhel-6/elrepo-i386/kmod-drbd84-8.4.1-2.el6.elrepo.i686.rpm.html
http://www1.site90.com/?post=334