Un poco de información: usé Bitnami para activar un clúster Mongo de 3 nodos en Azure (1 árbitro), cada mongod alojado en máquinas virtuales separadas. He confirmado que existe el conjunto de réplicas y que cada nodo puede conectarse entre sí. He confirmado que cuando elimino mi nodo principal, el nodo secundario aumenta. Cuando el nodo principal regresa, vuelve a asumir la posición principal.
Mi problema es que no puedo conectarme a mi conjunto de réplicas de MongoDB usando MongoClient al especificar el conjunto de réplicas. obtendría este error:
pymongo.errors.ServerSelectionTimeoutError: ArbiterIP:27017: [WinError 10061] No se pudo establecer la conexión porque la máquina de destino la rechazó activamente,PrimaryIP:27017: [WinError 10061] No se pudo establecer la conexión porque la máquina de destino la rechazó activamente,SecondaryIP: 27017: agotado
Usando MongoClient, si lo hago:
connection = MongoClient('MyIP1:27017', w=2)
, se conecta bien. Cuando lo hago
connection = MongoClient('MyIP1:27017', w=2, replicaset="repsetname"), ahí es cuando me sale el error.
¿Estaría relacionado con el hecho de que el nodo árbitro no tiene información de usuario para la autenticación?
Pruébelo: si se conecta con el shell y hace db.isMaster(), ¿los nombres de host que ve en la configuración son los mismos que los nombres de host como "MyIP" que está pasando a PyMongo?
Parece que cuando pasa "replicaset=", PyMongo toma los nombres de host de la respuesta de isMaster y se conecta a ellos en lugar de MyIP, pero la forma en que está configurado su conjunto de réplicas, ese conjunto de nombres de host no está disponible.
Para obtener más información sobre por qué PyMongo actúa de esta manera: