我们正在使用两台服务器实施DRDB +心跳,以使文件系统具有故障转移function。 这些服务器公开其他服务器的NFS服务
目前DRDB工作得很好,但是当testing我们从一台服务器切换到另一台服务器时,挂载的文件夹在其他服务器上的NFS只是挂起。
有没有透明的方法来做这个故障转移? 使它对NFS透明,或者我们需要重新安装这些nfs–mounted文件夹?
这里的问题是,您使用DRBD创build了一个冗余存储arrays,但是有两个不相连的NFS守护进程使用相同的共享数据运行。 NFS是有状态的 – 只要你不能转移状态,你将会遇到严重的故障转移问题。 Solaris HA安装程序确实有守护程序来处理这个问题 。 对于Linux安装,您必须确保您的NFS状态目录(可configuration,通常为/ var / lib / nfs)位于两台服务器的共享磁盘上。
坚持使用Heartbeat或Corosync进行故障检测和故障转移 – configurationQuorum时,通常会执行正确的操作(tm)。 其他故障转移技术可能太专注于提供虚拟IP(如VRRP),并不适合您的需求。 有关集群设置的更多详细信息和附加组件,请参阅http://linux-ha.org 。
我build议你阅读这个使用NFSv4,DRBD和Pacemaker的高可用NFS的HOWTO 。 它包含详细的说明和解释,以及有关如何提供高可用性NFS服务的重要细节。 现在我们已经在生产中放置了一些这样的HA-NFS设置,并且它们工作得很好。
这种HA设置的一部分是远离旧的Heartbeat系统(使用/etc/ha.d/haresources和/etc/ha.d/ha.cf ),并使用function更强大,function更强大的Pacemaker堆栈。 这是从旧的心跳转变过来的,有相当的学习曲线,但最终这意味着你有一个值得命名的集群运行。
HOWTO由Linbit编写,该公司创build并维护了DRBD,为整个Linux HA堆栈贡献了很多。 不幸的是(免费)在他们的网站上注册是需要访问技术指南,但他们写得很好,非常有用。
我能想到的最好的方法是使用虚拟IP和虚拟MAC地址,以及知道这种转换可能发生的交换机/在没有免费ARP的情况下做正确的事情(所以你不必等待一个ARP高速caching清除,这可能需要足够长的时间来使您的NFS挂载陈旧)。
像CARP这样的东西可能是IP故障转移的方式 – 这在所有的BSD上都是可用的,就我所知,在Linux内核中也是如此。 显然给它一些testing,以确保它按照你想要的方式工作(这听起来像你正在做testing,所以你在一个好的地方)。
确保文件系统位于相同的主要/次要设备号码上(如果两侧使用相同的drbd-device,则应该如此),并为NFS服务使用虚拟IP。
在心跳使用这个顺序的资格:
重要的是要把最后的VIP – 否则你的客户将失去他们的NFS连接,而不是不断地重试它。
顺便说一句:把一个IP作为资源的心跳,也会在故障转移时做一个好评的ARP – 所以你不必关心(通常)。