miércoles, 26 de junio de 2013

Replicación en MongoDB (2 parte)

En la siguiente entrada vamos a poner en practica una arquitectura de replicación con dos instancias mongod (primaria-secundaria) utilizando solo un servidor.

Es sabido que lo ideal seria poder estructurar cada instancia mongo en servidores distintos pero ahora  nos conviene realizar una sencilla configuracion para luego poder ejecutar todos estos conocimientos en un entorno de producción bien redimensionado.

Para empezar vamos a crear los directorios donde alojamos el contenido de cada una de las dos  instancias:

mkdir -p /data/rp1 /data/rp2

Luego levantamos los procesos mongod con las siguientes secuencias de parámetros:

Primary:
mongod --port 27017 --dbpath /data/rp1 --replSet reptest --smallfiles --oplogSize 128 
 
Secundary:
mongod --port 27018 --dbpath /data/rp2 --replSet reptest --smallfiles --oplogSize 128

 --port : puerto por el que escucha el proceso.

--dbpath : path donde vamos alojar los datos de cada instancia

--replSet : Nombre de la replica a la que pertenece este proceso mongod

--smallfiles : Como comenté en anteriores entradas solo sirve para crear ficheros opslogs de menor
                     tamaño, utilizar solo para entornos de testing.




Una vez tenemos levantadas las dos instancias anteriores, solo tenemos que conectarnos a la que vamos a configurar como primaria:

root@localhost examen]# mongo --port 27017
MongoDB shell version: 2.2.3
connecting to: 127.0.0.1:27017/test
Mongodb permite ejecutar funciones de configuración y gestión del replicaset mediante
el siguiente método javascript. "rs."
rs.
rs.add(                   rs.conf(                  rs.freeze(                rs.isMaster(              rs.remove(                rs.syncFrom(
rs.addArb(                rs.config(                rs.hasOwnProperty(        rs.propertyIsEnumerable(  rs.slaveOk(               rs.toLocaleString(
rs.apply(                 rs.constructor            rs.help(                  rs.prototype              rs.status(                rs.toString(
rs.call(                  rs.debug                  rs.initiate(              rs.reconfig(              rs.stepDown(              rs.valueOf(

En esta dirección tenéis mas información:
http://docs.mongodb.org/manual/reference/replica-commands/#replica-set-javascript-methods

Tal como dije al principio vamos a configurar dos miembros, uno primario y otro secundario, así quedaría la configuración del cluster :

Todos los metadatos del cluster se añaden a la variable rsconf
rsconf = {
            _id: "reptest",
            members: [
                       {
                       _id: 0,
                       host: "127.0.0.1:27017"
                       }, 
                       {
                        _id: 1,
                        host: "127.0.0.1:27018"
                       },  
                     ]
          }


 
Ahora vamos a iniciarlizar el replicatset


Pasado algunos minutos (un par de ellos como mucho), esperamos que finalice la sincronización y ejecutamos el comando para ver en que estado se encuentra el replicaset




De esta forma tan fácil ya tenemos en funcionamiento un mini entorno replicaset, donde todos los cambios en el primario(puerto 27017) se replicaran instantáneamente al secundario (27018).

Para el siguiente capitulo explicaré como añadir un tercer nodo y realizaremos algunas pruebas
de disaster recovery entre nodos.

Hasta la proxima!
 


No hay comentarios:

Publicar un comentario en la entrada