哪个群集节点应该是活动的?

时间:2010-06-02 10:36:59

标签: algorithm networking synchronization cluster-analysis

有一些集群,还有一些unix网络守护进程。此守护程序在每个群集节点上启动,但只有一个可以处于活动状态。

当活动守护程序中断时(节点是否中断程序中断),其他节点应该变为活动状态。

我可以想到几种可能的算法,但我认为已经有一些已经完成的研究和一些现成的算法?我对吗?你能指点我的答案吗?

感谢。

1 个答案:

答案 0 :(得分:1)

Jgroups是一个Java网络堆栈,包括DistributedLockManager类型的支持和群集投票功能。这些允许任意数量的unix守护程序就谁应该活动达成一致。所有节点都可能尝试获取锁(例如),只有一个节点会成功,直到应用程序或节点发生故障。

Jgroups还具有特定通信渠道协调员的概念。一次只有一个节点可以是协调器,当节点发生故障时,另一个节点成为协调器。可以很容易地测试您是否是协调员,在这种情况下您将处于活动状态。

请参阅:http://www.jgroups.org/javadoc/org/jgroups/blocks/DistributedLockManager.html

如果您打算自己实现这一点,请记住一些事项:

  • 每个节点都需要具有一致的群集视图。
  • 所有节点都需要通知所有其他节点他们在线 - 可能是多播。
  • 需要从所有其他节点的“视图”中删除脱机的节点(由于ap或节点故障)。
  • 然后,您可以拥有IP最低的节点或某些活动节点。
  • 如果这不合适,那么您需要进行某种投票交换,以便节点可以同意谁是活跃的。类似于:http://en.wikipedia.org/wiki/Two-phase_commit_protocol