复制beantalkd以实现高可用性


15

标题说明了一切。

有谁知道复制beantalk的方法,以便如果beantalk服务器关闭,其他从属可以接管?

这是我想到的一种方法:我可以使beantalk将其binlog(与-b一起)写入共享位置,然后如果主节点失败,则以某种方式使辅助/备份服务器启动beantalk。

当然,必须有更好的方法。

Answers:


5

由于它是通过binlog写入磁盘的,因此我认为您可以执行与MySQL管理员通常类似的操作:心跳 w / DRBD(此处为示例)。

不过,我上次尝试使用心跳时,它不支持节点之间的非多播检查,这意味着在云/ VPS基础架构(AWS,Linode,Slicehost等)上运行或多或少是不可能的。实际上,大多数群集服务都使用多播。可能不再是这种情况,但需要注意。您可能可以使用keepalived来提供基于ip的故障转移,它也仅支持多播,但通过Willy Tarreau(HAProxy的作者)可以通过修补程序添加单播支持。我已经在一对Linode VPS服务器上进行了亲自测试,并且在主服务器发生故障的情况下keepalived能够对共享的IP地址进行故障转移。

您可能要做的一件事可能是不太理想的,就是将作业写入许多Bean跟踪的服务器(也称为分区)。如果其中一个发生故障,请让您的应用检测到此情况并改为写入其他实例。您的工作人员将不得不智能地轮询每个被缠扰的实例,并能够忽略失效的实例。由于您正在进行二进制日志记录,因此备份实例与重新启动实例一样容易,并且应用程序/工作人员将检测到并继续照常运行(并在新启动的实例中开始处理作业)。我显然正在简化流程,但这是处理它的另一种方法。


1
Corosync支持单播,并且是基于Redhat的发行版中的默认集群工具。
特伦斯·约翰逊

谢谢,不了解Corosync。在将来的项目中会牢记这一点。
安德鲁(Andrew)2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.