Cómo configurar un Sharded Cluster en MongoDB

MongoDB Sharded ClusterDefinición

Un sharded cluster es un conjunto de Replica Sets (shards) cuya función es la de repartirse uniformemente la carga de trabajo, de tal manera que nos permite escalar horizontalmente nuestras aplicaciones para así poder trabajar con grandes cantidades de datos. MongoDB uses sharding to support deployments with very large data sets

Ventajas de un sharded cluster

Las principales funcionalidades que nos aporta un sharded cluster son las siguientes:

  • Escalabilidad: desde un servidor aislado a arquitecturas distribuidas de grandes clusters (Permite particionar, de manera transparente para el usuario, nuestra base de datos en tantas como shards tengamos. Esto aumenta el rendimiento del procesado de los datos al ser cada una de ellas más pequeña que la original)
  • Auto balanceado de carga a través de los distintos shards. El balanceador decide cuándo migrar los datos, y a qué Shard, para que estén uniformemente distribuidos entre todos los servidores del cluster. Cada shard aloja los datos correspondientes a un rango de la clave escogida para particionar nuestra colección.

Configuración de nuestro Sharded Cluster

Esta es la configuración que va a tener nuestro cluster:

  • Tres config servers (lo mínimo para producción): su función es la de decirle a los mongos a qué Replica Set, o shard, tienen que enrutar las peticiones de los clientes. Irán en la máquina: juan-mongodbspain
  • Dos replica sets (a y b) de tres nodos cada uno (suficiente para mostrar cómo se configura el cluster). Cada Replica Set en una máquina distinta, el primero en: juan-mongodbspain y el segundo en: juan-mongodbspain2.
  • Dos mongos (solicitan la información requerida por los clientes al shard que la contiene. Irán en la máquina: juan-mongodbspain

Creación de directorios

Antes de levantar los servicios debemos haber creado los directorios donde guardaremos nuestros datos. Utilizaremos los siguientes:

  • cfg0, cfg1 y cfg2 para cada config server
  • a0, a1 y a2 para cada uno de los tres nodos de la primera Replica Set
  • b0, b1 y b2 para cada uno de los tres nodos de la segunda Replica Set

Orden

Seguiremos este orden para levantar las instancias que componen nuestro sharded cluster:

  1. Config servers
  2. mongod’s
  3. mongo’s

Config servers

Levantamos los config servers:

Mediante la opción ‘configsvr’ indicamos que el servicio va a ser un config server.

Como podemos observar, estamos utilizando la máquina “juan-mongodbspain” para alojar los tres config servers, por esa razón utilizamos puertos distintos. En caso de tenerlos en máquinas distintas no es necesario que especifiquemos ningún puerto.

mongod’s

En un artículo anterior explicamos cómo configurar una Replica Set, podéis leerlo aquí:

Vamos a levantar los servicios correspondientes a los seis nodos. Los tres primeros formarán el primer Replica Set (shard) e irán en una máquina. Los tres últimos formarán el segundo shard e irán en otra máquina.

En el comando que vamos a utilizar hemos de indicar que el mongod va a formar parte de un shard en un cluster particionado. Esto lo conseguimos a través de la opción –shardsvr. El puerto por defecto para estas instancias es el 27018.

Ahora vamos con el segundo Shard, que irá alojado en la otra máquina:

mongo’s

Salvo para tareas de administración nunca nos conectaremos a un mongod ni a un config server. Las apps lo harán a los mongos, que son los encargados de enrutar las peticiones a los shards correspondientes. Es por esta razón por la que estamos especificando puertos distintos al estándar en todas las instancias. Por lo tanto, la única puerta de entrada a la base de datos ha de ser un mongos.

Así se levantan los mongos:

Como vemos, al no haber especificado puerto alguno en el primero de ellos será ese mongos el que utilice el puerto por defecto (27017).

Comprobación de nuestros servicios

Vamos ahora a comprobar que tenemos todas las instancias corriendo:

Y en la otra máquina tenemos los mongod’s correspondientes al segundo shard:

 Configuración de las Replica Set

Ahora tenemos que configurar las dos Replica Set (explicado en el artículo anterior). Sólo muestro cómo se hace para una de ellas porque es idéntico en ambas:

 Configuración del cluster

Sólo nos falta añadir al cluster nuestros dos shards. Esto lo haremos desde el primer mongos. Antes de hacerlo podemos comprobar que nuestro cluster no contiene ningún shard:

Añadimos nuestros dos shards al cluster:

Comprobamos la configuración del cluster una vez añadidos los dos shards:

Balanceador

De esta forma podemos comprobar que está activo el balanceador:

Ya hemos terminado de configurar nuestro sharded cluster. Dejamos para otro artículo explicar cómo particionar una colección.

En el próximo artículo hablaremos sobre cómo actualizar un nodo stand-alone, una Replica Set y un Sharded Cluster.

Dejar un comentario

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

2 × dos =

10 ideas sobre “Cómo configurar un Sharded Cluster en MongoDB”