在负载平衡服务器上创建 NFS 数据存储时出现奇怪的行为

在负载平衡服务器上创建 NFS 数据存储时出现奇怪的行为

背景

  • vSphere 客户端版本 = 5.1.0
  • VMWare ESXi 版本 = 5.1.0
  • 服务器操作系统 = RHEL 版本 6.8
  • virtualip = 虚拟 IP
  • server1 = 服务器 1 的 ip 地址
  • server2 = 服务器 2 的 ip 地址
  • lvsserver = lvs 路由器的 ip 地址
  • IPVSADM 规则
    • ipvsadm -A -t 虚拟ip:0 -s rr -p
    • ipvsadm -a -t 虚拟IP:0 -r 服务器2:0 -g
    • ipvsadm -a -t 虚拟IP:0 -r 服务器1:0 -g
    • ipvsadm -A -t 虚拟 IP:2049 -s rr
    • ipvsadm -a -t 虚拟IP:2049 -r 服务器1:2049 -g
    • ipvsadm -a -t 虚拟IP:2049 -r 服务器2:2049 -g

/etc/exports在两台服务器上(服务器 1、服务器 2)

/vm0    *(rw,sync,no_root_squash)

两台服务器都包含 /vm0 文件夹

实际问题

场景 1:在 server1 上

root@server1 ~# mount -t nfs server2:/vm0 /vm0
root@server1 ~# service nfs restart

尝试使用以下凭据创建 NFS 数据存储

server = virtualip
Folder = /vm0
Datastore name = vm0

结果成功!

场景 2:

//ON SERVER 1
    root@server1 ~# umount vm0

//ON SERVER 2
    root@server2 ~# mount -t nfs server1:/vm0 /vm0
    root@server2 ~# service nfs restart

尝试使用以下凭据创建 NFS 数据存储

服务器 = virtualip 文件夹 = /vmo 数据存储名称 = vm0 结果 失败!

ESXi 服务器上的错误消息

在 ESXi (ESXi_ip) 上对对象“ha-datastoresystem”调用“HostDatastoreSystem.CreateNasDatastore”失败。NFS 挂载 (virtualip):/vm0 失败:挂载请求被 NFS 服务器拒绝。检查导出是否存在以及客户端是否被允许挂载它。

使用 tshark 跟踪的日志

33.916294107 (virtualip) -> (ESXi_ip) MOUNT 100 V3 MNT 回复 (呼入 41) 错误:ERR_ACCESS

答案1

原因:

所有对 EXSi 服务器的 NFS 数据存储请求实际上都仅通过 VIP 发送(每次都是相同的 IP),这导致 ESXi 每次都使用缓存的信息。

解决方案:

对 /etc/exports 文件中的所有条目使用文件系统 ID (FSID)。例如:

/<mount_folder> *(rw,sync,no_root_squash, fsid=1000)

相关内容