在Google Cloud上访问MongoDB实例

时间:2016-06-03 18:54:38

标签: mongodb google-cloud-platform

我使用点击部署功能在Google云上设置了MongoDB实例。我一直在尝试使用命令行从另一个Ubuntu GCP实例连接到服务器。但是,我似乎无法做到。

我添加了防火墙规则以允许我的MongoDB实例侦听端口27017.我使用了指令

 gcloud compute firewall-rules create default-allow-mongo \
     --allow tcp:27017 \
     --source-ranges 0.0.0.0/0 \
     --target-tags mongodb \
     --description "Allow mongodb access to all IPs"

Google Cloud Mongo DB external ip not connecting中的说明,我使用

 netstat -an | grep -i listen | grep tcp 
检查

我得到了结果


tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN 

我还更改了MongoDB实例上的mongod.conf文件。我已将GCP实例的内部IP添加到bindIP。

这是我用来连接MongoDB客户端的代码:

client =  MongoClient('mongodb://username:password@X.X.X.X:27017')
# X.X.X.X = external IP of mongoDB instance

mydb = client['test2']  
posts = mydb.posts
data = {}
data['id'] = 1
posts.insert(data)

我一直收到这个错误:

pymongo.errors.ServerSelectionTimeoutError: X.X.X.X:27017: timed out 

如果有人可以帮助我,我会非常感激。

由于

1 个答案:

答案 0 :(得分:3)

问题已经解决。

我做了三件事:

(1)使用以下命令将MongoDB实例标记添加到GCP实例标记:

    gcloud compute instances add-tags example-instance --tags tag-1,tag-2

(2)我为MongoDB实例分配了很少的空间。我将它从10 GB增加到100 GB。

(3)在mongo.conf文件中,更改bindIP并包含MongoDB实例的内部IP,而不是您尝试访问的GCP实例的内部IP。

这是一个很好的参考:http://www.mkyong.com/mongodb/mongodb-allow-remote-access/