Volver al blog

Cómo configurar y optimizar MongoDB en Ubuntu en la nube pública

Cómo configurar y optimizar MongoDB en Ubuntu en la nube pública

Las empresas implican una gran cantidad de datos y eso hace que el problema de manejarlos y gestionarlos sea más difícil. Tradicionalmente, la industria ha estado utilizando sistemas RDBMS durante décadas, pero con el advenimiento de Big Data en el siglo XXI, las bases de datos NoSQL (Not only SQL) entraron en escena para datos no estructurados y semiestructurados a gran escala.

En esta publicación, voy a configurar un clúster de MongoDB.

MongoDB es una base de datos de documentos NoSQL gratuita y de código abierto, que se utiliza ampliamente debido al alto nivel de escalabilidad y flexibilidad que proporciona.

Para implementar MongoDB en producción, es aconsejable utilizar Replica Sets. Los replica sets son el equivalente en MongoDB de una configuración Maestro/Esclavo en el mundo relacional, pero en contraste, son muy sencillos de configurar, ya que todo está integrado. Para obtener más información sobre los Replica Sets, consulte la definición de TutorialsPoint’s sobre el proceso de replicación.

Planificación de su clúster de servidores en la nube de MongoDB

Voy a crear un clúster de 3 nodos. Es importante darles los mismos recursos porque cualquiera de ellos puede convertirse en el servidor primario (es decir, maestro). Estos nodos o máquinas pueden ejecutarse en cualquier sistema operativo, pero en este tutorial, voy a utilizar Ubuntu 18.04 LTS. Sobre cómo adjuntar y configurar la imagen preinstalada de la biblioteca de CloudSigma’s, puede consultar este tutorial.

Dado que el objetivo principal de un Replica Set es que el clúster sobreviva a la caída de un solo nodo, no tendría mucho sentido que todos sus servidores residieran en el mismo host físico. Afortunadamente, CloudSigma ofrece algo llamado grupos de disponibilidad. Lo que esto significa es que puede indicarle al sistema que agrupe sus tres servidores en grupos diferentes. Al hacerlo, nunca residirán en el mismo host físico. Puede encontrar más información sobre esto y otras características de seguridad y continuidad del negocio aquí.

También es importante utilizar una versión de Linux de 64 bits. La razón es simplemente que MongoDB no funciona bien en sistemas de 32 bits (más sobre esto aquí).

Instalación de MongoDB en la nube

Esta sección es bastante sencilla. Utilice una de las imágenes preconfiguradas de Ubuntu 18.04 o instálelo usted mismo.

La configuración de CPU, RAM y disco es realmente individual y depende de su carga. Para una instalación pequeña, una CPU de 4 GHz, 4 GB de RAM y 10 GB de disco (para el sistema) deberían ser suficientes. Cuando conecte sus unidades, asegúrese de estar utilizando VirtIO. Si utiliza IDE, el rendimiento se verá afectado significativamente. Además, dado que está creando un Replica Set, necesita que todos los nodos (y servidores de aplicaciones) estén en la misma VLAN.

A diferencia de muchos otros proveedores de la nube, no es necesario configurar su almacenamiento con RAID10 o similar para mejorar el rendimiento. Como informan muchos de nuestros clientes, obtendrá un rendimiento increíble de forma inmediata al utilizar tanto discos SSD como magnéticos en CloudSigma.

Aún así, recomiendo mantener los datos de MongoDB en una unidad separada. La razón de esto es simplemente que en algún momento podría tener que realizar algunas optimizaciones del sistema de archivos que no querría hacer en todo su sistema de archivos.

Con esto en mente, lo más fácil es agregar esta unidad después de la configuración de los servidores. Por ahora, centrémonos en la instalación del sistema. Si realiza la instalación usted mismo (en lugar de utilizar los sistemas preconfigurados), le recomiendo que presione F4 en el menú de inicio y seleccione ‘Instalar una máquina virtual mínima’.

Estoy creando 3 máquinas, cada una con las siguientes especificaciones:

  • CPU: 4 GHz
  • RAM: 4 GB
  • SSD: 10 GB (Ubuntu 18.04 LTS), 20 GB (unidad adicional)

Como se indica en la parte de SSD, voy a conectar una unidad de 10 GB con Ubuntu 18.04 LTS instalado.

Además, voy a conectar otra unidad vacía de 20 GB para almacenar los datos de MongoDB. El tamaño de esta depende en gran medida de su uso, pero para un sistema pequeño, 20 GB probablemente deberían ser suficientes. Sin embargo, dado que a veces es difícil predecir cuántos datos almacenará, utilizaremos LVM. Esto le permitirá simplemente agregar otro disco más tarde y expandir el volumen sin tener que empezar de nuevo. Alternativamente, puede usar un solo disco y escalarlo más tarde conresize2fs.

Para agregar el disco, simplemente vaya a la sección ‘Drives’, haga clic en el icono ‘Create a new drive’ en la parte superior, asigne un nombre al nuevo disco y defina su tamaño en 20 GB. Una vez guardado, vaya a la máquina individual a la que desea conectarlo y, en la sección de discos de los detalles de esa máquina, puede hacer clic en ‘Attach a drive’ y seleccionar el disco.

Ahora que tiene tres máquinas, puede proceder a montar en cada máquina el disco adicional que agregó para el almacenamiento de datos de MongoDB. Recomiendo agregar este disco como una partición. El uso de particiones permite al sistema operativo administrar la información en cada región por separado. Para agregar el disco como una partición, primero voy a verificar todos los discos conectados a nuestra máquina. Para ello, ejecutaré el siguiente comando:

