データベースが応答しないファイルシステムにマウントされたときにサービスpostgresqlの停止がハングアップする - HAフェールオーバーがハングアップする

私はHAクラスタ(冗長ペア)を設定してpostgresqlデータベースを稼働させました。データベースはNFSファイラ上にあります。ファイラーへの接続がプライマリから落ちた場合(ケーブルが抜けた場合など)、プライマリはフェールオーバーを試みます。しかし、nfsマウントが応答しないため、 "service postgres stop"を実行するとフェールオーバーがハングします。

私のgoogle-fuは私を失望させました(しかし、他の誰かがこれを打つだろうと思っていました!)

私のha.cfファイル:

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

haresource:

node2 IPaddr::/24/eth0 Filesystem::::/var/lib/pgsql::nfs::rw,noatime,rsize=4096,wsize=4096,hard,intr,noac,nfsvers=3 postgresql
1
フォンノイマンを誤って引用すると、リモートファイルシステムに対してデータベースを実行しようとする人は、もちろん罪の状態です。私はあなたがこの問題の解決策を見つけたとしても、より困難な解決策で大きな問題に一歩近づくことを期待しています。データベースでローカルディスクを使用する。
追加された 著者 Daniel Lyons,

1 答え

NFSマウントは、サーバがなくなるまで、最長で10分かかることがあります。

この遅れは、2つのサーバーを適切にフェンスすることを非常に困難にするかもしれません。 postgresプロセスが失敗したマスタで停止する前にNFSサーバが復帰すると、失敗したマスタのpostgresプロセスと新しいmaster postgresプロセスが同時にデータベースファイルに書き込みを試みて、破損を引き起こす可能性があります。

1
追加された