2014-10-03 67 views
0

有人能幫助驗證我們的設置MongoDB的分片,仲裁者和羣集設置,

建立一個4節點的MongoDB集羣 1初級(寫),3個次級(讀),如果主停機,3個次級可以打破領帶和選擇一個輔助初級

  1. 此設置是否有效?
  2. 是這種情況下需要的仲裁器嗎?

一旦我在開始時以這種方式設置它,然後隨着負載增加,我需要做的就是不斷添加節點成對地集羣。 (成對添加節點將幫助我們跟上性能並降低羣集更改的頻率,同時我們更重讀比寫入,在某些時候我們將不得不考慮擴展寫入)

幫助非常非常感激。

謝謝。

+0

我已經在下面回答了,並且投票決定將它遷移到DBA Stack Exchange站點(http://dba.stackexchange.com/)。 StackOverflow是用於編程相關問題而不是數據庫管理問題,所以你應該在將來問這種類型的問題。對於這個問題,你可以遷移它,或者一旦有足夠的投票來移動它,它就會自動移動。 – 2014-10-03 13:03:38

+0

我想找到如何將其移動到dba。 – restack 2014-10-03 14:53:25

+0

無法弄清楚如何遷移到DBA.Stack – restack 2014-10-03 15:52:51

回答

0

是的,需要一個仲裁器,否則如果2個節點關閉或者不可用,則不會有主節點--MongoDB需要絕大多數(> 50%)的選票才能選出主節點,並且在您的情況下大多數人數是4人中的3人(4人中的2人不超過50%)。如果添加一個仲裁器,那麼這個數字仍然是3,但是您將可以擁有一個主數據承載節點下降兩個。

至於爲什麼,請考慮以下可能性:

2節點與其他2孤立 - 他們仍然上漲,功能性,但不能互相交談。現在在這個「分裂」的兩邊有兩張選票,並且沒有辦法打破平局 - 每一方對於小學投票方面都是一樣的,如果沒有嚴格的多數規則,你最終會得到兩個初選,而且沒有辦法一旦分割解決,就可以解決寫入問題。添加仲裁者到任何一方的分裂,你沒有這樣的歧義。

這種類型的場景有很多排列,當票數甚至是我不會在這裏進入。可以這麼說,運行副本集時的最佳做法是始終擁有奇數票,從而避免出現這些情況。

+0

看來MongoDB總是需要一個仲裁者(至少作爲最佳實踐)欣賞你的迴應。 – restack 2014-10-03 13:07:22

+1

如果您有奇數個數據承載節點(3,5,7等),則不這樣做。如果您有偶數個數據承載節點才能斷開連接,則這是必需的。那麼,你也可以操縱選票,但以上是一般情況 – 2014-10-03 13:09:59