2015-03-02 172 views
0

我們有一個恰好具有兩個數據中心的設置,每個數據中心都有一臺機器,我們希望將ZooKeeper節點部署到這兩臺機器,併爲它們進行集羣。我們無法將任何新機器添加到羣集。雙節點ZooKeeper集合

目前我們有兩個ZooKeeper節點A和B,一個在機器A和一個在B上。我們必須能夠容忍一臺機器的故障,另一個ZooKeeper實例必須保持可操作。

我從ZooKeeper文檔中瞭解到最少有三個節點 - 協調機制要求大多數節點保持活動狀態(在這種情況下爲兩個節點)。

我的問題是 - 是否有可能獲得高度可用的ZooKeeper部署只包含兩個節點?

回答

1

否。如果Zookeeper 2個節點不夠用。即使您的某個節點熄滅,剩下的節點也無法判斷它是否已關閉或僅分區。這會導致矛盾,分裂的大腦情況,因爲他們都會繼續爲他們的客戶提供服務。

我不確定Zookeeper是否會形成一個羣集,或者只是在獨立模式下運行。看看這個答案:Zookeeper running on two nodes

對於你的情況,只有2臺機器,你可以考慮在其中一臺機器上放置第二個Zookeeper實例並製作一個3節點的集羣。

這在容錯性方面不會有太大的幫助。這與僅在具有第二個實例的機器上運行獨立的ZK類似。它可能會加快讀取請求的速度,或者一旦成長爲3臺或更多臺機器,便於您遷移到適當的羣集設置。它還會增加您的操作複雜性和寫入速度。

您還可以查看可能對跨越多個數據中心的集羣有用的分層法定人數和觀察程序。