Keepalived实现nfs高可用
Nfs_master服务器:172.20.26.167 (keepalived、nfs、sersync、rsync)
Nfs_salve服务器:172.20.26.198 (keepalived、nfs、rsync)
Nfs_client服务器:172.20.26.24 (nfs)
原理:两台机器上配置要一致,keepalived监控nfs进程,master上的nfs主进程宕掉无法启动时由slave主机上的nfs继续工作,master的数据备份到slave上,同时master和slave数据用rsync和sersync实时同步,保证数据的完整性。
部署keepalived服务
分别在172.20.26.167、172.20.26.198安装部署keepalived服务
yum install epel-release -y #安装epel 源
yum update -y #更新安装源
yum install psmisc -y #脚本中用到killall 命令,需要安装pamisc
yum install keepalived -y
vim /etc/keepalived/keepalived.conf #设置VIP地址为172.20.26.200,并增加chk_nginx 的脚本检测以及脚本追踪:
vrrp_script chk_nfs {
script "/data/sh/chk_nfs.sh"
interval 1
weight -20
}
track_script {
chk_nfs
}
notify_backup "/data/sh/notify_nfs.sh backup"
追踪上面所定义的chk_nfs,名字要与上面定义的一致。
非抢占模式:master和backup的state均设置为BACKUP,其次是master端配置nopreempt,backup不用配置。


两边keepalived服务都安装后,将配置文件拷贝到172.20.26.198服务器/etc/keepalived/目录下
scp /etc/keepalived/keepalived.conf root@172.20.26.198:/etc/keepalived/
vim /etc/keepalived/keepalived.conf

分别在172.20.26.167、172.20.26.198服务器上创建/data/sh目录及chk_nfs.sh脚本:
mkdir -p /data/sh #创建脚本目录
vim /data/sh/chk_nfs.sh #编写脚本文件
#!/bin/bash
killall -0 nfsd &>/dev/null
if [[ $? -ne 0]];then
pkill keepalived
fi
chmod +x /data/sh/chk_nfs.sh #授权执行权限


两台服务器启动keepalived服务,查看VIP地址在172.20.26.167服务器上
systemctl start keepalived

如果172.20.26.167上nfs服务stop掉,随之nfs服务stop 掉,keepalived服务也会被pkill掉,VIP 将漂移到172.20.26.198服务器上, 即使172.20.26.167服务器上nfs服务和keepalived服务恢复,VIP也不抢回,继续保留在172.20.26.198服务器上,只有在172.20.26.198服务器上nfs服务down掉,随着nfs服务down掉,keepalived服务也被pkill 掉,VIP才会漂移回172.20.26.167服务器上。
上面配置文件中需要关注的是我们设置成非抢占模式,如果设置成抢占模式会在不断的切换主备时容易造成nfs数据丢失。


6038

被折叠的 条评论
为什么被折叠?



