一、概述
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記錄
[[email protected] ~]# 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
|
[[email protected] ~]
# 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
|
[[email protected] ~]
# tar zxvf drbd-8.4.4.tar.gz
[[email protected] ~]
# cd drbd-8.4.4
[[email protected] ~]
# ./configure --prefix=/usr/local/drbd --with-km #--with-km,啓用內核模塊
[[email protected] ~]
# make KDIR=/usr/src/kernels/2.6.32-358.23.2.el6.x86_64/ #指定內核源碼路徑
[[email protected] ~]
# make install
[[email protected] ~]
# chkconfig --add drbd
[[email protected] ~]
# chkconfig drbd on
[[email protected] ~]
# cp drbd/drbd.ko /lib/modules/`uname -r`/kernel/lib/ #加載DRBD模塊到內核中
[[email protected] ~]
# modprobe drbd
[[email protected] ~]
# 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
|
[[email protected] ~]
# cd /usr/local/drbd/
[[email protected] ~]
# 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
|
[[email protected] ~]
# drbd admcreate-md web
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data blocksuccessfully created.
success
[[email protected] ~]
# mkdir -p /usr/local/drbd/var/run/drbd #創建資源目錄
[[email protected] ~]
# service drbd start
|
5、默認沒有分主備節點的,需要設置
1
2
3
4
5
|
[[email protected] ~]
# cat /proc/drbd
version: 8.4.4(api:1
/proto
:86-101)
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
|
[[email protected] ~]
# drbdadm -- --overwrite-data-of-peer primary web
[[email protected] ~]
# drbdadm secondary web #backupnfs服務器設置從節點
|
#再查看狀態已經是主從
1
2
|
[[email protected] ~]
# drbd-overview
0:mysql
/0
Connected Primary
/Secondary
UpToDate
/UpToDate
C r-----
|
說明:
cs:兩臺數據連接狀態
ro:兩臺主機的狀態
ds:磁盤狀態是「UpToDate/UpToDate」,同步狀態。
6、格式化並掛載分區
1
2
3
|
[[email protected] ~]
# mkfs.ext4 /dev/drbd0
[[email protected] ~]
# mkdir /web
[[email protected] ~]
# mount /dev/drbd0 /web
|
三、安裝配置NFS
1
2
3
4
5
6
7
|
[[email protected] ~]
# yum install -y nfs-utils
[[email protected] ~]
# vi /etc/exports
/web
192.168.0.0
/24
(rw,no_root_squash)
[[email protected] ~]
# service rpcbind start
[[email protected] ~]
# service nfs start
[[email protected] ~]
# chkconfig rpcbind on
[[email protected] ~]
# chkconfig nfs on
|
四、安裝配置Heartbeat
1
2
3
4
|
[[email protected] ~]
# yum install heartbeat* -y
[[email protected] ~]
# cd /usr/share/doc/heartbeat-3.0.4/
[[email protected]]
# cp ha.cf authkeys haresources /etc/ha.d/
[[email protected]]
# cd /etc/ha.d/
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[[email protected] 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
|
1
|
[[email protected] ~]
# 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
|
[[email protected] ~]
# echo "killall -9 nfsd ; /etc/init.d/nfs restart ; exit 0" >>/etc/ha.d/resource.d/killnfsd
[[email protected] ~]
# chmod +x /etc/ha.d/resource.d/killnfsd
|
1
2
3
|
[[email protected] ~]
# chmod 600 /etc/ha.d/authkeys #不修改權限會報錯
[[email protected] ~]
# service heartbeat start
[[email protected] ~]
# chkconfig heartbeat on
|
五、測試高可用性
1、停掉masternfs服務器heartbeat服務,是否虛擬IP正常切換,可通過ip addr命令查看。
2、通過一臺測試機, mount -t nfs 192.168.0.204:/web/media,當故障切換時,nfs無間斷提供服務,提供完美冗餘。
3、通過ha-log日誌可以看出主釋放資源,備接管資源。