Mongodb
MongoDB 分片:mongos 和配置伺服器在一起?
我們想要創建一個 MongoDB 分片 (v. 2.4)。官方文件建議有 3 個配置伺服器。
但是,我們公司的政策不允許我們為此額外獲得 3 台伺服器。由於我們已經有 3 個應用程序伺服器(1 個 Web 節點,2 個程序節點),我們正在考慮將配置伺服器與 mongos 放在相同的應用程序伺服器中。可用性對我們來說並不重要。
你覺得這個配置怎麼樣?我們可以面對一些問題還是因為某種原因而氣餒?
不幸的是,術語“伺服器”在這種情況下被過度使用:它可能指配置伺服器守護程序或物理/虛擬伺服器。
對於執行 MongoDB 2.4 的生產分片集群,您肯定應該擁有三個配置伺服器程序(即
mongod --configsvr
)。對這些程序單獨託管沒有嚴格要求,因此您可以mongod
在現有伺服器環境中潛在地託管配置伺服器程序以節省託管成本。配置伺服器在儲存和 CPU/記憶體使用方面通常是相當輕量級的,因為分片集群的元數據明顯小於實際集群數據。如果您確實選擇託管配置伺服器,
mongos
它將是比承載數據的分片mongod
伺服器更好的鄰居。託管分片集群組件時的一些關鍵注意事項包括:
- 彈性:單個伺服器/實例故障現在可能導致多個組件不可用。
- 資源使用:多個組件將爭奪相同的資源(RAM、CPU、I/O,…)。
- 未來擴展:您應該為配置伺服器使用CNAME,以允許它們將來可能被移動到單獨的主機而無需停機。
您還會發現
mongos
--configdb
字元串中列出的第一個配置伺服器將接收比其他兩個配置伺服器更大百分比的網路流量。這可能會影響您是否將第一個配置伺服器與您的 Web 節點或處理節點放在一起;您可能想要選擇目前具有更多可用網路頻寬的那個。