Heartbeat、Pacemaker 和 CoroSync 的替代品?

org*_*gie 27 linux high-availability heartbeat pacemaker corosync

除了典型的 Heartbeat/Pacemaker/CoroSync 组合之外,在 Linux 上是否还有其他主要的自动故障转移替代方案?特别是,我正在 EC2 实例上设置故障转移,它只支持单播 - 没有多播或广播。我专门尝试处理我们拥有的少数软件,这些软件还没有自动故障转移功能并且不支持多主环境。这包括 HAProxy 和 Solr 等工具。

我有 Heartbeat+Pacemaker 工作,但我对此并不感到兴奋。以下是我的一些问题:

  • 心跳 - 就其本身而言,仅限于两个节点。我想要 3+。
  • 起搏器 - 无法自动配置。集群必须以法定人数运行,然后它仍然需要手动配置。
  • CoroSync - 不支持单播。

起搏器工作得很好,尽管它的功率使其难以设置。Pacemaker 的真正问题在于没有简单的方法来自动化配置。我真的很想启动一个 EC2 实例,安装 Chef/Puppet 并在没有我干预的情况下启动整个集群。

Jim*_*imB 17

我更喜欢使用keepalived来实现高可用性。我发现设置(一个守护进程和配置)比心跳和公司更简单。我遇到的唯一缺点是keepalived默认没有单播选项,并且只使用VRRP进行通信(HAProxy的作者已经为keepalived编写了一个单播补丁

  • 这是@Coops 所指的邮件,我相信 http://www.formilux.org/archives/haproxy/1003/3259.html (5认同)
  • +1 我已经习惯在所有“故障转移”情况下使用心跳,直到我阅读了 haproxy 作者的一篇文章(某处)关于为什么我做错了(或至少效率低下)并且应该使用 keepalived 代替. 这完全取决于重要的事情是故障转移网络路径(例如将 IP 移动到不同的服务器 - keepalived),还是需要确保仅对资源进行单次访问(例如 SAN 连接 - 心跳)。 (4认同)
  • 自 1.2.8 (2013-08-05) 发布以来,Keepalived 支持单播 (http://www.keepalived.org/changelog.html)。 (4认同)

cyb*_*x86 14

我实际上正在研究与您所描述的非常相似的东西(EC2 上的故障转移集群),在尝试了 Heartbeat 之后,我选择了 Corosync 作为我的消息传递层。Corosync 将在多台服务器上运行,并且从 1.3.0 版(2010 年 11 月起)开始支持单播 (UDPU)。我已经在 Amazon 的 EC2 云(使用 Amazon 的 Linux AMI)上设置并测试了 Corosync,并且可以确认它可以正常工作。

示例 udpu 文件安装到 /etc/corosync。

为每个节点的接口部分添加一个成员块,并将传输指定为 updu。(我在下面的示例中使用了与 heartbeat 相同的端口,但您可以根据需要更改它)。

例如:

totem {
        version: 2
        secauth: off
        interface {
                member {
                        memberaddr: 10.xxx.xxx.xxx
                }
                member {
                        memberaddr: 10.xxx.xxx.xxx
                }
                ringnumber: 0
                bindnetaddr: 10.xxx.xxx.xxx
                mcastport: 694
        }
        transport: udpu
}
Run Code Online (Sandbox Code Playgroud)

(Heartbeat 1.2.3+版本应该支持3+节点集群,不过我个人没试过,不知道Unicast能不能用)。


小智 11

抱歉,关于 Pacemaker 的部分不是真的。Pacemaker 回归和发布测试广泛使用自动化。

要在没有活动集群的情况下进行配置,请为所有命令添加前缀CIB_file=/var/lib/heartbeat/crm/cib.xml或在您的环境中设置它。请确保在启动集群之前删除 .sig 文件。

对于没有仲裁的集群,大多数(如果不是全部)工具都应该支持-f--force指示集群无论如何都要接受更改。如果您发现没有的工具 - 请提交错误。