En este post implementaremos la virtualización del sistema MongoDB sobre el clúster creado previamente. Para ello seguiremos utilizando Proxmox por la facilidad que proporciona para gestionar máquinas virtuales

Dimensionado del sistema

Antes de configurar las máquinas virtuales, debemos dimensionar el sistema que queremos. Un sistema MongoDB se ejecuta, normalmente, en un clúster de servidores que procesa los datos de forma distribuida entre los mismos. En cuanto a las dimensiones del clúster hay que considerar el nº de procesadores, la cantidad de memoria, la cantidad de disco duro y la velocidad de las comunicaciones

En la web de MongoDB se mencionan dos conceptos importantes relacionados con la arquitectura de MongoDB que hay que tener en consideración:

    • Particionado. MongoDB divide los datos entre los servidores mediante una técnica llamada Sharding. Mediante esta técnica podemos conseguir sumar la cantidad de almacenamiento de cada uno de los servidores del clúster (shard) y obtener la capacidad suficiente para poder almacenar todos los datos con los que vaya a trabajar el sistema.
    • Réplica. MongoDB mantiene múltiples copias redundantes de los datos para una alta disponibilidad. Esto supone que el almacenamiento de cada equipo debe tener capacidad suficiente para almacenar la réplica de la base de datos completa.

Con todo, es difícil hacer una estimación del sistema y en la citada web se propone la utilización de un sistema de pruebas reducido o Proof of Concept (POC) con el que hacer estimaciones en cuanto a la capacidad final necesaria para el sistema a utilizar en producción.

Virtualización con Proxmox

Menú para virtualizar

Proxmox permite elegir entre dos tipos de virtualización: la virtualización con KVM con la opción Crear VM, y los contenedores basados con LXC con la opción Crear CT . A continuación una breve explicación sobre la diferencia entre cada una de las tecnologías de virtualización

KVM

KVM (Kernel-based Virtual Machine): es una solución open source para implementar virtualización completa con Linux sobre hardware que contenga extensiones de virtualización: Intel VT o AMD-V. Está formada por un módulo del núcleo (con el nombre kvm.ko) y un módulo específico para el procesador (kvm-intel.ko or kvm-amd.ko). El componente KVM para el núcleo está incluido en Linux desde la versión 2.6.20.
Permite ejecutar múltiples máquinas virtuales utilizando imágenes de disco que contienen sistemas operativos sin modificar. Cada máquina virtual tiene su propio hardware virtualizado: una tarjeta de red, discos duros, tarjeta gráfica, etc.

LXC

LXC (Linux Containers): es una tecnología de virtualización open source en el nivel de sistema operativo (SO) para Linux que permite ejecutar múltiples instancias de sistemas operativos aislados, conocidos como Servidores Privados Virtuales (SPV o VPS en inglés) o Entornos Virtuales (EV) en un servidor físico. No provee de una máquina virtual, más bien provee un entorno virtual que tiene su propio espacio de procesos y redes.

Configuracion propuesta

El sistema MongoDB está formado por 4 máquinas y se han configurado con LXC:
mongodb0: hace funciones de árbitro de las otras tres máquinas para poder seleccionar una de ellas como primaria y en el caso de que falle pasar el control a otra. Para esta máquina no se necesita mucha capacidad de proceso por lo que se le han asignado pocos recursos tanto de memoria como de procesador. Respecto al disco, el árbitro no trabaja con lo datos por lo que apenas necesita disco duro

mongodb1 a 3: hacen el trabajo de proceso de los datos, para lo que se les ha asignado más memoria y procesador. Además, los nodos tienen que tener capacidad suficiente para contener cada uno de ellos la base de datos completa más los índices. Siendo el tamaño de la base de datos de 160 GB aprox hemos estimado que el disco debería tener una capacidad mínima de 200 GB.

Inicialmente no se ha utilizado toda la capacidad del sistema porque el objetivo principal del proyecto es hacer pruebas modificando la capacidad de las máquinas y observar la influencia en su rendimiento. Por otro lado, no hemos considerado necesario configurar shard de servidores

Sistema MongoDB virtual

Los contenedores se han configurado como se ve en las siguientes ilustraciones: uno específico para el árbitro, y los otros 3 iguales para los nodos .

Arbitro: mongodb0
Nodos: mongodb1 a 3

Una vez completada la configuración creemos que disponemos de un sistema con suficiente capacidad como para responder a los objetivos previstos

Configuración MongoDB

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.