DRBDハートビートのセットアップでノードに障害が発生したが、フェイルオーバーしなかったというシナリオがありました。何が起こったのかというと、プライマリノードはロックされていましたが、直接ダウンしませんでした(sshまたはnfsマウントではアクセスできませんでしたが、pingを実行できました)。望ましい動作は、これを検出してセカンダリノードにフェイルオーバーすることでしたが、プライマリが完全にダウンしなかったため(サーバーからサーバーへの専用ネットワーク接続がある)、ハートビートの検出メカニズムが検出されなかったようです。その上で、したがってフェイルオーバーしませんでした。
誰かこれを見たことがありますか?より堅牢なクラスターフェイルオーバーを実現するために構成する必要があるものはありますか? DRBDは他の点では正常に機能しているようですが(古いプライマリを再起動したときに再同期する必要がありました)、適切なフェイルオーバーがないと、使用が制限されます。
このセットアップでは、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
プライマリシステムが期待どおりに動作するかどうかを確認するには、監視を実装する必要があると思います。チェックに失敗した場合は、サーバーの電源を切り(IPMI/ILOまたはスイッチドPDUを使用)、ハートビートにその仕事を任せる必要があります。
思った通りに動かない状況が必ずあると思います。
完璧な解決策ではありませんが、2〜3年前に古いdrbd
でこの問題が発生しました。私がしたことは、実際のホストがアクティブなマスターであるかスレーブであるかをチェックするスクリプトをcron
に両方のホストに追加することでした。スレーブ上にある場合は、NFSディレクトリ内の既知のファイルが使用可能かどうかを確認しました。そうでない場合; NFSが壊れていると思いました。 sshを送信しますpower off
コマンド。あなたはこの線に沿って働くことを試みることができます。私は彼らがより良い方法であると確信しています。これは私には十分でした。