我想构建一个高可用性服务器集群。现在我想知道keepalive和heartbeat的详细信息,它们有什么区别,以及如何选择其中一个。
答案1
相信 HAProxy 的作者 Willy Tarreau 已经非常准确地回答了这个问题,http://www.formilux.org/archives/haproxy/1003/3259.html。
引自上述链接
Heartbeat 不是获得冗余 haproxy 设置的最佳工具,它旨在构建集群,这与拥有两个冗余无状态网络设备有很大不同。keepalived 或 ucarp 等面向网络的工具最适合该任务
这两个家庭之间的区别很简单
- 面向集群的产品,例如心跳将确保共享资源存在于最多一个地方。这对于共享文件系统、磁盘等非常重要... 它旨在在切换期间关闭一个节点上的服务并启动另一个节点上的服务。这样,共享资源可能永远不会被同时访问。这是一项非常困难的任务,但它做得很好。
- 面向网络的产品,例如保持活跃将确保共享 IP 地址存在于至少一个地方。请注意,我不再谈论服务或资源,它只是在玩弄 IP 地址。它不会尝试关闭或启动任何服务,它只会考虑一定数量的标准来决定哪个节点最适合提供服务。但服务必须在两个节点上都已启动。因此,它非常适合冗余路由器、防火墙和代理,但根本不适合磁盘阵列或文件系统。
(是的,我知道这是一个老问题,但供将来参考)
答案2
没有明确、一致的区别。这些词有时或多或少可以互换使用。
有一个用于高可用性设置的通用用户空间守护进程,称为Keepalived,而Linux HA项目以前有一个名为Heartbeat的守护进程,现在已更改为起搏器。(我相信您没有要求对这两个系统进行全面概述,以及它们之间的所有区别,在我看来,这会偏离主题。)
在日常使用中,我认为最常见的用法是:
“Keepalive”更普遍地指的是保持服务高可用性的系统。
“心跳”更具体地指一种通信协议,高可用性设置中的一个或多个成员会定期发送“是的,我还活着!”消息。如果在规定时间内没有收到“是的,我还活着”消息(即另一台主机已关闭),它们的对等体就会采取行动。这有点像感觉脉搏,因此得名。