haproxy故障切换与进程监控?

我知道有些人正在使用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。 再次感谢!

http://www.keepalived.org/

关于keepalived和VRRP的大文章

另请参阅: 相关的serverfault答案