2017-05-17 54 views
0

我知道MongoDB的建議複製集合最小值爲3MongoDB的兩個節點部署

我可以使用兩臺服務器與4複製集MongoDB的安裝,以防止寫故障當一個節點下來?

我的想法是每個服務器假貨上安裝兩個實例/擺脫它:

  • MongoDB的1

    • Replcation設置1(主)
    • Replcation設置2 (Secondary)
  • Mongodb 2

    • Replcation組3(次要)
    • Replcation組4(仲裁器)

如果一臺服務器下來,它仍然有兩個複製集它。

任何人都可以評論我的想法嗎? 我想知道是否有任何問題需要考慮? 謝謝!

回答

1

這是一個壞主意。您的建議配置會產生適得其反的原因主要有兩個:

  1. 運行two instances of MongoDB on the same hosts將導致他們既緩慢,笨拙地運行,內存,CPU,磁盤競爭I/O等
  2. 如果一個主機發生故障,另兩個節點將能夠繼續複製,因爲與運行了四個只有兩個節點設置,你沒有majority necessary to become primary

MongoDB是intended to be run effectively on multiple hosts,所以它是專爲此而設計的;即使你能找到一種方法,鞋拔一個正常運作的副本集到兩臺主機,你會被工作對MongoDB的設計和掙扎,使其有效地開展工作。

真的,你最好的選擇是運行在每個兩臺主機的單一的mongod實例,並運行第三(獨立)主機上的仲裁者;這種normal 3-host configuration是實現數據複製和高可用性的有效且直接的方式。

+0

1)性能不是它的問題。 2)我想在每邊添加6個節點和3個節點 –

+0

好的,我從URL中看到你的觀點https://docs.mongodb.com/manual/core/replica-set-architectures/ 甚至如果我是如何嘗試生產節點的數量是兩個服務器,容錯數不能成員的一半人數。 (這意味着如果我關閉服務器之一,它沒有足夠的多數選出新的主)。謝謝 –

0

請仔細閱讀https://docs.mongodb.com/manual/replication/

不推薦偶數在一組成員。添加仲裁者的唯一理由是解決此問題並將成員數量增加1以使其成爲奇數。根本不需要添加2個Arbiters。

類似地,將仲裁者與任何其他成員放到同一臺服務器上是沒有意義的。它非常輕便,因此您可以將它與應用程序服務器共同定位。

有2臺數據庫服務器的最佳副本集的配置將是:

  • MongoDB的1

  • MongoDB的2

    • 塞康D進制
  • 任何其他服務器

    • 仲裁者
+0

我不打算在其添加2個仲裁者。只有一個仲裁器 –

+0

我想部署兩個節點只有MongoDB的故障轉移支持。這個想法出現,似乎解決這個問題(單MongoDB實例將變爲只讀) –

+0

我必須讓這個問題錯了,但我讀了它,你要創建一個副本有4名成員,其中之一是一個仲裁者共同設置 - 位於第二位,這是錯誤的。成員總數應爲奇數。 –

0

簡單的答案是,不,你不能做到這一點..

理由是「大多數」。如果你鬆動了這兩個服務器中的一個,你沒有在線投票。

這就是原因,爲什麼3最小。它可以是3個數據承載節點或2個數據承載節點和一個仲裁器。所有這些都有一票,如果你放棄其中一個,複製集仍然有2/3票是多數。喜歡3/5或4/7。

值1/2(或2/4)是不佔多數。