当我尝试连接到AWS中的mongo副本集时,我收到此错误:
slavenode:27017:[Errno -2]姓名或服务没有 已知,ip-XXX-XX-XX-XX:27017:[Errno -2]名称或服务未知
(其中XXX-XX ..对应于我的实际IP地址)
连接代码如下所示:
client = MongoClient("mongodb://Master-PublicIP:27017,Slave-PublicIP:27017/myFirstDB?replicaSet=rs0")
db = client.myFirstDB
try:
db.command("serverStatus")
except Exception as e:
print(e)
else:
print("You are connected!")
client.close()
(在Master-PublicIP和Slave-PublicIP中,我有来自AWS控制台的实际IPv4公共IP)
我已经有一个副本集,配置是:
RS0:PRIMARY> rs.conf()
{
"_id" : "rs0",
"version" : 2,
"members" : [
{
"_id" : 0,
"host" : "ip-XXX-XX-XX-XXX:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : 0,
"votes" : 1
},
{
"_id" : 1,
"host" : "SlaveNode:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : 0,
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatTimeoutSecs" : 10,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
}
}
}
我在PRIMARY中创建了/ data / db,在SECONDARY中创建了/ data / db1,我已经使用sudo chmod -R 755 /data/db
我的MongoDB版本是3.0.15。有谁知道出了什么问题?
提前致谢。
答案 0 :(得分:0)
您是否尝试从myFirstDB
MongoClient()
MongoClient("mongodb://Master-PublicIP:27017,Slave-PublicIP:27017/?replicaSet=rs0")
因为您的下一行然后指定您要使用的数据库
db = client.myFirstDB
或者我认为您可以通过在dot
MongoClient()
来指定数据库
MongoClient("mongodb://Master-PublicIP:27017,Slave-PublicIP:27017/?replicaSet=rs0").myFirstDB
答案 1 :(得分:0)
我设法解决问题。正如@ N3i1在commnets中建议的那样,我使用公共DNS(IPv4)。我在/ etc / hosts中声明了主机的问题。
在这个文件中,我用一些名字定义了主/从的ips。出于某种原因,这没有用。我删除它们然后重新配置副本集配置。
在mongo shell的PRIMARY中,我做了:
cfg = {"_id" : "rs0", "members" : [{"_id" : 0,"host" : "Public DNS (IPv4):27017"},{"_id" : 1,"host" : "Public DNS (IPv4):27017"}]}
rs.reconfig(cfg,{force: true});
然后我用python连接副本集:
MongoClient("mongodb://Public DNS (IPv4):27017,Public DNS (IPv4):27017/?replicaSet=rs0")
当然,与您的地址一起更改公共DNS(IPv4)地址。