我使用点击部署功能在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
如果有人可以帮助我,我会非常感激。
由于
答案 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/