我遇到过这样一种情况,即 DRBD-heartbeat 设置中有一个节点发生故障,但没有进行故障转移。当时的情况是主节点已锁定,但并未直接停机(无法通过 ssh 或 nfs 挂载访问,但可以 ping 通)。理想的行为应该是检测到此情况并故障转移到辅助节点,但似乎由于主节点没有完全停机(服务器之间有专用网络连接),heartbeat 的检测机制没有发现这一点,因此没有进行故障转移。
有人见过这个吗?我需要配置什么才能实现更强大的集群故障转移?DRBD 似乎工作正常(当我重新启动旧主服务器时必须重新同步),但如果没有良好的故障转移,它的用途就会受到限制。
- 心跳 3.0.4
- drbd84
- RHEL 6.1
- 我们没有使用Pacemaker
nfs03 是此设置中的主服务器,nfs01 是辅助服务器。
哈夫
# Hearbeat Logging
logfacility daemon
udpport 694
ucast eth0 192.168.10.47
ucast eth0 192.168.10.42
# Cluster members
node nfs01.openair.com
node nfs03.openair.com
# Hearbeat communication timing.
# Sets the triggers and pulse time for swapping over.
keepalive 1
warntime 10
deadtime 30
initdead 120
#fail back automatically
auto_failback on
这是 haresources 文件:
nfs03.openair.com IPaddr::192.168.10.50/255.255.255.0/eth0 drbddisk::data Filesystem::/dev/drbd0::/data::ext4 nfs nfslock
答案1
我猜你必须实施一些监控来检查你的主系统是否按预期运行。如果任何检查失败,你应该关闭服务器(通过 IPMI/ILO 或交换式 PDU)并让心跳完成其工作。
我认为你总会发现它不能按照你期望的方式工作的情况。
答案2
这不是完美的解决方案,但 2-3 年前我在使用较旧的系统时遇到过这个问题drbd
。我所做的是在两个主机上添加一个脚本,cron
检查实际主机是活动主服务器还是从服务器。如果它在从服务器上,它会检查 NFS 目录中的某个已知文件是否可用。如果没有;我认为 NFS 已损坏;它会通过 sshpower off
命令发送。您可以尝试按照这种方式工作。我相信它们有更好的方法。这个对我来说已经足够好了。