2016-07-08 43 views
0

我需要使用兩個分片來設置MongoDB羣集。每個分片包含3個副本成員:主要,次要和仲裁者。我已經爲mongos打開防火牆規則來與主節點和次節點通話,但不是仲裁者。我嘗試連接到mongos,做sh.addShard()並看到它工作正常。MongoDB是否與仲裁者進行交互

我的問題是,我們是否真的需要允許mongos與仲裁者進行交互? 從this link我們知道mongos不會與隱藏的成員交談,但沒有提及仲裁者。

+0

我的理解是仲裁者沒有數據集,所以你不會讀/寫他們,但我認爲他們確實有心跳,並且當主服務器出現故障時他們肯定需要進行輪詢,以便你可以舉行選舉並選舉你的次要成員作爲新的主要成員。所以你需要允許訪問它。 – Tiramisu

+0

謝謝@Tiramisu。但是mongos是否真的需要ping仲裁者,因爲mongos與選舉過程無關? – anhlc

+1

按需要轉動它 - 分片羣集中的每個非隱藏_node_必須能夠到達任何其他節點。所有節點都需要查看配置服務器,原因很明顯。所有分片節點都需要查看所有其他分片節點以進行平衡。 mongos需要查看所有節點才能提供透明的故障轉移。沒有理由阻止mongos與仲裁者進行交流。這個通用規則的唯一豁免是配置服務器iirc - 它們只需要能夠解析所有其他節點。 –

回答

0

mongos需要看到的所有節點,包括仲裁者,以便提供透明的故障轉移。

在正常情況下,當所有3個副本節點(主,仲裁和仲裁器)都啓動時,mongos不需要看仲裁器。但是當只有一個主仲裁器和一個仲裁器時,mongos需要檢查仲裁器以確保選舉過程中沒有網絡分區錯誤。