我有一个场景,其中 DRBD 心跳设置有一个故障节点但没有故障转移。发生的事情是主节点已锁定,但没有直接关闭(它无法通过 ssh 或使用 nfs 挂载访问,但可以 ping 通)。期望的行为是检测到这一点并故障转移到辅助节点,但似乎由于主节点没有完全关闭(服务器到服务器之间有专用网络连接),心跳检测机制没有启动在那上面,因此没有故障转移。
有人见过这个吗?是否需要配置一些东西以实现更强大的集群故障转移?DRBD 似乎在其他方面工作正常(当我重新启动旧的主数据库时必须重新同步),但如果没有良好的故障转移,它的使用是有限的。
- 心跳3.0.4
- drbd84
- 瑞尔 6.1
- 我们没有使用起搏器
nfs03 是此设置中的主服务器,nfs01 是辅助服务器。
ha.cf
# 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
不是完美的解决方案,但大约 2-3 年前我遇到了这个问题,使用的是较旧的
drbd
. 我所做的是在两台主机上添加一个脚本,cron
用于检查实际主机是活动主机还是从机。如果它在从机上,它会检查 NFS 目录中的某个已知文件是否可用。如果不; 我假设 NFS 坏了;它通过 sshpower off
命令发送。您可以尝试沿着这条线工作。我相信它们是更好的方法。这个对我来说已经足够好了。我想您将不得不实施一些监控来检查您的主系统是否按预期运行。如果任何检查失败,您应该关闭服务器(通过 IPMI/ILO 或切换 PDU)并让心跳执行其工作。
我认为您总会发现它无法像您期望的那样工作的情况。