MongoDB Production Amazon - 每個副本集 3 個數據節點,或 2 個數據節點加上一個共享仲裁器
我有一個 mongodb (3.4) 的 Amazon EC2 部署。事情進展順利,但數據庫大小正在迅速增長。我即將對一個大型集合進行分片以開始水平擴展(所需的總空間為 2TB)。
所以要麼(忽略配置伺服器等):
1.每個shard是一個副本集,有3個數據節點
total cost = $1,130 / mo
6x m4.large ( $ 85 ea) + 4x 1TB SSDs ( $ 116 ea)+ 2x 1TB 磁性(節省一些 $$)($78 ea)
2. 每個分片是一個具有 2 個數據節點的副本集,每個節點也使用一個共享仲裁器
total cost = $809 / mo
4x m4.大( $ 85 ea) + 4x 1TB SSDs ( $ 116 ea) + 1x arbiter (最便宜的機器是 5 美元)
差價為 321 美元/月
我覺得選項 2 在 Amazon 的託管環境中,僅使用 SSD,應該非常耐用。據我所知,選項 2 的唯一問題是,如果主節點死亡並且我故障轉移到輔助節點,則在此期間沒有備份。但我實際上無法評估這種情況的嚴重性。
是否可以通過將旋轉磁碟附加到每個數據節點來緩解選項 2,這將充當備份卷?
如果有人可以從經驗中提供一些建議,那將非常有幫助,但任何建議都將受到讚賞。
謝謝,
方案2理論上沒有問題;然而,更有限的冗餘可能是一個問題。
- 關於仲裁員:
是的,您可以在一台輕量級機器上執行多個仲裁程序。仲裁器是一個非常輕量級的程序,除了投票之外幾乎沒有什麼作用,因此您可以在一個盒子上執行多個仲裁器。每一個都必須是一個單獨的 mongod 程序。
- 關於冗餘:
如果您有一個 2 個數據節點的副本集,並且其中一個數據節點發生故障,那麼另一個數據節點可以充當主節點(通過仲裁者的投票),因此您在那裡具有彈性,但您不再具有冗餘。
這是否是一個嚴重的問題取決於您的操作,您可以多快修復或更換故障節點。這取決於您的監控能力、運營人員的能力和可用性等;這是您需要評估的決定。
使用選項 1,為什麼要在副本集中有四個節點?三個就夠了。對於四個節點,您應該將仲裁器作為第五個,因為投票計數必須是奇數。有了這三個節點,每個節點都應該位於不同的數據中心,因此您擁有 DR 和 HA。
至少要有 DR 和 HA、兩個數據節點和一個仲裁器,都在不同的數據中心。