我想擁有mongod複製跨多個站點的冗餘。MongoDB複製故障轉移
我想部署以下的:部署5個的mongod實例(必須是奇數,或者需要一個仲裁人),現場有3站點A和2 B.
如果站點B下降,這是一切都很好,我們仍然有3在網站A上運行。但是如果網站A出現故障,那麼我們只會運行2個Mongods。這個可以嗎?哪一個將成爲主人?他們可以自己管理它,直到我手動啓動第三個嗎?
第二個問題,在網站重新連接之後,mongo如何處理?
我想擁有mongod複製跨多個站點的冗餘。MongoDB複製故障轉移
我想部署以下的:部署5個的mongod實例(必須是奇數,或者需要一個仲裁人),現場有3站點A和2 B.
如果站點B下降,這是一切都很好,我們仍然有3在網站A上運行。但是如果網站A出現故障,那麼我們只會運行2個Mongods。這個可以嗎?哪一個將成爲主人?他們可以自己管理它,直到我手動啓動第三個嗎?
第二個問題,在網站重新連接之後,mongo如何處理?
只有當超過50%的節點可用時,mongo副本集纔可用。
在你的情況下,如果站點A失敗那麼你的副本集將下線
另一種可能是然後在外部位置運行在一個和2 B. 2個副本節點或者運行延遲仲裁員或複製品。
延遲副本將提供數據的進一步備份,但我會確保您將其優先級設置爲0,這將確保雖然它是投票成員,但不會升級到主數據庫。
擁有第三個網站可能不可行,但它是最安全的方法。
併發症顯然附帶確保您安全站點A之間的通信 - >站點C,站點B - >網站C.
如果你是真正限制至2個,那麼唯一真正的辦法確保副本集保持健康將監視健康並具有一定自動縮放功能的節點數量,以確保始終有足夠的節點在主節點上進行投票。不過,我認爲在這個解決方案中,當一個新的服務器啓動並添加到副本集時,仍然會有一些停機時間。
要清楚。副本集不會「脫機」,它將無法選擇主要,因此無法寫入。您仍然可以從讀取首選項secondary/secondaryPreferred或設置rs.slaveOk()讀取此集合 – daveh
答案在這裏有很多描述:http://docs.mongodb.org/manual/core/replica-set-architecture-geographically-distributed/ –