我目前的设置是:2台NFS服务器共享相同的目录,内容相同,1台keepalived
服务器作为SLB (或者更确切地说是用于此场景中的故障转移),以及1台通过NFSv4安装的NFSv4客户机。所有系统都运行CentOS 6 (2.6.32-573.26.1.el6.x86_64)。因为这是一个测试环境,所有的机器都在同一个子网上(192.168.66.xx)。为供参考,综合方案如下。
99 VIP
100 nfs01
101 nfs02
102 client
103 keepalived01
NFS服务器配置如下:
/root/share 192.168.66.0/24(ro,fsid=0,sync,no_root_squash
至于keepalived
,我是在DR模式下运行的(NAT模式根本无法工作)。
vrrp_instance nfs {
interface eth0
state MASTER
virtual_router_id 51
priority 103 # 103 on master, 101 on backup
authentication {
auth_type PASS
auth_pass hiServer
}
virtual_ipaddress {
192.168.66.99/24 dev eth0
}
}
virtual_server 192.168.66.99 2049 {
delay_loop 6
lb_algo wlc
lb_kind DR
protocol TCP
real_server 192.168.66.100 2049 {
weight 100
TCP_CHECK {
connect_timeout 6
connect_port 2049
}
}
real_server 192.168.66.101 2049 {
weight 102
TCP_CHECK {
connect_port 2049
connect_timeout 6
}
}
}
最后,客户端通过以下命令挂载:
mount -t nfs4 192.168.66.99:/ /nfsdata
虽然我还没有对NFSv4进行过压力测试,但它似乎能够正常工作。我注意到的一件事是故障转移期间的一段时间,即我关闭了一个NFS服务器,迫使keepalived
将服务移动到另一个NFS服务器,客户端在响应之前似乎挂起了一段时间。我相信这是90秒宽限期造成的。
困扰我的问题是,在NFS服务器上,这一行日志每隔几秒就显示一次,淹没了日志。
kernel: nfsd: peername failed (err 107)!
我尝试使用tcpdump
查看是什么导致了流量,并发现NFS服务器和keepalived
服务器之间的重复交换。起初,我认为iptables
可能是罪魁祸首,但在这两台机器上冲洗它们并不能阻止错误。
如果有一种抑制错误的方法,我可以称之为一天(有吗?),但我的好奇问题是:在这种情况下,NFS服务器是否有理由尝试与keepalived
服务器通信?或者,在以这种方式设置NFS时,可能存在一些根本错误,即使它看起来很有效?
发布于 2016-06-01 07:21:43
在进一步检查时,误差kernel: nfsd: peername failed (err 107)!
大约每6秒出现一次。这个数字似乎与conf文件中的connection_timeout
选项相对应,实际上,通过停止keepalived
服务,错误将完全停止出现。
似乎通过在端口2049上使用TCP_CHECK
,NFS服务器将记录“坏”连接尝试,因为keepalived
没有按照协议发送NFS消息。
最后,我使用MISC_CHECK
来检查NFS服务器的运行情况(使用调用rpcinfo
的自定义shell脚本)。
https://serverfault.com/questions/778460
复制相似问题