Cómo configurar un MongoDB Replica Set

replicasetVamos a ver cómo configurar nuestros servicios mongod para disponer de una Replica Set y poder así disfrutar en nuestro sistema de alta disponibilidad y de replicación automática de datos. 

Lo primero ha de ser tener instalado MongoDB en nuestro sistema. Si no sabéis cómo hacerlo podéis consultar estos artículos:

Configuración típica

La configuración típica está compuesta de tres nodos. Uno de ellos actuará como primario y los otros dos como secundarios. Como sabéis, la réplica de datos se hace siempre desde el primario hacia los secundarios.

Creación de directorios

Antes de levantar los servicios tenemos que crear los directorios donde vamos a guardar nuestros datos. En mi caso serán los directorios a0, a1 y a2:

Primer nodo

De la siguiente manera levantamos el servicio correspondiente al primer nodo:

Antes de hacer lo mismo con los dos nodos restantes voy a comentar el significado de cada opción utilizada (en la documentación oficial podemos consultar todas ellas):

  • replSet Indicamos el nombre de la Replica Set a la que va a pertenecer nuestro servicio.
  • dbpath Será el directorio donde se guardan nuestros datos.
  • logpath <ruta/fichero> Fichero donde se guardará el log de todo lo que ocurra en el servicio.
  • port Puerto a utilizar. MongoDB utilizar el puerto 27017 si no especificamos ninguno.
  • fork Para que el servicio corra en background. Opcional.
  • logappend Sirve para no vaciar el fichero de log en caso de que ya exista. Opcional.
  • smallfiles Utilizado en entornos de desarrollo cuando no tenemos necesidad de grandes cantidades de datos.
  • oplogSize <tamaño> Utilizado en entornos de desarrollo para limitar el tamaño del fichero de operaciones log. Este fichero es usado para poder llevar a cabo la replicación.

Nodos restantes

Ahora que ya hemos comprendido lo que estamos haciendo, levantamos los dos nodos restantes:

En caso de tener los nodos en máquinas distintas no es necesario que especifiquemos ningún puerto. De esta forma, todos ellos escucharán en el 27017, cada uno de su máquina.

Comprobamos que los tres servicios están corriendo:

Configuración de la Replica Set

En este momento nuestros servicios están activos, pero de manera individual porque aún no hemos configurado la Replica Set. Eso es lo que vamos a hacer ahora.

Nos conectamos al primero de los nodos:

Si consultamos el estado de la Replica Set, o su configuración , vemos que aún está sin definir:

Ejecutamos el siguiente comando para que MongoDB configure la Replica Set con el nodo al que estamos conectados y con la configuración mínima por defecto:

Y consultamos para ver que se ha incluido en la Replica Set:

Si nos fijamos en el prompt devuelto podemos ver que está formado por el nombre de la Replica Set (a), seguido por dos puntos y por el tipo de nodo. En este caso y, al ser todavía el único, nuestro nodo es el primario.

Sólo nos falta añadir a nuestra Replica Set los dos nodos restantes:

Vemos que la configuración de la Replica Set es correcta:

Y, por último, comprobamos que los tres nodos están funcionando correctamente:

Podemos ver cómo los dos secundarios se sincronizan con el primario.

Lectura de un nodo secundario

¿Qué tenemos que hacer para leer de los secundarios? Lo primero sería conectarnos a ese secundario:

Si intentamos leer ahora comprobamos que no podemos:

Tenemos que ejecutar antes el siguiente comando:

Y ya podremos leer:

En un próximo artículo hablaremos sobre cómo configurar un Sharded Cluster.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

3 × cinco =