我知道有些人正在使用keepalived和心跳的主动/待机,但如果haproxy进程死亡采取了什么行动?
如果haproxy进程死亡和/或出现networking问题,那么虚拟IP将会切换服务器将会是一件好事。 我们目前正在调查与心脏起搏器的心跳和corosync。 任何人都可以深入解释这个问题的解决scheme吗?
更新 :谢谢凯尔,看到答案和链接。
我会说, heartbeat
是你在找什么。
如果受监控的服务(在你的情况下haproxy
)有一个符合LSB的初始化脚本 – 心跳将运行初始initscript status
。 如果它表示服务已closures,则会尝试启动服务。 如果启动失败了几次 – 它会执行故障转移到另一个节点。 只要节点之间有一种互相通信的方式,就会以非常可控的方式执行 – 地址在一个节点上被移除,并在另一个节点上被移除。
如果两个心跳机器彼此失去通信,他们可能会尝试执行故障转移。 解决这个问题的一种方法是configuration一个STONITH插件(在头部拍摄其他节点)。 这将使用一个pipe理界面,并尝试在开始其服务之前closures其他服务。 像这样的一些机制是至关重要的,如果涉及共享存储故障转移。
就我个人而言,我从来没有经历过haproxy
死 – 我认为这是一个非常稳定的服务。 只有在haproxy-nodes上运行时,才使用heartbeat
进行IP地址故障转移。
谢谢Kvisle和Kyle! 我们结束了keepalived,因为凯尔提到,这是haproxy创造者推荐的解决scheme。 Keepalived包括运行您select的用户空间脚本的能力,并根据退出状态确定资源可用性。 所以你可以很容易地通过进程监控来完成故障转移。 另一个好处是与心脏起搏器/ corosync相比,简单,只有一个应用程序/进程和一个configuration文件。
在我们的testing中,我们看到故障转移发生得如此之快以至于不会丢失一个ping。 再次感谢!
关于keepalived和VRRP的大文章
另请参阅: 相关的serverfault答案