DRDB 和 NFS:是否有任何有效的方法使 NFS 的故障转移透明

Gab*_*osa 6 nfs mount drbd

我们正在使用两台服务器实现 DRDB + heartbeat,以拥有一个具有故障转移功能的文件系统。这些服务器为其他服务器公开 NFS 服务

目前 DRDB 工作得很好,但在测试时,我们从一台服务器切换到另一台服务器,其他服务器中通过 NFS 挂载的文件夹只是挂起。

是否有任何透明的方法来进行此故障转移?让它对 NFS 透明,还是我们需要重新挂载那些 nfs 挂载的文件夹?

the*_*bit 6

这里的问题是您使用 DRBD 创建了一个冗余存储阵列,但是您有两个脱节的 NFS 守护进程运行相同的共享数据。NFS 是有状态的——只要你不能转移状态,你就会在故障转移时遇到严重的问题。Solaris HA 设置确实有处理这个问题的守护进程。对于 Linux 安装,您必须确保 NFS 状态目录(可配置,通常为 /var/lib/nfs)位于两台服务器的共享磁盘上。

坚持使用 Heartbeat 或 Corosync 进行故障检测和故障转移 - 当配置了Quorum时,它通常会做正确的事情 (tm) 。其他故障转移技术可能过于专注于提供虚拟 IP(例如 VRRP)而无法满足您的需求。有关群集设置的更多详细信息和其他组件,请参阅http://linux-ha.org

  • 仲裁的主要设计目标是防止裂脑综合症,而不是保持可用性(实际上,仲裁的想法与可用性优化相矛盾)。拥有独立的通信线路是好的,但即使是独立的线路也可能失败——您需要确保在任何情况下都不会有一个以上的集群节点承担主角色并为客户端提供服务——这就是法定人数会做的事情,代价是增加了*没有*集群节点将为客户端提供服务的概率。 (3认同)

vor*_*aq7 0

我能想到的使其透明化的最佳方法是使用虚拟 IP 和虚拟 MAC 地址,并且交换机知道这种转换可能会发生/在存在免费 ARP 时执行正确的操作(因此您不必等待 ARP 缓存清除,这可能需要足够长的时间才能使您的 NFS 挂载失效)。

CARP这样的东西可能是 IP 故障转移的方法 - 这在所有 *BSD 上都可用,据我所知在 Linux 内核中也可用。显然,请对其进行一些测试,以确保它按照您想要的方式工作(听起来您目前正在进行测试,因此您处于一个良好的位置)。