我有一对运行 GlusterFS 3.3.0 的 Web 服务器,它们提供单个复制卷。客户端通过 NFS 连接,Web 服务器也是客户端。如果 Gluster 提供的文件是通过“后门”(即本地文件访问)写入的,它会非常不高兴,因此我需要通过 NFS 堆栈才能通过“前门”进入。每台服务器都有一个 autofs 配置,设置为从本地主机挂载卷。这些是我的配置文件:
/etc/auto.master
:
#+auto.master
/- /etc/auto.nfs
/etc/auto.nfs
:
/var/lib/sitedata -fstype=nfs,vers=3,hard,noexec,nosuid,nodev,rsize=32768,wsize=32768,intr,noatime,mountproto=tcp 127.0.0.1:/shared
(这些挂载值是针对 gluster NFS 客户端的建议值,特别是强制 TCP;更简单的配置也不起作用)
我遇到的问题是 autofs (或 NFS) 似乎在说“嘿,这指向 localhost,所以我可以通过执行本地绑定重新挂载来快捷方式!”,就好像我说的那样mount --bind /shared /var/lib/sitedata
。不幸的是,这完全失败了,因为它根本不是一回事。
这似乎是 localhost 特有的,因为连接到其中一个主机的远程服务器在相同的 autofs 配置下不会出现问题。我不希望每个 Web 服务器都挂载其他服务器 - 性能已经够差了,不需要引入新的故障模式!
我如何强制 autofs 的 NFS 挂载通过 TCP 进行?
答案1
参见 auto.master 手册。
在“选项”下,您可以找到“nobind”,它可以起到作用。