【问题标题】:Get site A to connect to site B's mongo database让站点 A 连接到站点 B 的 mongo 数据库
【发布时间】: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


【解决方案1】:

用方括号括起来终于可以用了

bindIp: [127.0.0.1,777.777.777.77]

【讨论】:

    猜你喜欢
    • 2018-09-04
    • 1970-01-01
    • 2016-01-06
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 2019-08-14
    相关资源
    最近更新 更多