Tech Insights

Edge Cluster: haz que tu solución IoT sea más confiable

Descubre cómo aumentar la confiabilidad en aplicaciones edge usando clústeres. Mejora la eficiencia y reduce el tiempo de inactividad.

TagoIO Team ·
Edge Cluster: haz que tu solución IoT sea más confiable

Seguramente has visto Bichos: una aventura en miniatura o cualquier otra película animada que muestra cómo la unión de partes pequeñas puede crear algo extraordinario. También puedes aplicar este concepto en el mundo de los negocios y la tecnología. Un edge cluster es un ejemplo excelente de cómo unir CPU, servidores y computadoras edge para crear un entorno de cómputo más rápido y confiable.

Como las aplicaciones IoT suelen requerir computadoras de bajo costo que procesan miles, o incluso millones, de solicitudes diarias e información de muchos dispositivos, implementar un IoT edge cluster podría resolver muchos de los retos que tu aplicación enfrente en el camino.

Aunque puedes implementar clústeres en la nube, hay numerosas razones por las que los clústeres pueden ser una opción excelente para el edge computing. Entre ellas, escalar y procesar más datos sin almacenarlos en la nube ayuda notablemente a mantener el cumplimiento normativo y la residencia de datos.

Otro factor importante es que los edge clusters pueden tener alta disponibilidad gracias a las opciones de redundancia, además de la capacidad de agregar y reemplazar nodos.

¿Qué es un clúster?

Los clústeres son grupos de nodos independientes que trabajan juntos para alcanzar un objetivo común. Los nodos son computadoras o servidores, y puedes construir un clúster usando cualquier computadora, desde el hardware más simple hasta el más avanzado.

Algo importante a tener en cuenta es que tus clústeres tienen más probabilidades de ser más resilientes y funcionar mejor si todas las computadoras tienen la misma configuración.

¿Cómo funciona?

Un sistema de clúster divide las solicitudes o tareas entre los distintos nodos, evitando que el sistema sobrecargue una sola computadora, ya que equilibrará la carga de trabajo.

El sistema de clúster ideal mantendría todas las computadoras trabajando a la misma capacidad.

En los clústeres que alojan software con arquitectura cliente-servidor, como HTTP, TCP, UDP, MQTT y Socket, normalmente debería haber un sistema de balanceo de carga frente a los nodos para orquestar las solicitudes y distribuir la carga entre todos los nodos mediante algoritmos, además de verificar la disponibilidad de los nodos.

Algunos algoritmos de clustering tienen un mecanismo de elección para elegir un nodo principal; ese nodo principal compartirá los parámetros y la configuración con los demás miembros del clúster. Es la “fuente de verdad” de todos los miembros, lo que significa que cuando cambia alguna configuración, todos los miembros deben cambiarla en consecuencia.

Diferenciando los clústeres

Hay muchos puntos de vista que puedes usar para diferenciar un clúster de computadoras de otro. Solo hablaremos de su topología, y las dos topologías de clúster más comunes en el mercado actual son la de estrella y la de malla.

Una topología de malla está compuesta por múltiples nodos que están todos interconectados entre sí; este tipo de clúster se usa cuando quieres que todos los nodos tengan la misma disponibilidad, lo que significa que si uno de ellos falla, otro tomará el control.

Una topología de estrella, por otro lado, está compuesta por un nodo líder central que conecta a todos los demás; este tipo de clúster se usa cuando quieres tener un punto de control para tu red, o si no quieres que todos tus nodos se vean afectados cuando uno de ellos falla.

Topología de clúster en malla y clúster en estrella

¿Qué busca la gente cuando usa un edge cluster?

Como se mencionó antes, los clústeres ofrecen muchas funciones que la gente busca en el edge computing. Seleccionamos cinco para hablar de ellas: balanceo de carga, alta disponibilidad, alto rendimiento, redundancia y escalabilidad.

Balanceo de carga del clúster

El balanceo de carga es una tecnología que distribuye la carga de trabajo de manera uniforme entre todos los nodos de un sistema; garantiza que ningún nodo se sobrecargue, algo que es fundamental.

Hay muchos algoritmos y técnicas de balanceo de carga disponibles en el mercado. Algunos ejemplos serían:

  • Round-robin: el más básico; las solicitudes se distribuyen de forma secuencial entre el grupo de servidores.

  • Basado en recursos: este usa software especializado en cada nodo para verificar la CPU y la memoria disponibles y así elegir el mejor.

  • Tiempo de respuesta ponderado: este algoritmo elige el nodo que responde más rápido a una verificación de estado.

  • Menos conexiones: como sugiere el nombre, el sistema envía las solicitudes al nodo que tiene la menor cantidad de conexiones.

  • Aleatorio: una vez más, el nombre lo dice todo. Este algoritmo distribuye las solicitudes de forma aleatoria, pero uniforme, entre los nodos.

