GeekClusterPi - Parte 1: Qué es y cómo funciona

Categoría: GeekClusterPi Creado: Lunes, 08 Mayo 2017 Publicado: Lunes, 08 Mayo 2017 Escrito por Francisco Javier Sánchez Gragera

Sin duda la supercomputación es un campo fascinante de la informática, pero por desgracia su alto coste lo aleja de nuestros bolsillos.

 

Esquema

 

El modelo más extendido en supercomputación es el basado en arquitectura cluster, es decir, un conjunto de ordenadores interconectados entre si, que trabajan de forma conjunta y coordinada para procesar información u ofrecer un servicio. Requieren menor inversión inicial, son flexibles y fiables pero, aún así, la adquisición e instalación de cuatro o cinco ordenadores sigue siendo algo costoso para un particular y voluminoso para instalar en el hogar.

Ahora, la proliferación de los minicomputadores nos resuelve el problema. Por muy poco dinero podemos obtener uno de estos mini-pc, que además ocupan muy poco espacio. Aplicando el modelo clúster a los mini-pc, he construido mi propio clúster de Orange Pi Zero que cabe en una caja de zapatos, cuesta poco más de 100€.

Esquema

Pero.... ¿para qué queremos cluster en casa?. Tiene muchas posibles aplicaciones, como hacer cálculos matemáticos en meteorología, minar información de las redes sociales con fines empresariales (Big Data), servidor web de alta disponibilidad y balanceado, servidor base de datos replicado, renderizado 3D... Decidí usar el cluster como servidor web balanceado de alta disponibilidad y alojar esta página.

 

Servidor Web Balanceado de Alta Disponibilidad

Para construir este tipo de cluster debemos contar con los siguientes elementos, todos conectados a través de red:

  • Nodo de cabecera, o balanceador de carga. En mi caso una Orange Pi Zero, etiquetada como OPI_00, con la IP 192.168.1.20. Encargada de controlar el funcionamiento del cluster.
  • Nodos servidores web. Para que tenga sentido debemos contar al menos con dos, y se pueden ir anexando más para ampliar la capacidad. En mi caso usé tres Orange PI Zero, etiquetadas como OPI_01, OPI_02 y OPI_03, con ip's 192.168.1.21, 192.168.1.23 y 192.168.1.23 respectivamente. Como se usarán para dar servicio a la misma web, los nodos tendrán alojada los mismos ficheros y bases de datos.
Esquema

 

Las ventajas principales de estos servidores son dos, tal y como su nombre indica:

  • Balanceo de carga de trabajo: Consiste en repartir las solicitudes que llegan de los clientes entre los distintos servidores web existentes, para obtener así mayor rendimiento. El balanceador se vale de un algoritmo de balanceo para que la distribución de trabajo entre nodos sea equitativa. Cada servidor web contiene una copia exacta de la página, de tal forma que se suman las capacidades de cada nodo para poder atender un mayor número de páginas web simultáneas.
  • Alta disponibilidad: Al tener la misma web alojada en tres nodos distintos, si una de las Orange Pi Zero se averiase, la web seguiría sirviéndose a través de los dos nodos restantes. El nodo de cabecera detectará el nodo caído y lo excluirá del reparto del tráfico web. Como muchos pensaréis, si el nodo de cabecera cae el tráfico web no se repartirá automáticamente, y la página solo estaría accesible accediendo a uno de los nodos de forma manual. Para evitar este problema se suele incluir un segundo nodo balanceador, que sólo entra en funcionamiento cuando falla el primario, aunque yo no lo he incluido en mi proyecto.

Según he leído en otros artículos, ambos conceptos se pueden recoger en el término clúster de alto rendimiento

En el modelo que yo he construido cada nodo servidor contiene el stack LEMP (servidor web nginx, bases de datos MySql y PHP), de tal forma que cada nodo es capaz de ofrecer todos los servicios necesarios para la página (servidor web y bases de datos). Existen otros modelos en los que se separan estos servicios, de modo que tenemos un balanceador para el tráfico http por el puerto 80, que se distribuye entre dos o mas nodos; y un segundo balanceador para las consultas mysql, que normalmente fluye por el puerto 3306, y que se distribuye entre otros dos o mas nodos independientes y exclusivos para las bases de datos.

Al servirse la página web en tres nodos diferentes, tendremos que asegurarnos que éstos contengan siempre los mismos ficheros actualizados, y que sus bases de datos sean idénticas. Si cada vez que agregase un artículo a éste blog tuviera que copiar todo el contenido a mano en los tres servidores, la labor de mantenimiento del sitio sería tediosa e insostenible. Para ello debemos programar las tareas de replicación de bases de datos y archivos alojados en el servidor web:

Esquema
  • Replicación de bases de datos: La tarea de replicación de bases de datos está contemplada en el motor de MySql. Al tener tres nodos realizo una replicación circular, es decir, el nodo 1 replica los cambios al 2, el 2 al 3 y el 3 al 1. El funcionamiento de la replicación es realmente efectivo y no tuve muchos problemas.
  • Replicación de archivos: Programar la replicación de archivos me resultó más complicado, y de hecho estoy seguro que se puede mejorar . De momento uso un script que sincroniza a través de rsync y ftp el contenido de una carpeta del servidor donde alojo las imágenes y ficheros enlazados de los artículos. La automatización de la tarea la consigo gracias a una tarea Cron.

Hay que poner especial cuidado a la hora de alojar páginas webs dinámicas, como los populares CMS Wordpress y Joomla, ya que la simple instalación de una extensión puede suponer un problema si se descoordina la replicación de bases de datos con los ficheros. Este es quizás una de las mayores pegas que encuentro en mi modelo de alto rendimiento, agradeceré cualquier consejo al respecto.

Aquí terminamos los conceptos, en el próximo artículo mostraré cómo ensamblé los componentes que forman la parte hardware del cluster. Gracias por visitar la web.

Siguiente: Montaje de Componentes

Visto: 989

Comentarios   

#3 Javier 17-06-2017 15:20
¡Muchas gracias! Intentaré seguir publicando artículos interesantes. Tengo en mente otro cluster para Apache spark usando Orange Pi Win. ¡Un saludo!
Citar
#2 caracolgeek 17-06-2017 13:05
Realmente me ha parecido muy interesante tu proyecto.
Voy a seguir leyéndote. Gracias.
Citar
#1 Linux.Ca 16-05-2017 11:02
Way cool! Some very valid points! I appreciate you penning this article plus the rest of
the website is very good.

Also visiot my web-site - Linux.Ca: http://www.linux.ca
Citar

Escribir un comentario


Código de seguridad
Refescar