使用NFS服务器(比如图片业务),一台为主,一台为备。通常主到备的数据同步是通过rsync来做(可以结合inotify做实时同步)。由于NFS服务是存在单点的,出于对业务在线率和数据安全的保障,可以采用"DRBD+NFS+Keepalived"架构来完成高可用方案部署。之前介绍了DRBD详细解说及配置过程记录,废话不多说了,基于之前的那篇文档的机器配置信息,以下记录部署过程:
思路:
1)在两台机器上安装keepalived,VIP为192.168.1.200
2)将DRBD的挂载目录
/data
作为NFS的挂载目录。远程客户机使用vip地址挂载NFS
3)当Primary主机发生宕机或NFS挂了的故障时,Secondary主机提权升级为DRBD的主节点,并且VIP资源也会转移过来。
当Primary主机的故障恢复时,会再次变为DRBD的主节点,并重新夺回VIP资源。从而实现故障转移
Primary和Secondary两台主机的DRBD环境部署,参见
https://blog.csdn.net/RustyChen/article/details/89076650
Primary主机(192.168.1.151)默认作为DRBD的主节点,DRBD挂载目录是
/data
Secondary主机(192.168.1.152)是DRBD的备份节点
在Primary主机上查看DRBD状态,如下,可知Primary主机是DRBD的主节点
[root@Primary ~]
# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.16 (api:88
/proto
:86-97)
GIT-
hash
: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build64R6, 2014-11-24 14:51:37
m:res cs ro ds p mounted fstype
0:r0 Connected Primary
/Secondary
UpToDate
/UpToDate
C
/data
ext4
如下,DRBD已完成挂载,挂载目录是
/data
[root@Primary ~]
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
156G 36G 112G 25% /
tmpfs 2.9G 0 2.9G 0%
/dev/shm
/dev/vda1
190M 98M 83M 55%
/boot
/dev/drbd0
9.8G 23M 9.2G 1%
/data
DRBD数据如下
[root@Primary ~]
# cd /data
[root@Primary data]
# ll
total 16
-rw-r--r--. 1 root root 9 May 25 09:33 test3
-rw-r--r--. 1 root root 5 May 25 09:34 wangshibo
-rw-r--r--. 1 root root 5 May 25 09:34 wangshibo1
-rw-r--r--. 1 root root 5 May 25 09:34 wangshibo2
-----------------------------------------------------------------------------------------------------------
在Primary和Secondary两台主机上安装NFS(可以参考:http:
//www
.cnblogs.com
/kevingrace/p/6084604
.html)
[root@Primary ~]
# yum install rpcbind nfs-utils
[root@Primary ~]
# vim /etc/exports
/data
192.168.1.0
/24
(rw,
sync
,no_root_squash)
[root@Primary ~]
# /etc/init.d/rpcbind start
[root@Primary ~]
# /etc/init.d/nfs start
---------------------------------------------------------------------------------------------------------
关闭两台主机的iptables防火墙
防火墙最好关闭,否则可能导致客户机挂载nfs时会失败!
若开启防火墙,需要在iptables中开放nfs相关端口机以及VRRP组播地址
[root@Primary ~]
# /etc/init.d/iptables stop
两台机器上的selinux一定要关闭!!!!!!!!!!
否则下面在keepalived.conf里配置的notify_master.sh等脚本执行失败!这是曾经踩过的坑!
[root@Primary ~]
# setenforce 0 //临时关闭。永久关闭的话,还需要在/etc/sysconfig/selinux 文件里将SELINUX改为disabled
[root@Primary ~]
# getenforce
Permissive
-----------------------------------------------------------------------------------------------------------
在两台主机上安装Keepalived,配合keepalived实现自动fail-over
安装Keepalived
[root@Primary ~]
# yum install -y openssl-devel popt-devel
[root@Primary ~]
# cd /usr/local/src/
[root@Primary src]
# wget http://www.keepalived.org/software/keepalived-1.3.5.tar.gz
[root@Primary src]
# tar -zvxf keepalived-1.3.5.tar.gz
[root@Primary src]
# cd keepalived-1.3.5
[root@Primary keepalived-1.3.5]
# ./configure --prefix=/usr/local/keepalived
[root@Primary keepalived-1.3.5]
# make && make install
[root@Primary keepalived-1.3.5]
# cp /usr/local/src/keepalived-1.3.5/keepalived/etc/init.d/keepalived /etc/rc.d/init.d/
[root@Primary keepalived-1.3.5]
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/