一些背景知识:我使用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")
,当我收到错误时。
是否与仲裁节点没有用于身份验证的用户信息有关?
答案 0 :(得分:0)
对它进行一次尝试:如果你连接shell并执行db.isMaster(),你在配置中看到的主机名是否与主机名相同,如" MyIP"你正在传递给PyMongo吗?
听起来好像当你传递" replicaset ="时,PyMongo从isMaster响应中获取主机名并连接到那些主机名而不是MyIP,但是配置副本集的方式是,主机名集是不是#39; t。
有关PyMongo以这种方式行事的更多信息: