部署环境:

主NFS服务器IP地址为:172.16.1.17/24

备NFS服务器IP地址为:172.168.1.20/24

共享目录均为:/data

web节点服务器为:172.16.1.18/24

脚本运行在批量管理服务器上(SSHKEY):172.16.1.19/24

所有服务器系统均为:CentOS6.7 X86_64

脚本内容如下:

#!/bin/sh
. /etc/init.d/functions
. /etc/profile
#This script's function is to check master NFS status.And if master NFS server is down,it will switch to backup 
#NFS server 
#Author:yongzhen
#Date:2015-11-18
#Email:1041282946@qq.com
while true
do
        /usr/sbin/showmount -e 172.16.1.17 >/dev/null 2>&1
        if [ $? -ne 0 ]
        then
                /usr/bin/ssh 172.16.1.18 /bin/umount -lf /data >/dev/null 2>&1
                /usr/bin/ssh 172.16.1.20 /bin/chown -R nfsnobody.nfsnobody /data >/dev/null 2>&1
                /usr/bin/ssh 172.16.1.18 /bin/mount -t nfs 172.16.1.20:/data /data >/dev/null 2>&1
                /usr/bin/ssh 172.16.1.18 /application/nginx/sbin/nginx -s reload >/dev/null 2>&1
                echo "NFS Server is down!!! At $(date +%F_%H:%M:%S)">/home/yongzhen/warning/nfs_warning_$(date +%F).log
                curl_id=$(/usr/bin/curl -I -s -w %{http_code} -o /dev/null www.etiantian.org)
                if [ $curl_id -ne 200 ]
                then
                        echo "Switch to backup NFS server is Failed">>/home/yongzhen/warning/nfs_warning_$(date +%F).log
                else
                        echo "Switch to backup NFS server is Successful">>/home/yongzhen/warning/nfs_warning_$(date +%F).log
                fi
                mail -s "NFS Server Warning" 1041282946@qq.com </home/yongzhen/warning/nfs_warning_$(date +%F).log
                exit 1
        fi
sleep 5
done

注:此脚本纯粹为个人无聊打发时间写的,使用Drbd+Heartbeat+NFS方案较佳!