PyMongo MongoClient副本集无法连接

时间:2017-01-27 16:51:45

标签: mongodb pymongo bitnami mongodb-replica-set

一些背景知识:我使用Bitnami在Azure上启动一个3节点Mongo集群(1个仲裁器),每个mongod托管在不同的VM上。我已确认副本集存在,并且每个节点都能够相互连接。我确认当我取下主节点时,辅助节点会升级。当主节点返回时,它再次采用主要位置。

我的问题是,在指定replicaset时,我无法使用MongoClient连接到我的MongoDB副本集。我会得到这个错误:

  

pymongo.errors.ServerSelectionTimeoutError:ArbiterIP:27017:[WinError   10061]无法建立连接,因为目标机器是主动的   拒绝它,PrimaryIP:27017:[WinError 10061]没有连接可以   因为目标机器主动拒绝它,辅助IP:27017:   超时

使用MongoClient,如果我这样做:

connection = MongoClient('MyIP1:27017', w=2)

,它连接得很好。当我做的时候

connection = MongoClient('MyIP1:27017', w=2, replicaset="repsetname")

,当我收到错误时。

是否与仲裁节点没有用于身份验证的用户信息有关?

1 个答案:

答案 0 :(得分:0)

对它进行一次尝试:如果你连接shell并执行db.isMaster(),你在配置中看到的主机名是否与主机名相同,如" MyIP"你正在传递给PyMongo吗?

听起来好像当你传递" replicaset ="时,PyMongo从isMaster响应中获取主机名并连接到那些主机名而不是MyIP,但是配置副本集的方式是,主机名集是不是#39; t。

有关PyMongo以这种方式行事的更多信息:

https://github.com/mongodb/specifications/blob/master/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#clients-use-the-hostnames-listed-in-the-replica-set-config-not-the-seed-list