Blog de FP Andra Mari

Sistema Big Data: el clúster

Grado superior de Mecatrónica industrial

El término clúster  se usa para definir un sistema formado por conjuntos de ordenadores unidos entre sí por medio de una red de alta velocidad y que se comportan como si fuesen una única computadora. Para configurar un sistema Big Data se hace imprescindible el uso de clúster de servidores. así que en esta entrada explicaremos los pasos dados para ello.
Previamente a la creación del clúster hay que configurar cada uno de los equipos realizando algunas tareas previas

BIOS

Puesto que vamos a instalar un software de virtualización para poder modificar las características hardware del sistema, hay que activar la virtualización en la BIOS. En el caso de nuestros servidores los pasos para llegar a la opción de virtualización se ven en la imagen

Activando la virtualización en la BIOS

Los discos duros están conectados a un controlador RAID hardware que se configura desde la BIOS, aunque en otros equipos el controlador puede estar configurado mediante un driver. Para aprovechar toda la capacidad de los discos se configuran como JBOD (funcionan de forma independiente). Como boot hemos seleccionado el disco 1.

Dado que los disco están conectados a un RAID, para configurarlos como JBOD hemos tenido que configurar cada uno de ellos por separado como RAID0 sin unirse al resto de discos, de manera que la capacidad total disponible de cada disco (136,8 GB) sensiblemente menor que su capacidad física total (146,5GB)

Configuración de RAID 0

Que es Proxmox

Proxmox Virtual Environment es un proyecto de código abierto con versión gratuita y de pago, siendo algunas de sus características:

  • Plataforma de virtualización que permite la virtualización tanto sobre LXC (contenedores linux) como KVM (máquinas virtuales).
  • Distribución basada en Debian, con los servicios básicos para un mejor rendimiento.
  • Una interfaz gráfica muy sencilla para la gestión y monitorización en vivo de máquinas virtuales, clustering de servidores, etc…
  • Se puede cambiar tanto memoria RAM como espacio en disco asignados, en tiempo real y sin reiniciar el sistema.

En definitiva, es un software que se adapta perfectamente a las necesidades de nuestro proyecto.

La instalación de Proxmox, en nuestro caso la versión 4.4, es bastante sencilla. Se instala en cada uno de los equipos de manera individual y durante este procesos, entre otras cosas, definimos el nombre de cada equipo: bigdata1, bigdata 2 y bigdata3, y las direcciones fijas de la red 192.168.123.0/24 para cada uno de ellos: .210, .220 y .230
Al instalarlo se instala también el SO Debian 9

Para terminar actualizamos el SO

~# apt update
~# apt upgrade

Los discos duros

Una vez instalado Proxmox, podemos ver como aparecen los 4 discos (c0d0 a c0d3), y el c0d0 con 3 particiones p1, p2 y p3. En este punto vamos a explicar como hemos creado un LVM (volúmen lógico gestionable que se puede ampliar de forma dinámica) con los 4 los discos duros

Discos duros

~# ls /dev/cciss/c0*
/dev/cciss/c0d0 /dev/cciss/c0d0p2 /dev/cciss/c0d1 /dev/cciss/c0d2 /dev/cciss/c0d3
/dev/cciss/c0d0p1 /dev/cciss/c0d0p3 /

Inicialmente los discos c0d1 a c0d3 están sin ningún formato por lo que no se puede trabajar con ellos. Necesitan ser particionados para lo que usamos

~# fdisk /dev/cciss/c0dX (X es el número de cada uno de los discos)
Seleccionando la opción n creamos una partición primaria en cada uno de ellos y para guardar los cambios pulsamos w

Ahora podemos ver todos los discos con sus correspondientes particiones

~# ls /dev/cciss/c0*
/dev/cciss/c0d0 /dev/cciss/c0d0p2 /dev/cciss/c0d1 /dev/cciss/c0d2 /dev/cciss/c0d3
/dev/cciss/c0d0p1 /dev/cciss/c0d0p3 /dev/cciss/c0d1p1 /dev/cciss/c0d2p1 /dev/cciss/c0d3p1

