我有几台服务器,通过NFS向几个webfarms提供完全相同的内容,涉及的所有服务器都运行CentOS 5
两个NFS服务器之间的内容使用Unison进行复制(以前尝试使用drbd,严重影响性能)
为了分配负载,我正在从每个农场安装一个不同的NFS服务器。
我遇到的唯一问题是,当其中一台服务器崩溃时,我想自动从其他NFS服务器重新装载内容,直到服务器恢复,然后在宽限期后返回到第一台服务器。
在开始编写这样的应用程序之前,我想知道是否有任何已经可用的Opensource解决scheme可以实现我所期望的function,应用程序的所有智能应该放在客户端(服务器端解决scheme已经经过testing,丢弃(心跳,drbd等),因为我想在主动 – 主动解决scheme中使用两个NFS服务器。
另外,webfarm中的所有服务器都要访问相同的NFS服务器,这一点很重要,否则会导致一些令人讨厌的复制问题。
预先感谢您的帮助!
查看RedHat Cluster Suite NFS Cookbook ,标题为“设置具有故障转移function的LoadBalanced NFS群集”。 我想这可能有一些很好的build议,如果这不是你正在寻找的。
您可以采用该文档中提出的想法,并使用Pacemaker / Corosync来实现这些想法,与传统的RedHat集群工具相比,我发现使用起来更容易。
你基本上要求一个具有自动故障转移function的主动/主动群集。 既然你是从两个独立的 – 但同步的数据副本中提取出来的,你实际上已经回避了大部分复杂化的问题(包括locking和其他状态同步),如果你真的想创build一个将NFS前端负载平衡到某种共享存储(例如GFS等集群文件系统)。
你可以使用CTDB来做到这一点。 它支持正确的文件locking行为和locking恢复的NFS 。 而且,它是一个主动 – 主动解决scheme,即所有NFS服务器同时处于活动状态,客户端通过服务IP地址(DNS轮询)访问它们,在发生节点故障的情况下可以从服务器移动到服务器。
但是,a)是服务器端解决scheme ,b)需要像GPFS或GFS这样的集群文件系统 (与统一解决scheme相比,OTOH可能是一个优势)。