2010-06-02 77 views
1

有一些羣集,並且有一些unix網絡守護進程。該守護進程在每個羣集節點上啓動,但只有一個可以處於活動狀態。什麼羣集節點應該是活動的?

當活動守護程序中斷(節點中斷程序中斷)時,其他節點應該變爲活動狀態。

我可以想到幾種可能的算法,但我認爲有一些已經對此和一些準備好的算法進行了研究?我對嗎?你能指出我的答案嗎?

謝謝。

回答

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
相關問題