8.5. nfs+ keepalived高可用集群

8.5.1. 安装nfs

yum -y install nfs*

[root@bogon yum.repos.d]# mkdir /data

[root@bogon yum.repos.d]# cat /etc/exports
/data/ *(rw,no_root_squash,no_all_squash,sync)
[root@bogon yum.repos.d]# service nfs restart


#查看nfs共享的内容
[root@bogon yum.repos.d]# exportfs
/data           <world>

#或者
[root@bogon ~]# showmount --exports
Export list for bogon:
/data *

8.5.2. NFS主备分别安装keepalived服务

cd /usr/src/
wget -c http://www.keepalived.org/software/keepalived-1.2.1.tar.gz
yum -y install libnl libnl-devel libnfnetlink libnfnetlink-devel popt-devel
tar -zxvf keepalived-1.2.1.tar.gz
cd keepalived-1.2.1
./configure --prefix=/usr/local/keepalived --with-init=SYSV
make && make install
ln -s /usr/local/keepalived/etc/keepalived /etc/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
chkconfig --add keepalived
chkconfig keepalived on
chkconfig --list | grep keepalived

8.5.3. keepalivd主配置文件详细内容

[root@nginx_keepalived_master sh]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
    notification_email {
        root@localhost      #健康检查报告通知邮箱
    }
    notification_email_from keepalived@localhost         #发送邮件的地址
    smtp_server 127.0.0.1       #邮件服务器
    smtp_connect_timeout 30
    route_id LVS_DEVEL
}
vrrp_script chk_nfs
{
    script "/data/sh/check_nfs.sh"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 151
    priority 100
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        chk_nfs
    }
    virtual_ipaddress {
        192.168.1.200/24
    }

}

8.5.4. keepalivd备配置文件详细内容

[root@nginx_keepalived_backup keepalived]# cat keepalived.conf
! Configuration File for keepalived

global_defs {
    notification_email {
        root@localhost      #健康检查报告通知邮箱
    }
    notification_email_from keepalived@localhost         #发送邮件的地址
    smtp_server 127.0.0.1       #邮件服务器
    smtp_connect_timeout 30
    route_id LVS_DEVEL
}
vrrp_script chk_nfs
{
    script "/data/sh/check_nfs.sh"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 151
    priority 90
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        chk_nfs
    }
    virtual_ipaddress {
        192.168.1.200/24
    }

}

8.5.5. check_nfs检测脚本

[root@nginx_keepalived_backup sh]# cat /data/sh/check_nfs.sh
#!/bin/sh

###检查nfs可用性:进程和是否能够挂载
/bin/systemctl status nfs-server.service &>/dev/null
if [ $? -ne 0 ];then
    ###如果服务状态不正常,先尝试重启服务
    /sbin/service nfs restart
    /sbin/service nfs status &>/dev/null
    if [ $? -ne 0 ];then
    /etc/init.d/keepalived stop
    fi
fi

8.5.6. 在备112机器上挂载VIP的nfs目录

[root@nginx_keepalived_backup keepalived]# mkdir /nfs_temp
[root@nginx_keepalived_backup keepalived]# mount -t nfs 192.168.1.200:/data/ /nfs_temp/

[root@nginx_keepalived_backup keepalived]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        98G  2.3G   96G    3% /
devtmpfs                devtmpfs  476M     0  476M    0% /dev
tmpfs                   tmpfs     488M   12K  488M    1% /dev/shm
tmpfs                   tmpfs     488M  7.6M  480M    2% /run
tmpfs                   tmpfs     488M     0  488M    0% /sys/fs/cgroup
/dev/sda1               xfs       509M  123M  386M   25% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
192.168.1.200:/data     nfs4       98G  2.0G   96G    2% /nfs_temp

8.5.7. 在主111机器上挂载VIP的nfs目录

[root@nginx_keepalived_master sh]# mkdir /nfs_temp
[root@nginx_keepalived_master sh]# mount -t nfs 192.168.1.200:/data/ /nfs_temp/
[root@nginx_keepalived_master sh]#
[root@nginx_keepalived_master sh]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        98G  2.0G   96G    2% /
devtmpfs                devtmpfs  476M     0  476M    0% /dev
tmpfs                   tmpfs     488M   12K  488M    1% /dev/shm
tmpfs                   tmpfs     488M  7.7M  480M    2% /run
tmpfs                   tmpfs     488M     0  488M    0% /sys/fs/cgroup
/dev/sda1               xfs       509M  123M  386M   25% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
192.168.1.200:/data     nfs4       98G  2.3G   96G    3% /nfs_temp

模拟主机的nfs服务故障,不影响nfs的正常使用