2012-01-22 10 views
18

estoy tratando de crear un conjunto de réplicas con MongoDB, los nombres de host de servidores son:agregar miembros a conjunto de réplicas en MongoDB

nombre de host nombre de host-1 nombre de host-2

Cada uno de ellos tiene todo el relevante nombres de host detallados en su archivo/etc/hosts (Todos ejecutan Ubuntu 10.04 de 64 bits)

Cuando hago un rs.iniciato en un nodo todo parece comenzar bien. Ejecutando rs.status(); muestra:

{ 
    "set" : "vega", 
    "date" : ISODate("2012-01-22T19:15:55Z"), 
    "myState" : 1, 
    "members" : [ 
     { 
      "_id" : 0, 
      "name" : "hostname:27017", 
      "health" : 1, 
      "state" : 1, 
      "stateStr" : "PRIMARY", 
      "optime" : { 
       "t" : 1327254848000, 
       "i" : 1 
      }, 
      "optimeDate" : ISODate("2012-01-22T17:54:08Z"), 
      "self" : true 
     } 
    ], 
    "ok" : 1 
} 

El problema surge cuando intento agregar un nuevo miembro al conjunto de réplicas. Uso el comando rs.add (hostname-1); y me sale el siguiente error:

{ 
    "assertion" : "need most members up to reconfigure, not ok : vega-1:27017", 
    "assertionCode" : 13144, 
    "errmsg" : "db assertion failure", 
    "ok" : 0 
} 

He intentado numerosas combinaciones de utilizar el nombre de host, dirección IP, con y sin el número de puerto y siempre me sale el mismo problema. El nombre de host se está resolviendo, he intentado hacer ping al nombre de host-1 y funciona bien.

¿Alguien tiene alguna idea de lo que podría estar causando este problema?

Desafortunadamente en la documentación de Mongo no hay ejemplos de configuración de una réplica establecida en el escenario del mundo real, solo usando tres instancias en la misma máquina que es claramente inútil.

¡Gracias de antemano por cualquier ayuda!

+0

El primer lugar que buscaría es en el archivo 'mongodb.log' para cada servidor. Probablemente hay algunas buenas pistas sobre (a) si los servidores están hablando entre sí, y si es así (b) lo que el servidor primario considera objetable sobre el carpintero. – dampier

Respuesta

2

Unfortunately in the Mongo documentation there are no examples of setting up a replica set in the real world scenario, only using three instances on the same machine which is clearly useless.

De acuerdo, es bastante pobre. Ese ejemplo debería eliminarse por completo de los documentos.

Hay otra manera de iniciar un conjunto de réplicas y es mediante el uso del comando rs.configure(). También puede especificar los tres nodos a la vez y luego emitir el rs.inititiate().

See here para ver un ejemplo de cómo especificar todos los nodos antes de iniciar.

See here para obtener más información sobre los diversos comandos.

10

Ese error ocurre cuando agrega nodos que no están "arriba" (aún). Suena como sea "nombre de host-1" es inalcanzable (no en/etc/hosts, sin DNS) o es alcanzable, pero no se está ejecutando MongoDB con el parámetro de configuración establece replSet

14

Poner esta en su configuración:

bind_ip = 127.0.0.1 

Esa opción es actualmente incompatible con los conjuntos de réplica mongodb.

+3

o configúrelo en bind_ip = 0.0.0.0 –

3
 
{ 
    "errmsg" : "exception: need most members up to reconfigure, not ok : server2:27017", 
    "code" : 13144, 
    "ok" : 0 
} 

He encontrado el error anterior en Mongo 2.4.9. Mi error aquí es que no especifiqué replSet en la configuración mongo del nuevo miembro de la réplica. rs.add("server2:27017") funcionó bien después.

0

Es posible que deba comprobar que mongod se está ejecutando en el segundo nodo antes de agregar el segundo nodo a node1. Si ejecuta rs.add() y luego verifica rs.status().

Cuestiones relacionadas