實驗環境:CentOS 6.5 (64位)
服務器:drbd1 192.168.18.132
服務器:drbd2 192.168.18.133
一.DRBD環境搭建
1.hosts解析
#vim /etc/hosts
2.同步時間
#ntpdate
3.添加附加庫
(1)#rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
(2)#rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
4.安裝DRBD
# yum install drbd84 kmod-drbd84 -y
5.兩臺服務器上的分區/dev/sdb1作爲drbd的網絡mirror分區
#fdisk /dev/sdb 備註,每個環境的磁盤名稱可能不一樣,用fdisk -L 查看一下磁盤名稱爲準。
#mkfs.ext4 /dev/sdb1 #在主上面做此操作。
6.開始配置NFS(兩個節點都要執行)
1.#yum -y install rpcbind nfs-utils
2.# mkdir /usr/local/ftp #創建要存放的文件目錄
3.# vi /etc/exports
/usr/local/ftp *(rw,no_root_squash,no_all_squash,sync)
4.# service rpcbind start
5.# chkconfig rpcbind on
6.# chkconfig nfs off #NFS不需要啓動,也不需要設置成開機啓動,這些都將由後面的Heartbeat來完成。
7.# netstat -tunlp|grep rpcbind #查看rpcbind是否啓動成功
7.開始配置DRBD
# modprobe drbd #加載drbd模塊到內核中(兩個節點都要執行)
# lsmod | grep drbd #查看drbd模塊是否加載成功(兩個節點都要執行)
顯示以上信息說明模塊加載成功。
# cat /etc/drbd.conf
#vim /etc/drbd.d/global_common.conf
global {
usage-count yes;
}
common {
protocol C;
disk {
on-io-error detach;
}
syncer {
rate 100M; #100M傳輸速度
}
}
resource nfs {
on dm1 { #主機名稱
device /dev/drbd1; #drbd網絡磁盤
disk /dev/sdb1; #本地需要掛載的磁盤
address 192.168.18.132:7899; #主ip地址加drbd端口
meta-disk internal;
}
on dm2 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.18.133:7899;
meta-disk internal;
}
}
8.啓動DRBD
# drbdadm create-md nfs #激活前面配置的DRBD資源nfs(兩個節點都要執行)
# service drbd start #兩個節點都要執行
# chkconfig drbd on #兩個節點都要執行
# cat /proc/drbd
#drbdsetup /dev/drbd1 primary #初始化一個主機(這幾步只在主節點上操作)
注意:如果執行drbdsetup /dev/drbd1 primary的時候報圖下所示,最後面加上“--o”即可。
#drbdadm primary nfs
#drbdadm -- --overwrite-data-of-peer primary nfs
#watch -n1 'cat /proc/drbd' #查看格式化進度
說明:
cs:兩臺數據連接狀態
ro:兩臺主機的狀態
ds:磁盤狀態是“UpToDate/UpToDate”,同步狀態。
9.DRBD的使用
# mkfs.ext4 /dev/drbd1 #在主上執行
# mount /dev/drbd1 /usr/local/ftp #掛載在ftp文件上
注意:secondary節點上不允許對DRBD設備進行任何操作,包括只讀。所有的讀寫操作只能在主節點上進行,只有當主節點掛掉時,secondary節點才能提升爲主節點,繼續進行讀寫操作。
主從都安裝依賴庫
#yum -y install epel-release*
主從都安裝heartbeat
#yum -y install heartbeat
1.修改配置文件
#cd /usr/share/doc/heartbeat-3.0.4/
#cp authkeys ha.cf haresources /etc/ha.d/
#cd /etc/ha.d
#vim authkeys #打開下面兩項:一共有三種認證方式供選擇,第一種是CRC循環冗餘校驗,第二種是SHA1哈希算法,第三種是MD3哈希算法,其中他們的密碼可以任意設置,但是兩邊密碼必須保持一致。
#chmod 600 authkeys #給認證文件授權爲600,否則啓動會報錯。
2.修改haresources文件
#vim haresources
再最底下加入這一行,設置VIP。
dm1 IPaddr::192.168.18.180/32/eth0 drbddisk::nfs Filesystem::/dev/drbd1::/usr/local/ftp::ext4 nfs
說明
dm1 IPaddr::192.168.18.180/32/eth0 #主機名 後跟虛擬IP地址、接口
drbddisk::nfs #管理drbd資源的名稱
Filesystem::/dev/drbd1::/usr/local/ftp::ext4 nfs #文件系統::掛載的目錄及格式::後跟nfs資源腳本
3.修改ha.cf文件
debugfile /var/log/ha-debug #設定debug文件目錄
logfile /var/log/ha-log #設定日誌文件目錄
logfacility local0 #利用系統日誌打印日誌
keepalive 2 #設定檢查時間間隔爲1s
deadtime 30 #設定在10s內沒有心跳信號,則立即切換服務
warntime 10 #設定告警時間爲5s(5s內沒有收到對方的迴應就報警)
initdead 120 #設定初始化時間爲60s
udpport 694 #設定集羣節點間的通信協議及端口爲udp694監聽端口(該端口可以修改)
ucast eth0 192.168.18.137 #設定心跳方式使用單播方式,並且是在eth0接口上進行單播,ip地址爲對方的IP(網卡名稱要一致性的IP)從機要改成主機的IP
auto_failback off #當主節點恢復後,是否自動切回,一般都設爲off
node dm1 #指定兩個節點
node dm2
ping 10.0.0.254 #兩個IP的網關
respawn hacluster /usr/lib64/heartbeat/ipfail #使用這個腳本去偵聽對方是否還活着(使用的是ICMP報文檢測)
4.啓動Heartbeat(先主後從)
#service heartbeat start
# chkconfig heartbeat on
# netstat -tunlp|grep hear
查看主的IP是否有VIP地址出現
#ip a | grep eth0
# df -h
查看從服務狀態
#ip a | grep eth0 #沒看到VIP是對的,只有主宕了纔會切。
# df -h #沒有掛載盤是對的,主宕了纔會掛載過來。
5.測試目錄是否能夠共享
實驗掛載盤的服務器:192.168.18.138
進入對應的要掛載的目錄下創建同名的目錄
#mkdir ftp
安裝NFS
#yum -y install rpcbind nfs-utils
#service rpcbind start
#chkconfig rpcbind on
ping一下掛載VIP是否能ping通。
#showmount -e 192.168.18.180 #showmount -e 掛載的VIP地址
#mount -t nfs 192.168.18.180:/usr/loacal/ftp /usr/local/ftp #共享文件的目錄掛載到138的/usr/local/ftp上
#df -h
掛在完成。
實驗共享目錄
#touch 566
讀寫成功。
6.測試高可用
1.進到主服務器上,把服務關了看看。
#/etc/init.d/heartbeat stop
查看VIP是否釋放
#ip a|grep eth0 #圖下可以看到VIP已經釋放
查看drbd資源是否釋放
#df -h #可以看到圖下資源已經釋放。
#cat /proc/drbd #查看資源狀態變爲從
2.進到從服務器查看VIP是否漂移過來。
#ip a|grep eth0 #已看到VIP飄移成功
#df -h #DRBD資源切換成功,並掛載
# cat /proc/drbd #我們看到dm2上的DRBD角色由原來的備,已轉換成主
DRBD+Heartbeat+NFS的高可用至此結束,對高可用的測試,我們上面只是測試了一種情況,當然還有其它幾種情況,留給大家去測試吧!