2016-10-15 54 views
1

我一直在設置我的Mongo v3.2副本集/集羣時遇到困難。我將mongod的日誌與來自A)的內嵌評論包括在一起,節點I初始化了來自另一個節點(其餘節點具有相同問題)的複製集。簡而言之,問題在於從所有其他節點到節點I的心跳最初都會由於HostUnreachable而設置複製集保持失敗,但我不確定如何進一步調試,因爲mongo <initial node>可以在所有其他節點中正常工作所以我不認爲這是一個網絡訪問問題。谷歌搜索後,我認爲這是由於我在我的Mongo配置文件(或缺乏)的bindIp設置,但列出所有節點IP似乎沒有辦法。MongoDB副本集Healtcheck - 主機不可達

見MongoDB的配置文件&日誌這裏 -

https://gist.github.com/tejasmanohar/f0e705fb0d9e96f68e05e1ab20c478be

爲什麼會這樣健康檢查是失敗的和/或我如何進一步調試或者也許除了重現失敗連接mongod以外(我可以ping並通過mongo連接到每個主機的所有同行)?謝謝!

更新: options: { config: "/etc/mongod.conf", net: { bindIp: true }, replication: { replSet: "rs0" } } 我注意到mongod日誌顯示bindIp: true,而不是我的蒙戈配置文件設置列表。這有問題嗎?我嘗試提供逗號分隔的字符串而不是數組,因爲字段的類型是unclear in docs,但結果相同。

回答

1

看來你是在bindIp上設置其他機器的IPS,但是你應該使用其他機器可以訪問的機器的IP。

例如,您mongo-initial.q機器上,你bindIp應該是這樣的:

"bindIp": "127.0.0.1,10.0.11.2" 

更多信息here

不知道它是否能解決所有問題,但這只是一個開始。

+0

啊,這是正確的......但仍然沒有運氣:(我看到''在啓動時沒有找到本地副本集配置文檔; NoMatchingDocument:沒有找到副本集配置文件在local.system.replset「'at在所有的節點上啓動,這是有問題的嗎?bindIp選項在'mongod'日誌中記錄爲'true',而不是數組(參見原文的要點)。我感覺好像我錯在那裏配置了一些東西, t指甲什麼的。 –

+0

這就是它......必須是逗號分隔的字符串,而不是列表 –

+0

哇我沒有看到,我會更新我的答案以反映它 – andresk

1

因此,該解決方案對我來說還沒有100%的意義,但我必須將bindIps設置更改爲以逗號分隔的字符串而不是數組。數組似乎在YAML中工作,但不是JSON。仍然不明白爲什麼它之前登出了布爾。 @andresk指出我的解決方案有其他錯誤 - 我的bindIp設置有我的對等IP,但沒有自己的主機。