autorenew
Tutorial MongoDB. Alta disponibilidad con réplicas

Tutorial MongoDB. Alta disponibilidad con réplicas

Empezamos una nueva aventura en nuestro tutorial de MongoDB, para meternos de lleno en temas de administración. Y es que, cualquier sistema de base de datos que se precie, debe garantizar al 100 % que sus datos estén disponibles en todo momento. Es lo que se conoce como alta disponibilidad y para conseguirlo MongoDButiliza la replicación.

Nota: esta entrada es teórica. En ella intentaré explicar los conceptos principales de la replicación en MongoDB. En futuras entradas veremos como podemos configurar un conjunto de réplicas.

¿Qué es la replicación?

Básicamente se trata de que los datos estén disponibles en más de un servidor a la vez, para que en el caso de que uno falle por cualquier motivo, los datos se puedan leer o escribir usando otro servidor.

Los servidores de bases de datos tradicionales, llevan a cabo esta tarea organizando los servidores en un clúster, que son, resumiendo mucho,  agrupaciones de servidores que funcionan como un único servidor. Un clúster tradicional puede configurarse con distintos tipos de arquitectura. Cada arquitectura daría para escribir un libro entero, así que no vamos a entrar en muchos más detalles.

MongoDB garantiza la alta disponibilidad de los datos a través de lo que se conoce como conjunto de réplicas. Una réplica no es más que una copia exacta de los datos que estará en otro u otros servidores. Al estar los datos disponibles en varios servidores al mismo tiempo, en el caso de que uno falle, podemos atacar a cualquiera de los otros para recuperar los datos.

En este caso, MongoDBfunciona con un solo servidor principal, considerándose el resto como secundarios. Esto quiere decir que las aplicaciones cliente generalmente se comunican con el servidor principal para leer o escribir datos, y que los cambios se distribuirán a los servidores secundarios para mantener la integridad. Digo en general porque para hacer consultas de solo lectura, podemos acceder también a los servidores secundarios (aunque hay que tener claro que si leemos datos de un servidor secundario, los datos pueden no estar actualizados). Las operaciones de escritura (updates o inserts), solo se pueden hacer sobre el servidor principal.

Componentes de una réplica

Una vez hemos visto de forma general qué es una réplica de MongoDB, vamos a explicar un poco más en detalle los componentes principales.

Para sincronizar los datos entre servidores de MongoDB, estos se comunican a través de pings o latidos, informando de su estado y de la versión de sus datos. Así los otros servidores son capaces de saber si hay que elegir un nuevo servidor principal, o si sus datos están actualizados.

Elección de un nuevo servidor principal

Lo explicado anteriormente se aplica a un estado estable en el que todos los servidores pueden comunicarse y están funcionando sin problemas. ¿Pero qué pasa cuándo hay algún tipo de fallo en el servidor principal?  Pues en este caso se producirá una elección entre los servidores para elegir cuál será el nuevo servidor principal.

Normalmente un servidor manda pings o latidos a los otros servidores cada 2 segundos. Este latido contiene información sobre el estado de cada servidor y si no es devuelto antes de 10 segundos, el servidor por el que se ha preguntado quedará marcado como inaccesible. Con la información de estos latidos, se decide si es necesario llevar a cabo la elección de un nuevo servidor principal. La elección sucede cuándo:

En cualquier caso, cuando se lanza una nueva elección, deberemos tener en cuenta los siguientes puntos:

Como veis el proceso no es sencillo y tiene muchas variantes, por lo que deberemos tener claro como configuramos nuestro conjunto de réplicas para que sea posible elegir siempre un servidor principal. Para esto deberemos tener en mente como es nuestra topología de red y repartir los servidores de forma inteligente. 

Estrategias para configurar los conjuntos de réplicas

Siempre que vayamos a crear un nuevo conjunto de réplicas en nuestra base de datos MongoDB deberemos tomar una serie de decisiones importantes.

Cuando tengamos que decidir cuántos miembros tendrá nuestro conjunto de réplicas o cuándo añadir nuevos miembros, deberemos pensar en los siguientes puntos:

También tendremos que pensar en la distribución de los servidores:

Conclusiones

Con la replicaciónMongoDB asegura que nuestros datos estén siempre accesibles. No obstante la configuración de un conjunto de réplicas no es algo trivial, y debe hacerse a partir de un estudio previo analizando qué queremos conseguir. A partir de ahí podremos tomar decisiones y decidir cómo podemos llevar a buen puerto nuestro sistema de alta diponibilidad, ya que las variables que influyen en el sistema son muchas. En futuras entregas veremos como podemos configurar un conjunto de réplicas y los diferentes casos que nos podremos encontrar. No os lo perdáis.



Recuerda que puedes ver el índice del tutorial y acceder a todos los artículos de la serie desde aquí.