Para ver información sobre los volúmenes físicos disponibles para crear un LVM tecleamos

~# pvdisplay |less

Previamente creamos los volúmenes físicos

~# pvcreate /dev/cciss/c0dXp1

Después creamos un grupo de volúmenes extendiendo el grupo pve ya existente

~# vgs
VG #PV #LV #SN Attr VSize VFree
pve 1 3 0 wz–n- 136.45g 15.84g

~# vgextend pve /dev/cciss/c0dXp1

~# vgs
VG #PV #LV #SN Attr VSize VFree
pve 4 3 0 wz–n- 546.53g 425.93g

Creamos un LVM  con el conjunto de los discos en cada servidor para poder tener una capacidad final aprox. a la suma de las capacidades de cada uno de los discos. Para comprobar el resultado tecleamos lo siguiente

~# lvdisplay

Comandos LVM

La red

Para la red se crea un trunk para cada servidor juntando las capacidades de cada una de las tarjetas de red (1 Gbps). El trunk necesita ser creado en ambas partes del enlace: las tarjetas y los puertos de switch.

En en lado del servidor configuramos un bond que agrupa a las 4 tarjetas: eth0, eth1, eth2 y eth3. La configuración del bond es para que funcione en mod 802.3ad. Esta configuración se puede hacer manualmente desde consola o utilizando Proxmox.

Bond en el servidor

De cualquiera de las maneras el archivo de configuración queda como sigue:

~# cat /etc/network/interfaces

auto lo
iface lo inet loopback
iface eth0 inet manual
iface eth1 inet manual
iface eth2 inet manual
iface eth3 inet manual

auto bond0
iface bond0 inet manual
slaves eth0 eth1 eth2 eth3
bond_miimon 100
bond_mode 802.3ad

auto vmbr0
iface vmbr0 inet static
address 192.168.123.210
netmask 255.255.255.0
gateway 192.168.123.254
bridge_ports bond0
bridge_stp off
bridge_fd 0

Podemos comprobar el estado del bond y de cada uno de los interfaces tecleando en el equipo

~# less /proc/net/bonding/bond0

En el lado del switch utilizamos la opción link agregation tipo LACP, con la que creamos un trunk para cada servidor con los 4 puertos a los que van conectados los cables de las tarjetas. En conjunto tenemos 3 grupos con lo que ocupamos 12 puertos del switch, Para terminar podemos asignarle una IP fija de la red con objeto de poder administrarlo desde la propia red

Configuración del trunk

Después de todas estas tareas podemos acceder a cada uno de los servidores utilizando Proxmox. Mediante un navegador web ponemos como dirección https://<ip del servidor>:8006 y accedemos a un menú que nos permite ver el estado del servidor, realizar configuraciones sobre el mismo o monitorizar su funcionamiento: CPU, memoria, red y disco.

Creando el clúster

Para crear el clúster partimos de un equipo, nosotros hemos usado el bigdata1 (192.168.123.210), donde definimos el nombre que le vamos a dar al clúster: BigData.

~# pvecm create BigData

Posteriormente vamos añadiendo el resto de servidores hasta completar el clúster. Desde cada servidor a añadir tecleamos una solicitud a bigdata1

~# pvecm add 192.168.123.210

Desde cualquier servidor del grupo podemos comprobar los equipos agregados

~# pvecm nodes

O el estado del clúster

~# pvecm status

Para más información sobre los comandos podéis consultar en la guía de administración de Proxmox

De forma gráfica vemos que el resultado es suma de los tres servidores

Clúster Big Data

Por último, para la seguridad en accesos vía SSH, en el equipo que vaya a estar mapeado en el router para el acceso desde internet creamos un nuevo usuario y bloqueamos el acceso al root . De esta manera el acceso externo al sistema deberá hacerse mediante el login del nuevo usuario

Compártelo en tus redes

Déjanos tu comentario

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