【问题标题】:Can't connect to MongoDB server on Google Compute Engine from second VM instance无法从第二个 VM 实例连接到 Google Compute Engine 上的 MongoDB 服务器
【发布时间】:2016-05-20 12:58:29
【问题描述】:

我在两个 Ubuntu 16 虚拟机上安装了 MongoDb,这两个虚拟机都托管在 Google Cloud 计算引擎上的同一网络上。连接实例具有内部 IP 10.132.0.2,数据库实例具有 10.132.0.3。 (https://gyazo.com/59f9086591a1d6673e8194a50fff51e1)

我已经为我希望连接的实例打开了 tcp 27017。我使用 gcloud 控制台命令添加了这个。 (https://gyazo.com/0d158aa735c6967e278fac63d598721f) 我也尝试打开 tcp:1-65535;udp:1-65535 进行测试,但没有结果。

在任一实例上运行 mongo 将正确连接到它自己的 mongodb 服务,因此它们已安装、运行和工作。

在数据库实例上,netstat -a | grep :27017 显示它正在正确侦听。 (https://gyazo.com/0f4fb3c49a51f6886ff4ccb2d44a132a)

在数据库实例上,/etc/mongod.conf 的配置文件被编辑,因此bind_ip 也具有所述实例的内部 IP。 (https://gyazo.com/20fb669506e7e67ef49fdcf9af6df144) 出于测试目的,我也尝试了 0.0.0.0,但没有结果。

从连接实例运行mongo 10.132.0.3 会产生Failed to connect to 10.132.0.3:27017, reason: errno:111 Connection refused。 (https://gyazo.com/9e5aec732e3f09cbfa62a4d78df3620f)

在连接实例上运行 nmap -p 27017 10.132.0.3 显示端口 27017 已关闭。 (https://gyazo.com/7ccd905db5b9946d616176b9ab75479c)

我完全不知所措,请帮帮我? :

【问题讨论】:

    标签: mongodb ubuntu google-compute-engine


    【解决方案1】:

    您的 mongodb 服务器仅监听 localhost 地址 (127.0.0.1),而不是 INADDR_ANY(在 netstat 中显示为 *:27017)。

    Like this question,看来您需要在您的mongod.conf 中设置bind_ip = 0.0.0.0。

    【讨论】:

    【解决方案2】:

    感谢 E. Anderson 的链接,我设法解决了这个问题;突然把它变成了一个副本。但是,这个答案和链接中的答案都不是“正确的”。

    在mongod.conf 中设置bind_ip=0.0.0.0 的解决方案相当危险,而且它不起作用。但是,杀死 mongodb 服务,然后手动运行 mongod --bind_ip 10.132.0.3 实际上允许我的两个实例连接。

    这..意味着 javadude 在另一个线程中的回复说 "But I still dont get it. Why this did not work when I modified mongo.conf file to accept bind_ip 0.0.0.0"` 也适合我。我不明白,但是,手动给它一个 ip 肯定有用- 监听地址。

    【讨论】:

    • 你是如何杀死 mongodb 服务的?我遇到了类似的 ETA 问题,我用 sudo service mongod stop 完成了 - 谢谢这个修复它!
    猜你喜欢
    • 2020-03-31
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 2020-12-11
    • 2017-06-26
    • 2018-02-25
    • 1970-01-01
    相关资源
    最近更新 更多