Heartbeat、Pacemaker 和 CoroSync 的替代品?

Heartbeat、Pacemaker 和 CoroSync 的替代品?

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

我的 Heartbeat+Pacemaker 可以正常工作,但我并不满意。以下是我的一些问题:

  • Heartbeat - 本身限制为两个节点。我希望有 3 个以上节点。
  • Pacemaker - 无法自动配置。集群必须以法定人数运行,然后仍需要手动配置。
  • CoroSync—不支持单播。

Pacemaker 运行良好,尽管它的强大功能使其设置起来很困难。Pacemaker 的真正问题是没有简单的方法来自动化配置。我真的想启动一个 EC2 实例,安装 Chef/Puppet,然后让整个集群在没有我干预的情况下启动。

答案1

我更喜欢使用保持活跃实现高可用性。我发现它比 heartbeat 和 company 更易于设置(一个守护进程和配置)。我遇到的唯一缺点是 keepalived 默认没有单播选项,并且仅使用 VRRP 进行通信(HAProxy 的作者写了一个单播补丁但是对于 keepalived 来说)

答案2

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

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

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

例如:

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
}

(Heartbeat 应该在 1.2.3+ 版本中支持 3+ 节点集群,但我个人从未尝试过,并且不知道它是否可以与 Unicast 一起使用)。

答案3

抱歉,但关于 Pacemaker 的部分不正确。Pacemaker 回归和发布测试大量使用了自动化。

要配置没有活动集群的集群,请在所有命令前加上前缀CIB_file=/var/lib/heartbeat/crm/cib.xml或在您的环境中设置它。只需确保在启动集群之前删除 .sig 文件即可。

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

答案4

有适用于 Oracle Unbreakable Linux 的 Oracle Clusterware,尽管我没有使用过它。

相关内容