Heartbeat,Pacemaker和CoroSync的替代品?

除了典型的Heartbeat / Pacemaker / CoroSync组合以外,Linux上是否有自动故障切换的主要select? 特别是,我在EC2实例上设置了故障转移,它仅支持单播 – 不允许多播或广播。 我正在专门处理那些还没有自动故障转移function的软件,而且不支持多主环境。 这包括HAProxy和Solr等工具。

我有心跳+起搏器工作,但我不感到激动。 以下是我的一些问题:

  • 心跳 – 本身,限于两个节点。 我想要3+。
  • 起搏器 – 不可能自动configuration。 群集必须以法定人数运行,然后仍需要手动configuration。
  • CoroSync – 不支持单播。

起搏器工作得很好,虽然它的功率很难安装。 Pacemaker的真正问题是没有简单的方法来自动化configuration。 我真的想要启动一个EC2实例,安装Chef / Puppet,让整个集群不需要我介入就可以启动。

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

    实际上,我正在处理与您所描述的内容(EC2上的故障转移群集)非常相似的内容,并在尝试使用Heartbeat之后,将Corosync作为我的消息传递层。 Corosync将在多台服务器上运行,并且从版本1.3.0(2010年11月起)支持单播(UDPU)。 我已经在亚马逊的EC2云(使用亚马逊的Linux AMI)上设置和testingCorosync,并且可以确认它是否正常工作。

    示例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 } 

    (心跳应该支持1.2.3+以上版本的3+节点集群,但是我从来没有亲自尝试过,也不知道它是否可以用于单播)。

    对不起,但关于起搏器的部分是不正确的。 Pacemaker回归和释放testing广泛使用自动化。

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

    对于没有法定人数的群集,大多数(如果不是全部)工具应该支持-f--force ,这将指示群集接受更改。 如果你发现一个工具没有 – 请提交一个bug。

    在开源世界中,有RedHat Cluster Suite 。 我已经实施了RHCS已经有好几年了,所以我今天没有很多相关的事情要说。

    在商业上,有Veritas Cluster Server 。 没有经验。

    UCARP是一个更简单和开源的HA工具。 UCARP不提供与Heartbeat / Pacemaker / CoroSync几乎相同的“基础架构”,但您可以围绕它构buildHA解决scheme。

    您还可以使用虚拟化技术构build高度可用的基础架构,但这些解决scheme倾向于将重点放在主机级可用性上,而不是应用程序级可用性。

    有Oracle集群软件用于Oracle Unbreakable Linux,尽pipe我没有使用它。

    如果您已经在使用EC2,为什么不使用Elastic Load Balancing ? 它将使您获得应用程序级别的可用性,而无需自己configuration故障转移。

    Veritas Cluster很不错(与Linux-Heartbeat,AIX-hacmp,HP-Serviceguard和Sun集群相比),但是它要花很多钱。 我最后一次看到它的价格是基于集群的cpu核心。 赛门铁克当前供应商

    我在posix shell中编写了故障转移群集pipe理器: https : //github.com/nackstein/back-to-work

    看看它,我正在寻找一个人想要尝试它,并帮助发展。