当数据库挂载在无响应的文件系统上时,service postgresql停止挂起 - 导致ha故障转移挂起

时间:2012-02-06 17:41:53

标签: linux postgresql nfs high-availability

我有一个运行postgresql数据库的HA集群(冗余对) - 数据库位于NFS文件管理器上。如果与文件管理器的连接从主服务器中断开(例如,电缆掉线) - 则主要尝试进行故障转移。但是,运行“service postgres stop”时故障转移会挂起,因为nfs挂载没有响应。

我的google-fu让我感到失望(虽然我以为其他人之前会想到这个!)

我的ha.cf文件:

logfile /var/log/ha-log
logfacility local0
keepalive 2
warntime 15
deadtime 30
initdead 60
ucast eth0 <eth0 ip>
ucast eth1 <eth1 ip>
node node2
node node1
auto_failback off
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail uid=hacluster
ping <filer IP>

haresource:

node2 IPaddr::<VIP>/24/eth0 Filesystem::<filer export>::/var/lib/pgsql::nfs::rw,noatime,rsize=4096,wsize=4096,hard,intr,noac,nfsvers=3 postgresql

1 个答案:

答案 0 :(得分:1)

当服务器消失时,NFS挂载可能会挂起很长一段时间,最长可达十分钟。

这种滞后可能会使两个服务器的正确围栏变得非常困难。如果NFS服务器在失败的主服务器上postgres进程终止之前恢复生机,则失败的主服务器的postgres进程和新的主postgres进程可能会尝试同时写入导致损坏的数据库文件。