Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
El nodo principal o primario: acepta todas las operaciones de escritura de los clientes.
Conjunto de réplicas puede tener sólo una primaria. Debido a que sólo un miembro
puede aceptar operaciones de escritura, conjuntos de réplicas proporcionan
consistencia estricta para lectura de datos desde la primaria.
Los secundarios se replican de la primaria y aplican las operaciones a sus conjuntos de
datos. Conjuntos de datos secundarios reflejan el conjunto de datos primaria. Si el primario
no está disponible, en el conjunto de réplicas se elegirá a un secundario a ser primaria de
forma predeterminada.
Es posible agregar una instancia mongod extra para un conjunto de réplicas, el cual actuara
como árbitro. Los árbitros no mantienen un conjunto de datos. Árbitros sólo existen para
votar en las elecciones.
2. una ver iniciado el servicio de mongo, iniciamos la consola con el comando mongo, y
revisamos el estado del replicaset con el comando rs.status();
$ mongo
...
> rs.status()
{
"startupStatus" : 3,
"info" : "run rs.initiate(...) if not yet done for the set",
"ok" : 0,
"errmsg" : "can't get local.system.replset config from self or any seed
(EMPTYCONFIG)"
}
rs.confg()
null
> rs.initiate()
{
"info2" : "no configuration explicitly specified -- making one",
"me" : "Mordor.local:27017",
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
Para este caso mongod creará una configuración sencilla base para el replica set
replicaMongo:PRIMARY> rs.status()
{
"set" : "replicaMongo",
"date" : ISODate("2013-12-15T15:43:27Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "Mordor.local:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 401,
"optime" : Timestamp(1387122082, 1),
"optimeDate" : ISODate("2013-12-15T15:41:22Z"),
"self" : true
}
],
"ok" : 1
}
replicaMongo:PRIMARY> rs.conf()
{
"_id" : "replicaMongo",
"version" : 1,
"members" : [
{
"_id" : 0,
"host" : "local:27017"
}
]
}
Ahora la consola de mongo indica el miembro específico sobre el cual estamos ejecutando
los comandos, en este caso sobre el primario (PRIMARY) del replica set de nombre
replicaMongo.
Podemos notar también mucha información con respecto a los miembros del replica
set como la estampilla de tiempo de la última operación realizada (optime), su estado
funcional, su función dentro del replica set .
Agregar miembros:
Nota: Para poder agregar los miembros del replica set, debemos configurar los permisos de
acceso de la red para que los equipos pueden comunicarse:
el archivos de configuración es /etc/hosts.allow, en este archivo colocaremos el parámetro
de los host que deseamos se comuniquen entre si. Para el ejemplo se utiliza ALL : ALL que
significa todos. Editar el archivo y agregar el parametros : gedit /etc/hosts.allow, guardar los
cambios
1. En los equipos secundarios debemos indicar el nombre del replica set de la misma
manera que lo hicimos con la primaria, editar el archivo de configuración. (en este caso
utilizamos el nombre replicaMongo)
> rs.status()
{
"startupStatus" : 3,
"info" : "run rs.initiate(...) if not yet done for the set",
"ok" : 0,
"errmsg" : "can't get local.system.replset config from self or any seed
(EMPTYCONFIG)"
}
En este caso no ejecutaremos rs.inititate() ya que el replica set se encuentra iniciado por
otro lado y este miembro será uno que agregaremos a este ya existente.
4. identificar la IP del equipo o equipos para agregarlos al primario, mediante el comando
ifconfig, este comando despliega la información de la configuración de las tarjetas de red.
vagrant@precise32:~$ ifconfig
Eth1 Link encap:Ethernet HWaddr **:**:**:**:**:**
inet addr:192.168.33.10 Bcast:192.168.33.255 Mask:255.255.255.0
5. Ahora volveremos a nuestra instancia primaria para agregar el nuevo miembro al replica
set:
replicaMongo:PRIMARY> rs.status()
{
"set" : "replicaMongo",
"date" : ISODate("2013-12-15T17:40:32Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "local:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 2010,
"optime" : Timestamp(1387129181, 1),
"optimeDate" : ISODate("2013-12-15T17:39:41Z"),
"self" : true
},
{
"_id" : 1,
"name" : "192.168.33.10:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 51,
"optime" : Timestamp(1387129181, 1),
"optimeDate" : ISODate("2013-12-15T17:39:41Z"),
"lastHeartbeat" : ISODate("2013-12-15T17:40:31Z"),
"lastHeartbeatRecv" : ISODate("2013-12-15T17:40:30Z"),
"pingMs" : 1,
"lastHeartbeatMessage" : "syncing to: Mordor.local:27017",
"syncingTo" : ".local:27017"
}
],
"ok" : 1
}
miRS:PRIMARY> rs.conf()
{
"_id" : "replicaMongo",
"version" : 2,
"members" : [
{
"_id" : 0,
"host" : ".local:27017"
},
{
"_id" : 1,
"host" : "192.168.33.10:27017"
}
]
}