2013-07-02 61 views
0

我有幾個問題,我不能真正回答自己。MongoDB與分片和副本集,我感到困惑

我瞭解到目前爲止:

複製: 我可以複製數據,以便在故障轉移,我的數據可以由另一個實例訪問。至今清除。

分片: 我可以將我的數據分成碎片,如果我的數據集變得太大,它可以在其他機器上添加更多的數據。

在mongodb中,我需要3個配置服務器,至少有一個主服務器(mongos,我需要3個以避免受故障切換影響)以及至少一個包含數據的數據服務器(mongod,可以3個以避免故障切換)。

我的問題:

  • 用什麼樣的硬件,我應該用在dataservers開始? (datadir的GB的大小,以什麼開始?)
  • 在額外的實例上運行數據實例上的configservers是否好?
  • 我在哪裏開始mongos?我可以在3個實例之一(配置和/或數據服務器)上做到這一點,但它是否好?
  • 我怎麼知道數據服務器需要足夠早的時間使用新的實例? (在它已滿之前?)
  • 我需要多少個複製品? (或依靠什麼呢?)
  • 我有3個完全不同的服務器運行一個zookeeper,我可以運行我的配置服務器上,以及表現很好或是一個不去?

回答

1

我應該在dataservers上開始什麼樣的硬件?

如果不知道你的工作集,這是不可能回答的。 MongoDB需要的RAM數量是工作集的大小。

在額外的實例上運行數據實例上的configservers是否好?

我個人認爲,出於故障轉移的原因,你不希望你的配置服務器隨着一些隨機副本碎片而關閉。

我在哪裏開始mongos?我可以在3個實例之一(配置和/或數據服務器)上做到這一點,但它是否好?

的mongos無非是用於查詢路由器更多,這是一個好主意,通常一巴掌這些到你的應用程序服務器,以便您的應用程序會談到一個(或一些)局部mongos然後路由到您的網絡。有一點需要注意的是,如果通過它們發送大量聚合查詢,這些可能會佔用一些CPU /內存使用量。

我怎麼知道dataserver需要一個新的實例足夠早?

這取決於你的服務器在哪裏。我的意思是,如果它位於AWS上,您可以設置警報,當羣集中的可用磁盤空間總量達到臨界點時,可以自動觸發內聯和設置新分片。但是,這一切都取決於你的服務器在哪裏,以及他們與誰在一起,你將需要更多的自己去研究。

我需要多少個複製品?

每個碎片一個。基本上每個碎片應該是一個副本集。

我有3個完全不同的服務器一個zookeeper運行,我可以運行我的配置服務器上,以及性能是好的還是一個不走?

我還沒有使用足夠的Zookeeper能夠回答這個問題。

+0

謝謝,至少我有一個小概述... – andre