Alta disponibilidad

Uno de los propósitos de los clústeres es ofrecer una alta disponibilidad de los servicios. Si algún nodo o servidor falla, los demás seguirán trabajando para mantener el servicio en funcionamiento. Esta cualidad suele ser esencial en aplicaciones críticas.

Alto rendimiento

Un resultado lógico de usar cinco computadoras para hacer el trabajo de una es aumentar el rendimiento. Los entornos edge aprovecharán esto, ya que el hardware suele ser más limitado y, en algunos casos, no pueden procesar datos en la nube.

Redundancia

Esta es curiosa, porque incluso si tu sistema no necesita las demás funciones presentadas, podría necesitar esta. Cuando una parte de tu aplicación es vital o no debe detenerse por ningún motivo, contar con un sistema de clúster puede ser una solución viable. Si uno de los nodos falla, el sistema de balanceo de carga dirigirá la solicitud, o los datos, a otra computadora.

Escalabilidad

La escalabilidad es la capacidad de un sistema para aumentar o disminuir su capacidad según lo requiera la demanda. Es probablemente una de las principales razones por las que la gente usa clústeres, ya que están compuestos por múltiples nodos que se pueden agregar o quitar sin afectar la disponibilidad del servicio.

Implementar un IoT edge cluster

La escalabilidad, la alta redundancia, el alto rendimiento y la alta disponibilidad son todas razones excelentes para implementar un clúster dentro de tu aplicación IoT, pero ¿cómo se hace?

El primer paso es entender cuáles son tus requisitos específicos. En este caso, necesitamos un sistema donde cualquier nodo pueda procesar datos y solicitudes de forma independiente. También necesitamos una forma de seguir agregando nodos a medida que nuestra aplicación crece sin afectar su disponibilidad.

Hemos implementado un clúster dentro de los laboratorios de TagoIO. La imagen de abajo muestra nuestro clúster con tres ROCK PI 4 que funcionan como nodos ejecutando TagoCore y una Raspberry Pi que ejecuta un balanceador de carga (Nginx) y que además es un gateway LoRa.

Clúster ROCK PI 4 en la oficina de TagoIO

El modo clúster de TagoCore usa TagoIO como “nodo principal”. Ninguna solicitud de dispositivo se enviará a la nube, y el clúster solo usa el servicio de TagoIO para sincronizar la configuración y como puente de mensajes entre los nodos. Es extraordinariamente fácil desplegar un clúster en el edge; mira el diagrama de abajo:

Diagrama de clúster usando TagoCore

¿Cómo puede ayudar TagoIO?

Cuando ejecutas TagoCore como un clúster, todas las instancias están sincronizadas, lo que significa que cuando instalas un plugin en una instancia, todas las demás instancias también lo instalarán. Si cambias alguna configuración, esa configuración se replicará en cada nodo de tu clúster también.

IoT edge cluster con TagoCore

Con la función de clúster de TagoCore, el servicio en la nube de TagoIO se encarga de administrar y sincronizar cada instancia de tu clúster. Esto facilita desplegar un clúster en cualquier lugar sin el dolor de cabeza de configurar y mantener la infraestructura del clúster. Cada nueva instancia que inicies usando la función de clúster se sincronizará y estará lista para empezar a recibir solicitudes.

Además, la instancia no necesita estar en la misma infraestructura, lo que significa que puedes distribuir fácilmente la instancia de tu clúster entre regiones y diferentes máquinas en la nube o en las instalaciones.

Como ninguna solicitud de dispositivo se reenvía a la nube de TagoIO, deberás configurar un balanceador de carga por tu cuenta. Para ello, puedes usar el servicio Apache, Nginx, AWS ELB y otros.

¿Quieres saber más?

Para más información sobre TagoCore, revisa nuestro webinar “Installing and Configuring TagoCore on edge devices” y visita la página de TagoCore.

Los usuarios de TagoCore pueden implementar sin esfuerzo un clúster dentro de su entorno IoT en sus instalaciones, así que aprovecha nuestra plataforma de código abierto con funciones de clúster. ¿Quieres ir aún más lejos? Muestra los datos recopilados con tus instancias de TagoCore en dashboards usando la plataforma en la nube de TagoIO o distribúyelos a tus clientes con TagoRUN, nuestra plataforma de marca blanca, sin almacenar los datos de los dispositivos en la nube.

Solo con TagoCore tienes control de los datos, seguridad, privacidad, confiabilidad y facilidad de uso. Y por si fuera poco, es de código abierto.