haproxy 故障转移与过程监控?

haproxy 故障转移与过程监控?

我知道有些人正在使用 keepalived 和 heartbeat 进行主动/待机,但是如果 haproxy 进程死亡了会采取什么措施?

如果 haproxy 进程终止和/或出现网络问题,虚拟 IP 可以切换服务器,那就太好了。我们目前正在研究 heartbeat 和 corosync 与 pacemaker。有人能深入解释一下他们解决这个问题的方法吗?

更新:谢谢 Kyle,请参阅答案和其中的链接。

答案1

我想说这heartbeat就是你所寻找的。

如果受监控的服务(haproxy就您而言)具有符合 lsb 的 init 脚本 - heartbeat 将运行initscript status。如果它表示服务已关闭,它将尝试启动它。如果它启动失败几次 - 它将执行故障转移到另一个节点。只要节点有相互通信的方式,这将以非常受控的方式执行 - 地址在一个节点上被删除,并在另一个节点上被启动。

如果两台心跳机彼此失去通信,它们可能都会尝试执行故障转移。解决此问题的一种方法是配置 STONITH 插件(Shoot The Other Node In The Head)。这将使用管理接口并尝试在启动其他服务之前关闭其他服务。如果在故障转移中使用共享存储,则此类机制至关重要。

就我个人而言,我从未遇到过haproxy死机的情况 - 我认为这是一项非常稳定的服务。我仅在 haproxy-nodes 上运行时才使用它heartbeat来进行 IP 地址故障转移。

答案2

谢谢 Kvisle 和 Kyle!我们最终选择了 keepalived,因为正如 Kyle 所说,它是 haproxy 创建者推荐的解决方案。Keepalived 包括运行您选择的用户空间脚本并根据退出状态确定资源可用性的功能。因此,您可以非常轻松地通过进程监控实现故障转移。另一个好处是与 heartbeat 相比,使用 pacemaker/corosync 更简单,只需一个应用程序/进程和一个配置文件。

在我们的测试中,我们发现故障转移发生得非常快,以至于没有丢失任何 ping。再次感谢!

http://www.keepalived.org/

有关 keepalived 和 VRRP 的精彩文章

另请参阅:相关 serverfault 答案

相关内容