MongoDB 副本集健康检查 - 主机无法访问

标签 mongodb replicaset database

我在设置我的 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/

相关文章:

database - 使用 `BEFORE INSERT` 触发器更改传入数据的数据类型以匹配 PostgreSQL 中的列数据类型

python - Mongodb DeprecationWarning : count is deprecated. 使用 Collection.count_documents 代替

python - 如何拆分句子,只让 ascii 字符

mongodb - 为 SSl 配置 MongoDB 副本集与副本集之间的安全通信

mongodb - 如何在不使用本地主机的情况下启动副本集?

json - 如何读取 json 文件并将条目保存到 mongodb

python - 如何解决 PyMongo 在查询中首先放置 MongoDB 分数并导致错误的问题

Java从数据库错误将数据设置到JTable

database - 我如何查看 cakephp 数据库保存错误?