1. 程式人生 > >DRBD+Heartbeat+NFS高可用圖文實操

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的高可用至此結束,對高可用的測試,我們上面只是測試了一種情況,當然還有其它幾種情況,留給大家去測試吧!