DRBD+heartbeat+nfs
說明:DRBD實現存儲同步,只有主存儲角色才能實現讀寫、掛載和可執行。
Heartbeat實現存儲的高可用性和DRBD的資源管理,自動轉換DRBD主備角色。
Nfs實現文件共享,把磁盤共享出來讓客戶端訪問。
Node1.sh.com: eth0 192.168.10.100
eth1 192.168.2.101 (心跳線地址)
Node2.sh.com eth0 192.168.10.101
eth1 192.168.2.100 (心跳線地址)
虛擬地址(vip) 192.168.10.200
客戶端 192.168.10.110
一、DRBD的配置
1.兩節點的主機名要能相互解析,在這裏通過修改hosts文件實現,且保證兩hosts文件一致
[root@node1 ~]# vim /etc/hosts
[root@node1 ~]# scp /etc/hosts node2.sh.com:/etc/ //把hosts文件複製給node2節點
2.新建磁盤分區 (節點2 node2.sh.com做同樣操作,分區要一模一樣)
[root@node1 ~]# fdisk /dev/hdb
[root@node1 ~]# partprobe /dev/hdb //加載顯示磁盤分區
[root@node1 ~]# fdisk -l //查看磁盤分區
3.上傳所需rpm包並安裝 (節點2同樣操作)
[root@node1 ~]# rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm
[root@node1 ~]# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
4.配置DRBD---分佈式複製塊存儲設備
[root@node1 drbd.d]# vim /etc/drbd.conf
[root@node1 drbd.d]# cp -p global_common.conf global_common.conf.bak
[root@node1 drbd.d]# vim global_common.conf //修改爲以下內容
global {
usage-count yes;
# minor-count dialog-refresh disable-ip-verification
}
common {
protocol C;
startup {
wfc-timeout 120;
degr-wfc-timeout 120;
}
disk {
on-io-error detach;
fencing resource-only;
}
net {
cram-hmac-alg "sha1";
shared-secret "mydrbdlab";
}
syncer {
rate 100M; //同步速率
}
}
[root@node1 drbd.d]# touch web.res //創建資源文件
[root@node1 drbd.d]# vim web.res //編輯資源文件,如下
resource web {
on node1.sh.com {
device /dev/drbd0;
disk /dev/hdb1;
address 192.168.10.100:7789;
meta-disk internal;
}
on node2.sh.com {
device /dev/drbd0;
disk /dev/hdb1;
address 192.168.10.101:7789;
meta-disk internal;
}
}
[root@node1 drbd.d]# scp global_common.conf node2.sh.com:/etc/drbd.d/ //把文件拷給節點2,保持數據一致性
[root@node1 drbd.d]# scp web.res node2.sh.com:/etc/drbd.d/
[root@node1 drbd.d]# scp /etc/drbd.conf node2.sh.com:/etc/
5.初始化並啓動DRBD(兩個節點要同時進行)
[root@node1 drbd.d]# drbdadm create-md web //初始化
[root@node1 drbd.d]# service drbd start
6.查看節點1和節點2drbd狀態
[root@node1 drbd.d]# drbdadm -- --overwrite-data-of-peer primary web //執行該條命令,把節點設爲主節點
[root@node2 drbd.d]# watch -n 1 'cat /proc/drbd' //在備份節點上查看同步進程
再次查看節點狀態
7.測試drbd
[root@node1 ~]# mkfs -t ext3 -L drbdweb /dev/drbd0 //格式化分區,—L爲卷標,drbdweb爲卷標名,節點2做同樣操作
[root@node1 ~]# mkdir /mnt/web //創建掛載點
[root@node1 ~]# mount /dev/drbd0 /mnt/web
[root@node1 ~]# cd /mnt/web
[root@node1 web]# echo "I am drbd" >./file //建一測試文件,在node2上查看
[root@node1 ~]# umount /mnt/web //先卸載
[root@node1 ~]# drbdadm secondary web //把節點1設爲備份
[root@node2 drbd.d]# drbdadm primary web //把節點2設爲主
查看節點1和2身份
[root@node2 drbd.d]# mkdir /mnt/web //在節點2上創建掛載點
[root@node2 ~]# mount /dev/drbd0 /mnt/web
[root@node2 ~]# cd /mnt/web
二、nfs服務器配置 (節點2上同樣操作)
[root@node1 ~]# vim /etc/exports //編輯內容如下
/mnt/web *(rw,sync)
[root@node1 ~]# service portmap restart
Stopping portmap: [ OK ]
Starting portmap: [ OK ]
[root@node1 ~]# chkconfig portmap on
[root@node1 ~]# service nfs start
[root@node1 ~]# chkconfig nfs on
三、heartbeat服務搭建
上傳所需文件
[root@node1 ~]# mount /dev/cdrom /mnt/cdrom
[root@node1 ~]# yum -y localinstall heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck
[root@node1 ~]# cp -p /usr/share/doc/heartbeat-2.1.4/ha.cf /etc/ha.d/
[root@node1 ~]# cp -p /usr/share/doc/heartbeat-2.1.4/authkeys /etc/ha.d/
[root@node1 ~]# cp -p /usr/share/doc/heartbeat-2.1.4/haresources /etc/ha.d/
[root@node1 ~]# cd /etc/ha.d
[root@node1 ha.d]# vim ha.cf //編輯內容如下
logfile /var/log/ha-log //日誌文件
keepalive 2 //保持時間
deadtime 10 //死亡時間
warntime 5 //警告時間
initdead 120 //啓動時間
udpport 694 //使用udp的端口
bcast eth0 //心跳接口
auto_failback on //失敗自動退回
ucast eth0 192.168.2.100 //要使用單播,指向節點2心跳地址
node node1.sh.com
node node2.sh.com
[root@node1 ha.d]# vim authkeys //修改驗證文件
auth 1
1 crc
[root@node1 ha.d]# chmod 600 authkeys
[root@node1 ha.d]# vim haresources //編輯資源文件
node1.sh.com IPaddr::192.168.10.200/24/eth0 drbddisk::web Filesystem::/dev/drbd0::/mnt/web::ext3
[root@node1 ha.d]# scp ha.cf authkeys haresources node2.sh.com:/etc/ha.d/ //把這三個文件複製給節點2
[root@node1 ha.d]# service heartbeat start //啓動heartbeat
查看資源
四、客戶端操作
[root@localhost ~]# service portmap start //必須先啓動portmap服務
[root@localhost ~]# service nfs start
[root@localhost ~]# showmount -e 192.168.10.200
Export list for 192.168.10.200:
/mnt/web *
[root@localhost ~]# mount 192.168.10.200:/mnt/web /mnt/1
查看掛載
[root@localhost ~]# cd /mnt/1
五、模擬節點1失效,查看客戶端訪問情況
[root@node1 ~]# cd /mnt/web
[root@node1 web]# touch f{1,2,3} //創建測試文件
[root@node1 ~]# cd /usr/lib/heartbeat/
[root@node1 heartbeat]# ./hb_standby //使節點1成爲備份
在節點2上查看
在客戶端查看