良好的 NFS 多路径解决方案

良好的 NFS 多路径解决方案

我有几台服务器通过 NFS 为几个 Webfarm 提供完全相同的内容,所有涉及的服务器都运行着 CentOS 5

两个 NFS 服务器之间的内容使用 Unison 进行复制(过去尝试过 drbd,但性能严重下降)

为了分配负载,我为每个场安装了不同的 NFS 服务器。

  • Webfarm1 挂载 NFS1
  • Webfarm2 挂载 NFS2

我唯一的问题是,当其中一台服务器崩溃时,我希望自动从另一台 NFS 服务器重新挂载内容,直到该服务器恢复,然后在宽限期后返回到第一台服务器。

在我开始编写这样的应用程序之前,我想知道是否有任何开源解决方案可用,可以做一些接近我预期的事情,应用程序的所有智能都应该在客户端(服务器端解决方案都已经过测试和丢弃(心跳,drbd等...)因为我想在主动-主动解决方案中使用两个 NFS 服务器。

同样,Webfarm 中的所有服务器都应访问同一个 NFS 服务器,这一点很重要,否则就会遇到一些令人讨厌的复制问题。

提前感谢您的帮助!

答案1

看看RedHat Cluster Suite NFS 手册,副标题为“设置具有故障转移功能的负载平衡 NFS 群集”。如果这不是您正在寻找的,我认为它可能有一些很好的建议。

您可以采用该文档中提出的想法并使用 Pacemaker/Corosync 来实现它们,我发现它比传统的 RedHat 集群工具更容易使用。

您基本上是在要求一个具有自动故障转移功能的主动/主动集群。由于您从两个独立但同步的数据副本提供服务,因此如果您实际上试图为某种共享存储(例如,像 GFS 这样的集群文件系统)创建负载平衡 NFS 前端,那么您实际上已经避开了出现的大多数复杂问题(涉及锁定和其他状态同步)。

答案2

你可以使用计算机断层扫描数据库做到这一点。它支持 NFS具有正确的文件锁定行为和锁定恢复。此外,它还是主动-主动解决方案即所有 NFS 服务器同时处于活动状态,并且客户端通过服务 IP 地址(DNS 循环)访问它们,如果发生节点故障,这些 IP 地址可以从一台服务器移动到另一台服务器。

然而,它 a) 是一个服务器端解决方案并且 b) 需要集群文件系统例如通用文件系统或者政府金融服务局(另一方面,与您的 unison 解决方案相比,这可能是一个优势)。

相关内容