我正在将 Heartbeat + Pacemaker 设置移至 openSUSE 12.1。结果发现 Heartbeat不支持在此平台上不再可用,因此无法从官方存储库获得。
切换到 Corosync 并不是一个真正的问题,但我很好奇为什么会做出这个决定。Heartbeat 是否贬值了,或者这是特定发行版的维护问题?在 HA 环境中使用 Corosync 作为消息层有什么好处?
答案1
我很晚才回答你的问题,但我还是想说:
- 是的,心跳已被弃用。
- 不,这不是发行版特有的问题
- 使用 Corosync 代替 heartbeat 有很多好处,其中最重要的就是上面的第 1 点。不过,我会在这里列出我所知道的所有好处。
功能比较:
首先,使用 Heartbeat 而不是 Corosync 的唯一好处(在我看来)是它更容易配置,即使你是第一次使用,也可以在几分钟内让它运行。Corosync 需要很多耐心和爱心。
Heartbeat 允许我们为所有资源定义一个主节点,而在 corosync 上,您可以为不同的资源分配不同的主节点。
资源粘性可以用 corosync 定义(心跳不可用)。资源粘性是资源所有权的优先级。假设有一个 2 服务器集群,包含 Server1 和 Server2。Server1 是主服务器,拥有所有活动资源,而 Server2 是次服务器。有一天,Server1 宕机,Server2 成为主服务器,使其所有资源都处于活动状态。现在,如果这是一个心跳集群,那么重新添加 Server1 会很麻烦,而使用 Corosync(定义了资源粘性)时,即使 Server1 稍后启动,它也会将 Server2 保持为主服务器。
使用 corosync,您无需担心维护相同版本的集群配置。Corosync 集群会自动在所有组成服务器之间同步配置,从而最大限度地减少操作员错误导致的问题。
Heartbeat 允许创建双节点集群,corosync 的限制要高得多(我不记得具体数字了)。
Corosync 允许资源共置。有时我们会将一组资源分组,并希望特定组从一台服务器运行。使用 Corosync 可以创建此类组并为每个组分配不同的主资源,从而最大限度地提高计算/网络利用率。
这可能需要一些努力,但您也可以查找 Stonith,这是一项方便的功能,可避免集群中的数据损坏或冲突。Stonith 是 Shoot The Other Node In The Head 的缩写。旨在处理可能存在硬件/负载或其他问题的节点(强制关闭它们)。