一、概述
1、架構圖
2、軟體簡介
Heartbeat(Linux-HA)的工作原理:heartbeat最核心的包括兩個部分,心跳監測部分和資源接管部分,心跳監測可以通過網路鏈路和串列埠進行,而且支援冗餘鏈路,它們之間相互傳送報文來告訴對方自己當前的狀態,如果在指定的時間內未到對方傳送的報文,那麼就認為對方失效,這時需啟動資源接管模組來接管運 行在對方主機上的資源或者服務。
DRBD:drbd是一個軟體來實現資料實時、同步、非同步的資料映象塊儲存複製解決方案,主要功能是通過Linux核心實現。DRBD類似網路RAID-1功能寫入本地的檔案會通過網路以相同方式寫在另一檔案系統。
3、資源分配
系統:CentOS6.5_x64
主機名 | 角色 | IP地址 |
masternfs | 主NFS | eth0:192.168.0.202/24 |
backupnfs | 備NFS | eth0:192.168.0.203/24 |
VIP | 192.168.0.204/24 |
4、配置兩臺hosts記錄
[root@masternfs ~]# vi /etc/hosts
192.168.0.202 masternfs
192.168.0.203 backupnfs
二、安裝配置DRBD(兩臺伺服器配置基本一樣)
安裝epel源:
rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
下載drbd軟體:http://oss.linbit.com/drbd/
1、安裝依賴包
1 |
[root@masternfs ~]# yum install -y gcc gcc-c++ make perl kernel-devel kernel-headers flex drbd84-utils kmod-drbd84 |
2、安裝DRBD並載入到核心
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@masternfs ~]# tar zxvf drbd-8.4.4.tar.gz [root@masternfs ~]# cd drbd-8.4.4 [root@masternfs ~]# ./configure --prefix=/usr/local/drbd --with-km #--with-km,啟用核心模組 [root@masternfs ~]# make KDIR=/usr/src/kernels/2.6.32-358.23.2.el6.x86_64/ #指定核心原始碼路徑 [root@masternfs ~]# make install [root@masternfs ~]# chkconfig --add drbd [root@masternfs ~]# chkconfig drbd on [root@masternfs ~]# cp drbd/drbd.ko /lib/modules/`uname -r`/kernel/lib/ #載入DRBD模組到核心中 [root@masternfs ~]# modprobe drbd [root@masternfs ~]# lsmod |grep drbd #由此檢視drbd模組已經載入 drbd 333755 0 libcrc32c 1246 1 drbd |
3、配置DRBD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
[root@masternfs ~]# cd /usr/local/drbd/ [root@masternfs ~]# vi /usr/local/drbd/etc/drbd.d/global_common.conf global { usage-count yes; } common { protocol C; disk { on-io-error detach; } syncer { rate 100M; } } resource web { on masternfs { device /dev/drbd0; disk /dev/sdb1; address 192.168.0.202:7899; meta-disk internal; } on backupnfs { device /dev/drbd0; disk /dev/sdb1; address 192.168.0.203:7899; meta-disk internal; } } |
4、建立供DRBD記錄資訊資料塊
1 2 3 4 5 6 7 8 |
[root@masternfs ~]# drbd admcreate-md web Writing meta data... initializing activity log NOT initializing bitmap New drbd meta data blocksuccessfully created. success [root@masternfs ~]# mkdir -p /usr/local/drbd/var/run/drbd #建立資源目錄 [root@masternfs ~]# service drbd start |
5、預設沒有分主備節點的,需要設定
1 2 3 4 5 |
[root@masternfs ~]# cat /proc/drbd version: 8.4.4(api:1/proto:86-101) GIT-hash:599f286440bd633d15d5ff985204aff4bccffadd build by phil@Build64R6, 2013-10-1415:33:06 0: cs:Connected ro:Secondary/Secondaryds:UpToDate/UpToDate C r----- ns:64 nr:112 dw:176 dr:6088 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1wo:f oos:0 |
1 2 |
[root@masternfs ~]# drbdadm -- --overwrite-data-of-peer primary web [root@db-backup ~]# drbdadm secondary web #backupnfs伺服器設定從節點 |
#再檢視狀態已經是主從
1 2 |
[root@masternfs ~]# drbd-overview 0:mysql/0 Connected Primary/Secondary UpToDate/UpToDate C r----- |
說明:
- cs:兩臺資料連線狀態
- ro:兩臺主機的狀態
- ds:磁碟狀態是“UpToDate/UpToDate”,同步狀態。
6、格式化並掛載分割槽
1 2 3 |
[root@masternfs ~]# mkfs.ext4 /dev/drbd0 [root@masternfs ~]# mkdir /web [root@masternfs ~]# mount /dev/drbd0 /web |
三、安裝配置NFS
1 2 3 4 5 6 7 |
[root@masternfs ~]# yum install -y nfs-utils [root@masternfs ~]# vi /etc/exports /web 192.168.0.0/24(rw,no_root_squash) [root@masternfs ~]# service rpcbind start [root@masternfs ~]# service nfs start [root@masternfs ~]# chkconfig rpcbind on [root@masternfs ~]# chkconfig nfs on |
四、安裝配置Heartbeat
1 2 3 4 |
[root@masternfs ~]# yum install heartbeat* -y [root@masternfs ~]# cd /usr/share/doc/heartbeat-3.0.4/ [root@masternfsheartbeat-3.0.4]# cp ha.cf authkeys haresources /etc/ha.d/ [root@masternfsheartbeat-3.0.4]# cd /etc/ha.d/ |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[root@masternfs ha.d]# vi ha.cf logfile /var/log/ha-log logfacility local0 #如果未定義上述日誌,預設寫入/var/log/message keepalive 2 #心跳間隔 deadtime 30 #死亡閥值 warntime 10 #警告時間 initdead 120 #首次啟動heartbeat,等待多久才啟動主服務資源 udpport 694 #連線埠 bcast eth0 #使用什麼方式組織心跳,最好用ucast方式 auto_failback off #當主節點故障恢復後,自動獲取資源並取代從節點 node masternfs #主節點主機名 node backupnfs #備份節點主機名 ping 192.168.0.1 #選擇ping節點,ping的越好對HA叢集越穩定,建議使用閘道器 |
1 2 3 |
[root@masternfs ~]# vi /etc/ha.d/authkeys auth 2 2 sha1 HI! |
1 |
[root@masternfs ~]# masternfs IPaddr::192.168.0.204/24/eth0 drbddisk::web Filesystem::/dev/drbd0::/web::ext4 killnfsd |
引數說明:
- masternfsIPaddr::192.168.0.204/24/eth0 #主機名,後跟虛擬IP地址、介面
- drbddisk::web #管理drbd資源
- Filesystem::/dev/drbd0::/web::ext4 killnfsd #檔案系統,目錄及格式,後跟nfs資源指令碼
#killnfsd指令碼
1 2 |
[root@masternfs ~]# echo "killall -9 nfsd ; /etc/init.d/nfs restart ; exit 0" >>/etc/ha.d/resource.d/killnfsd [root@masternfs ~]# chmod +x /etc/ha.d/resource.d/killnfsd |
1 2 3 |
[root@masternfs ~]# chmod 600 /etc/ha.d/authkeys #不修改許可權會報錯 [root@masternfs ~]# service heartbeat start [root@masternfs ~]# chkconfig heartbeat on |
五、測試高可用性
1、停掉masternfs伺服器heartbeat服務,是否虛擬IP正常切換,可通過ip addr命令檢視。
2、通過一臺測試機, mount -t nfs 192.168.0.204:/web/media,當故障切換時,nfs無間斷提供服務,提供完美冗餘。
3、通過ha-log日誌可以看出主釋放資源,備接管資源。