Google Cloud VM上的Mongodb-Debian 9无法在VM外部IP地址上运行

时间:2019-06-19 21:25:34

标签: mongodb google-cloud-platform debian

我们正在尝试在Google Cloud的Debian 9 VM上运行MongoDB。我们的目标是允许开发人员远程访问MongoDB。

我们为vm 35.184.229.10分配了一个静态外部IP。

在VM的外壳中,此命令mongo -u admin -p password 127.0.0.1/admin WORKS

connecting to: mongodb://127.0.0.1:27017/admin?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("949b233e-3b2d-47ca-9e4c-d658cf25deb3") }
MongoDB server version: 4.0.10
>

但是如果我们使用外部IP地址,则会显示错误,如下所示:

mongo -u admin -p password 35.184.229.10/admin

错误消息

MongoDB shell version v4.0.10
connecting to: mongodb://35.184.229.10:27017/admin?gssapiServiceName=mongodb
2019-06-19T21:13:47.055+0000 E QUERY    [js] Error: couldn't connect to 
server 35.184.229.10:27017, connection attempt failed: SocketException: Error 
connecting to 35.184.229.10:27017 :: caused by :: Connection timed out
: connect@src/mongo/shell/mongo.js:344:17
@(connect):2:6
exception: connect failed

相关信息:

  1. /etc/mongod.conf文件包含以下内容:
net:
 port: 27017
 bindIp: 0.0.0.0 (we also tried with bindIpAll)

security:
 authorization: 'enabled'
  1. 运行 mongo 命令显示它正在127.0.0.1上运行
oot@instance-1:~# mongo
MongoDB shell version v4.0.10
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb

我们缺少什么?

1 个答案:

答案 0 :(得分:0)

经过多次试验,能够解决此问题。

  • 在首次运行mongod服务之前,请使用所需的bingIP更新/etc/mongo.conf文件。我们使用了bindIp: 0.0.0.0bindIpAll: true

不确定这是否是一个错误,但是会向MongoDB社区提出问题。

作为总结,介绍了在Debian上卸载和安装Mongo的步骤(参考:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/

  1. sudo service mongod stop
  2. sudo apt-get purge mongodb-org*
  3. sudo rm -r /var/log/mongodbsudo rm -r /var/lib/mongodb
  4. echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
  5. sudo apt-get update
  6. sudo apt-get install mongodb-org(我没有使用 -y 选项)
  7. 编辑conf文件 /etc/mongod.conf并添加bindIp: 0.0.0.0bindIpAll: true
  8. sudo service mongod enablesudo service mongod start
  9. sudo service mongod status检查Mongo是否正在运行。

现在访问mongo,创建一个测试用户。

您可以测试从其他系统对mongo的访问。示例命令可以像这样mongo -u admin -p password 35.184.229.10/admin