university tutorial example descargar caracteristicas mongodb

tutorial - MongoDB ¿Cómo saber la IP del servidor del DB primario en un conjunto de réplicas?



mongodb university (4)

Estoy ejecutando el conjunto de réplicas mongodb en 3 nodos, sus ip son 192.168.1.100, 192.168.1.101.192.168.1.102

ahora en el conjunto de réplicas actual 192.168.1.100 es primario y 192.168.1.101 y 192.168.1.102 son secundarios, mi aplicación se conecta con 192.168.1.100 para operaciones de escritura. Ahora, después de 2 días, 192.168.1.100 está abajo y mongodb selecciona 192.168.1.101 como principal. cómo mi aplicación sabe 192.168.1.101 es primaria.

Este es cualquier concepto de IP flotante en mongodb, de modo que no se necesita trabajo manual cuando el servidor primario cambia en un conjunto de réplicas.


Aparentemente, debería poder usar su "controlador" (la herramienta mongo cli o su enlace de idioma preferido, ex node-mongo) para conectarse a CUALQUIER miembro de un conjunto de réplicas. Una vez conectado, solo pregunte el servicio mongod actual para los otros miembros del conjunto:

> db.runCommand("ismaster") { "ismaster" : false, "secondary" : true, "hosts" : [ "ny1.acme.com", "ny2.acme.com", "sf1.acme.com" ], "passives" : [ "ny3.acme.com", "sf3.acme.com" ], "arbiters" : [ "sf2.acme.com", ] "primary" : "ny2.acme.com", "ok" : true }

Para mi uso, es importante NO conectarse al primario. Al igual que el OP, quiero minimizar el número de conexiones necesarias para encontrar un miembro secundario. Este método debería funcionar para usted, pero la documentación aquí puede ser un poco anticuada.

http://docs.mongodb.org/meta-driver/latest/legacy/connect-driver-to-replica-set/


Cuando su cliente se conecta a cualquier miembro dado en el conjunto de réplicas ("semilla"), consultará el conjunto de réplicas para los otros miembros en el conjunto. Así que si te conectas a .100, consultará el conjunto y encontrará que .101 y .102 también son miembros válidos del conjunto.

Si el controlador pierde su conexión con .100, pasará por las otras semillas que ha descubierto e intentará encontrar una conexión. Una vez que lo haga, consultará el conjunto de réplicas, averiguará quién es el maestro actual y se conectará a él. Todo esto sucede de manera transparente.

Puede probar esto iniciando sesión en el maestro y ejecutando lo siguiente:

rs.stepDown(60)

Esto hará que esa máquina renuncie como maestro (y hará que se elija un nuevo maestro). No será elegible para la reelección durante 60 segundos. Puede usar esto para probar el comportamiento de su aplicación en circunstancias donde se cambia el nodo primario.

Cuando está configurando una conexión de conjunto de réplicas, generalmente especificará múltiples hosts para conectarse. Todos estos sirven como semillas para que el controlador los utilice para asignar el conjunto de réplicas, de modo que no tenga un solo punto de falla en caso de que reinicie su aplicación mientras el único host que ha configurado está inactivo. Sin embargo, los detalles de esto dependerán de qué controlador esté utilizando; verifique la documentación de su controlador.


Para averiguar cuál es la IP del servidor primario actual desde la línea de comandos, ejecute:

rs.status().members.find(r=>r.state===1).name

Dependiendo de la pila y el controlador de su aplicación, es posible que deba especificar todos los hosts en la réplica para que ésta seleccione automáticamente el principal para las escrituras.


rs.isMaster().primary

Si estás en una línea, entra en cualquiera de las instancias de Mongo y ejecuta ese pícaro