【发布时间】:2016-07-31 17:00:21
【问题描述】:
我有两个网站。 我可以通过 localhost 将每个站点连接到它们自己的数据库,但是如果没有收到著名的“ECONNREFUSED”消息,我无法让站点 A 连接到站点 B 的数据库。
docs 说编辑 mongod.conf bind_ip 和“要绑定到多个 IP 地址,请输入逗号分隔值列表。”或者您可以将其注释掉以允许所有 ips...
然后service mongod restart
我已经尝试了逗号分隔的列表,并且我已经测试了将其注释掉,但网站相互拒绝
假设站点 A 的 ip 是 777.777.777.77,站点 B 的 ip 是 88.888.88.88
站点 B 的 mongo.conf:
port: 27017
bindIp: 127.0.0.1,777.777.777.77
和/或这样...
port: 27017
#bindIp: 127.0.0.1
站点 A 尝试通过以下方式连接到站点 B:
'mongodb://88.888.88.88:27017/db'
附加信息:
我已经测试了将两个站点连接在一起的 websocket 运行良好,所以我对 mongo 说不感到困惑。
我还在使用带有本机 mongo 模块的 node.js。
我还没有授权或用户
在站点 B 的防火墙 IPv4 端口设置中启用端口 27017 TCP_IN 和 TCP_OUT,但站点 A 仍然被拒绝。
我查看了/var/log/mongodb/mongod.log 并看到:
2016-04-10T16:09:16.250-0400 E NETWORK [initandlisten] listen(): bind() failed errno:99 Cannot assign requested address for socket: 777.777.777.77:27017
这使得这个问题看起来与此相关:MongoDB bind_ip error: bind() failed errno:99 Cannot assign requested address for socket
所以我尝试将 bind_ip 切换为
127.0.0.1,0.0.0.0
但它仍然拒绝
http://www.mkyong.com/mongodb/mongodb-allow-remote-access/
^上面的文章说
常见错误 不要将应用服务器 IP 放在 bind_ip 选项中。这个 bind_ip 选项告诉 MongoDB 接受来自哪个本地网络接口的连接,而不是哪个“远程 IP 地址”。
所以我尝试将 bind_ip 切换到
127.0.0.1,88.888.88.88
但它仍然拒绝(我很确定这种方式是正确的,这可能意味着我的防火墙有问题!?我不是工程师,所以我明天会让工程师看看,希望能解决问题并发布结果作为答案)
【问题讨论】:
-
我不确定您的网络拓扑是什么,但如果网站位于不同的网络上,您可能会遇到以下问题:1) 防火墙 - 防火墙不允许任何人在 27017 端口上进行连接在内网之外。 2)如果防火墙没有为您阻止端口 27017,您可能需要知道“另一个”网站正在使用的公共 IP 地址是什么。所以你可以将它复制到 bindip 属性列表中。
-
我认为一台服务器在法国……另一台我不确定
-
刚刚在站点 B 的防火墙 IPv4 端口设置中启用了端口 27017 TCP_IN 和 TCP_OUT,但站点 A 仍然被拒绝
-
如果 site_b 是一台 linux 机器,你需要配置它的防火墙设置,如果它在另一个外部防火墙下 - 那东西需要通过 NAT 将端口 27017 传递到内部 mongo 服务器。您可以查看在线工具来检查基于 IP 地址的开放端口。
标签: mongodb