DRBD+Heartbeat+NFS高可用圖文實操
實驗環境: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節點才能提升為主節點,繼續進行讀寫操作。
二、Heartbeat環境搭建主從都安裝依賴庫
#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的高可用至此結束,對高可用的測試,我們上面只是測試了一種情況,當然還有其它幾種情況,留給大家去測試吧!