我正在使用Debian(Lenny,Squeeze)在一个相当简单的设置下运行keepalived ,我只是(ab)将它用作VRRP守护进程来决定两台相同机器之间对于某些虚拟IP的主控权。 所有的魔法都发生在notify -script中。
当我完全停止守护进程(使用debian的init脚本)时,keepalived不会运行通知脚本进行备份或至less是故障模式,这是我所怀疑和需要的。
我可以用一些不需要的效果“修复”rc脚本 – 通知脚本会被硬编码到rc脚本中,引入这两者之间的不必要的耦合,并将修补程序移植到下一个debian版本,所以这是不是我真正想去的方式
任何提示更清洁的解决这个问题?
vrrp_instance FOORRP { virtual_router_id 42 interface eth0 state BACKUP priority 200 nopreempt authentication { auth_type AH auth_pass foobar42 } notify "/usr/local/bin/vrrp-state" virtual_ipaddress { 127.0.0.2 } }
PS:使用“three notify _” – 脚本不会改变任何东西
PPS:在更新日志 (版本1.1.16)中有一些提到,这适合我的问题(尽pipe我没有使用任何与keepalived相关的lvs),但是我使用的是更新的版本(1.1.20):“notify_down在keepalivedclosures工作真正的服务器不执行“。
通过更多的文档挖掘,最后发现它:
notify_stop "/usr/local/bin/vrrp-state fault"
按预期工作…. X-}
最近我遇到了这样的问题,我发现不执行这些脚本是合乎逻辑的。 这些脚本在特定事件(如成为主或从属)的情况下被执行。 Keepalived进程不应该被closures,除非手动完成,并有充分的理由这样做。 如果担心keepalived进程失败(而不是手动closures),则可以使用monit 。 这是一个很好的工具来监视您的运行进程,并重新启动,如果有人失败。
正如您所提到的,您可以简单地修改keepalived的启动脚本来执行所需的脚本(如停止其他服务)。 我认为这比修补keepalived代码更干净,自己维护它,并且每次重新安装/升级时都要重新做必要的补丁。