Cuando ejecuto el comando, obtengo la salida que indica los discos y los dispositivos en mi máquina.

MongoDB

En la imagen, he marcado un disco de 10 GB como aquel donde está instalado nuestro sistema operativo. Luego hay otro disco de 20 GB que ahora se ha conectado. La ubicación del disco es /dev/vdb. Puede crear una partición en este disco usando los siguientes comandos:

Esto abrirá la utilidad fdisk, una utilidad de línea de comandos que proporciona funciones de particionamiento de disco, en la cual puede crear particiones en nuestro disco. Mostrará un mensaje “Command (m for help):” donde debe ingresar n para crear una nueva partición, y luego simplemente siga presionando enter para aceptar los valores predeterminados. Y después de que haya creado la partición, ingrese w para escribir los cambios. Se vería así:

Ha creado una nueva partición 1 de tipo ‘Linux’ y de tamaño 20 GiB. Ahora que la partición está creada, creemos un pool LVM:

He ingresado ‘19.5g’ ya que el tamaño de mi partición es de 20g. A continuación, ejecute el siguiente comando para averiguar el nombre del disco:

Después de eso, formatee el disco usando el método ext4 con el siguiente comando:

A continuación, creemos una ubicación para montar el disco y una carpeta en la que guardar sus datos de MongoDB.

Para agregar una entrada al fstab sobre su nuevo disco a montar, puede usar directamente el siguiente comando:

En el comando, blkid le da un UUID – Identificador Único Universal de cada disco. Aquí extraigo con grep el del disco de MongoDB y combino este UUID con la ubicación de la carpeta de montaje, el tipo de sistema de archivos y otras opciones para el disco, respectivamente. Estoy agregando esta línea a /etc/fstab. Si no lo hace, obtendrá un error al montar el disco. La entrada se ve así:

UUID=”695a62e6-021d-4fc0-945c-cc51a92d86da” /mongodb ext4 auto,noexec,rw,sync,nouser 0 0

Ahora, puede montar el disco en la ubicación /mongodb:

Instalación de MongoDB

Con el sistema preparado, pasemos a instalar MongoDB. Aunque Ubuntu ofrece una versión de MongoDB en su propio repositorio, le recomiendo que utilice la versión oficial de MongoDB en su lugar. La razón es que el repositorio de Ubuntu está bastante desactualizado en cuanto a versiones, por lo que si desea aprovechar al máximo MongoDB, tendrá que recurrir a las versiones oficiales.

Dado que MongoDB ofrece su propio repositorio, simplemente puede agregarlo a su sistema y luego instalar MongoDB de la manera habitual. Estos son los pasos a seguir:

Primero, importe la clave pública utilizada por el sistema de gestión de paquetes:

Luego, creo un archivo de lista. Este contendrá el repositorio donde se encuentra MongoDB, para que su sistema pueda descargarlo desde allí:

Ahora, estoy actualizando mi base de datos de paquetes locales para poder tener en cuenta los cambios.

Ahora, simplemente puedo instalar el paquete usando el siguiente comando:

He instalado MongoDB en cada una de las máquinas.

Ahora MongoDB está en funcionamiento, con los datos en la unidad creada. Si se espera una carga pesada y/o muchas conexiones, es posible que deba aumentar los valores de ulimit.

Si desea obtener más información sobre sus datos, también puede registrarse en MMS, que es un servicio de monitoreo gratuito basado en la nube para MongoDB.

Creación del conjunto de réplicas para su nube de MongoDB

Ahora, creemos un conjunto de réplicas. Antes de eso, debe asegurarse de que cada una de las máquinas pueda comunicarse entre sí. Para este propósito, agregaremos estas entradas en /etc/hosts

Para la verificación, puede intentar hacer ping a las máquinas utilizando el nombre de host. Así que si la IP de mi máquina 1 es IP-1, por ejemplo, 213.189.123.12, entonces en lugar de escribir

escribiré,

Si ha activado el cortafuegos (lo cual realmente debería hacer), asegúrese de que los nodos puedan enviar y recibir tráfico TCP en los puertos 28017 y 27017 en la interfaz interna.

Ahora, en cada una de las máquinas, proceda a iniciar el servicio mongod utilizando los siguientes comandos.

En la máquina m1,

A continuación, en la máquina m2,

En la máquina m3,

Aquí,

mongod es el nombre del servicio

dbpath es la ubicación de nuestro directorio de base de datos

replSet es el nombre de nuestro conjunto de réplicas. Debe ser el mismo para cada una de las máquinas en el mismo conjunto de réplicas

bind_ip es el nombre de host de la máquina donde lo está ejecutando.

Una vez que haya iniciado el servicio mongod, vaya al servidor primario (en mi caso, he elegido m1) y ejecute mongo.

Esto iniciará la terminal de MongoDB. En la terminal, inicie el replicaSet utilizando el siguiente comando. Creará el replicaSet con las configuraciones predeterminadas:

Ahora, simplemente agreguemos las otras dos máquinas como réplicas utilizando los siguientes comandos:

Puede monitorear el estado utilizando el comando:

Eso es todo. Ahora debería estar listo y funcionando con su clúster de MongoDB en la nube ultrarrápida de CloudSigma.

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev es diseñador creativo en CloudSigma, centrado en una identidad empresarial coherente mediante el uso de canales de marketing tradicionales e innovadores. Es experto en fusionar la visión artística con el marketing estratégico para crear narrativas de marca impactantes.

Comentarios

Aún no hay comentarios. Sea el primero.