我在设置我的 Mongo v3.2 副本集/集群时遇到了问题。我包括了mongod
s 日志中包含来自 A) 我初始化副本集的节点和 B) 另一个节点的内联注释(其他节点也有同样的问题)。简而言之,问题是从所有其他节点到我最初设置副本集的节点的心跳由于 HostUnreachable 而不断失败,但我不确定如何进一步调试,因为 mongo <initial node>
在所有其他节点上工作正常,所以我认为这不是网络访问问题。经过一些谷歌搜索后,我认为这是由于我在 Mongo 配置文件中的 bindIp 设置(或缺少)所致,但列出所有节点 IP 似乎并不能解决问题。
在此处查看 mongodb 配置文件和日志-
https://gist.github.com/tejasmanohar/f0e705fb0d9e96f68e05e1ab20c478be
为什么此健康检查会失败和/或我如何进一步调试或可能在 mongod
之外重现失败的连接(我可以 ping
并通过 mongo
连接到每个主机的所有对等点)?谢谢!
更新:
options: { config: "/etc/mongod.conf", net: { bindIp: true }, replication: { replSet: "rs0" } }
我注意到 mongod
日志显示 bindIp: true
而不是在我的 Mongo 配置文件中设置的列表。这有问题吗?我尝试提供一个逗号分隔的字符串而不是一个数组,因为该字段的类型有点 unclear in docs但结果相同。
最佳答案
因此,该解决方案对我来说还不是 100% 有意义,但我必须将 bindIps
设置更改为逗号分隔的字符串而不是数组。数组似乎在 YAML 中有效,但在 JSON 中无效。仍然不明白为什么它之前作为 bool 注销。 @andresk 指出我的解决方案还有其他问题——我的 bindIp
设置有我的对等 IP 但没有自己的主机。
关于MongoDB 副本集健康检查 - 主机无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40062198/