ZYLK logra servicios de IoT optimizados con la optimización de APISIX
May 26, 2023
Resumen
Alfonso González es un desarrollador de IA e IoT en ZYLK, líder en la optimización de soluciones de código abierto y en la impulsión de la transformación digital en España. Alfonso compartió su experiencia sobre cómo ZYLK utilizó APISIX para comunicaciones MQTT e implementó ciberseguridad en esta implementación. Dijo: "Seguro, confiable y de alto rendimiento, APISIX es probablemente la mejor puerta de enlace para APIs".
Desafíos
- Problemas relacionados con el enrutamiento MQTT, la red de K8S y la comunicación HTTP.
- Gestionar y mantener cada punto final accesible y el enrutamiento era un desafío, lo que resultó en costos significativos de tiempo y esfuerzo.
- Acomodar nuevos usuarios en la red era complicado, ya que necesitaban familiarizarse con toda la arquitectura antes de acceder a cualquier servicio o punto final.
Resultados
- ZYLK resolvió sus problemas de comunicación HTTP y MQTT implementando APISIX.
- ZYLK utilizó APISIX como un proxy TCP para crear una ruta de transmisión segura desde Raspberry Pi al sistema de colas RabbitMQ en la nube, asegurando la confidencialidad e integridad de la transmisión de datos.
- ZYLK experimentó mejoras significativas en su infraestructura, haciéndola más amigable para el usuario, lo que resultó en ahorros sustanciales de tiempo y esfuerzo y, en última instancia, en una mayor productividad.
Información de fondo
ZYLK es una consultoría de TI con experiencia en Big Data, portales y sitios web de Liferay, e Inteligencia Artificial durante más de 15 años. La empresa ha sido pionera en la optimización de soluciones de código abierto y en la impulsión de la transformación digital para diversos clientes, incluyendo empresas privadas, administraciones públicas y organismos gubernamentales en España y Europa desde 2004.
ZYLK depende exclusivamente de software de código abierto para proporcionar soluciones, ya que creen que el software de código abierto ofrece numerosas ventajas sobre las alternativas propietarias, como rentabilidad, flexibilidad, transparencia y soporte comunitario. Antes de implementar APISIX, el equipo tenía que manejar sus comunicaciones punto por punto y hacer referencia directa a cada punto final desde el cliente. Esto llevó a costos significativos de tiempo y esfuerzo asociados con la gestión y mantenimiento de cada punto final accesible y el enrutamiento.
Los principales puntos de dolor del proceso anterior incluían acomodar nuevos usuarios en la red que tenían que familiarizarse con toda la arquitectura antes de acceder a cualquier servicio o punto final. Además, el equipo enfrentó problemas de enrutamiento MQTT, problemas relacionados con la red de K8S y problemas de comunicación HTTP.
Selección técnica
ZYLK trabajó completamente con software de código abierto, incluyendo muchos proyectos de Apache. Por lo tanto, una solución de Apache sería ideal para probar al buscar una puerta de enlace de API. Después de buscar una solución a sus problemas durante aproximadamente seis meses y compararla con Kong Gateway y HAProxy, ZYLK finalmente eligió implementar APISIX. Las razones son las siguientes:
1. APISIX es más simple y tiene complementos de seguridad más completos con un panel de control fácil de usar.
APISIX proporciona una interfaz sencilla y fácil de usar con un conjunto completo de complementos de seguridad, lo que facilita a los usuarios gestionar y asegurar su puerta de enlace de API. El panel de control fácil de usar también permite una configuración y gestión más sencilla de la puerta de enlace de API.
2. APISIX tiene soporte para múltiples protocolos, no solo HTTP.
APISIX admite una amplia gama de protocolos, lo que lo convierte en una herramienta versátil para gestionar diferentes tipos de tráfico de API. Esta flexibilidad permite a los usuarios gestionar todo su tráfico de API en un solo lugar, simplificando su infraestructura y reduciendo la complejidad.
3. APISIX tiene la capacidad de redirigir mensajes MQTT entrantes con mTLS entre el cliente y el servidor.
El soporte de APISIX para mensajería MQTT y cifrado mTLS proporciona una capa adicional de seguridad para la comunicación entre clientes y servidores. Con esta función, los mensajes MQTT entrantes pueden redirigirse de manera segura a través de APISIX, asegurando que estén cifrados y autenticados antes de llegar a su destino. Esto mejora la seguridad general del sistema y protege la información sensible de accesos no autorizados o manipulaciones.
APISIX demostró ser una adición valiosa a las soluciones de ZYLK, proporcionando una forma más simple y segura de gestionar sus necesidades de puerta de enlace de API.
Introducción a la arquitectura
1. Dispositivos industriales: los PLCs registran datos de maquinaria de control climático (en edificios remotos)
En primer lugar, el enfoque está en los dispositivos industriales como los PLCs, que se utilizan para registrar datos generados por maquinaria de control climático. El sistema de control climático se encuentra en un edificio remoto, que se considera la infraestructura de computación en el borde. Los datos generados por estos dispositivos deben almacenarse en los servidores en la nube. La nube tiene dos partes que comparten datos entre sí, y los datos están conectados por protocolos industriales.
2. Protocolos industriales: Modbus y BACnet se utilizan para leer datos de los PLCs
Para leer los datos directamente de los PLCs, se utilizan módulos en BACnet. ZYLK planea traducir estos módulos y la información de BACnet a TCP para facilitar su gestión. Una vez que los datos están en un formato adecuado, se envían a los servidores en la nube utilizando MQTT. Aunque MQTT es sencillo de usar para dispositivos IoT, lidiar con él en la nube ha presentado algunos desafíos para ZYLK, particularmente en lo que respecta a la implementación de medidas de ciberseguridad.
3. Comunicación MQTT: se realiza la conversión TCP y los datos se envían a un servidor en la nube a través de MQTT
ZYLK utiliza APISIX como su solución para comunicaciones MQTT seguras en su caso de uso. Los datos generados por la maquinaria de aire acondicionado industrial son recopilados por los PLCs y traducidos al lenguaje TCP por una puerta de enlace TCP para Modbus, luego se envían a un Raspberry Pi. Los datos deben enviarse a través del protocolo MQTT para llegar a un sistema de colas, que podría ser Mosquitto o RabbitMQ, y ZYLK utiliza APISIX para lograrlo.
El objetivo de almacenar estos datos es tener registros históricos del funcionamiento de la maquinaria, que se utilizan para construir modelos de aprendizaje automático en la nube. ZYLK utiliza modelos NTL para entrenar y alimentarse de estos datos. La infraestructura en el borde se construye utilizando un diagrama simple, con la maquinaria de aire acondicionado industrial generando datos a la izquierda y siendo recopilados por los PLCs.
El Raspberry Pi estaba enviando mensajes MQTT de manera no segura, lo que representaba un problema para ZYLK, ya que necesitaban que los mensajes fueran seguros, al menos desde APISIX hacia el exterior, porque el Raspberry Pi se encuentra en un edificio remoto. A ZYLK no le importaba tanto la seguridad una vez que los mensajes llegaban a APISIX porque el sistema de colas, RabbitMQ, estaba ubicado en su propio servidor. Sin embargo, asegurar la primera parte de la comunicación era crucial para garantizar la ciberseguridad y los mensajes cifrados.
4. Modelos de ML: Una vez en la nube, los datos se almacenan y se utilizan para entrenar y alimentar modelos LSTM
Finalmente, en la nube, hay un clúster de Kubernetes con la base de datos NIFI. Los datos generados por los dispositivos industriales se almacenan en la nube y se utilizan para entrenar y alimentar modelos LSTM.
Proceso de implementación
Paso 1: Habilitar el complemento
ZYLK describe los pasos que siguieron para habilitar APISIX para que funcione como un proxy TCP y crear una ruta de transmisión desde APISIX al sistema de colas RabbitMQ. Primero, habilitaron el complemento de proxy MQTT descomentando algunas líneas en el archivo de configuración y permitiendo que el puerto especificado funcione como un proceso de transmisión para mensajes TCP. Es importante tener en cuenta que, al configurar esto, aún podían usar todas las demás funciones de APISIX y trabajar con APIs REST y el protocolo HTTP sin problemas.
Paso 2: Crear la ruta de transmisión
A continuación, ZYLK creó la ruta de transmisión utilizando un objeto especial en APISIX que es similar a las carreteras pero no aparece en el panel de control. Utilizaron un comando simple para especificar el complemento que estaban usando, el nombre y la versión del protocolo MQTT, y el SNI (indicación del nombre del servidor) para que coincida con su certificado para una comunicación segura. Especificaron el nodo ascendente que aloja el servicio RabbitMQ o cualquier otro sistema de colas de mensajes que prefirieran usar. Habilitar APISIX como un proxy TCP y configurar rutas ascendentes permitió a ZYLK enviar mensajes MQTT de manera segura desde el Raspberry Pi al sistema de colas RabbitMQ en la nube. Esto aseguró la ciberseguridad y los mensajes cifrados necesarios para su caso de uso. La capacidad de seguir utilizando otras funciones de APISIX y trabajar con APIs REST y el protocolo HTTP hizo que la solución fuera flexible y adaptable a sus necesidades. ZYLK ha probado con éxito su solución con el intermediario Mosquitto y ha encontrado que funciona perfectamente.
Paso 3: Firmar y cargar certificados
Después de crear la ruta de transmisión, el siguiente paso fue crear y firmar certificados y cargarlos en la instancia de APISIX. Utilizaron un script de Python para crear objetos SSL con el certificado, la clave y el SNI, asegurándose de que el SNI coincidiera con el especificado en la ruta de transmisión.
ZYLK enfatiza la importancia de asegurarse de que el SNI sea correcto. Una vez que los certificados se cargaron, se estableció TLS mutuo entre el cliente y el servidor, con ambos mostrando sus certificados. Con esta configuración, ZYLK tenía una comunicación segura desde APISIX hacia el exterior. También podían cifrar la comunicación entre APISIX y su nodo ascendente si fuera necesario, pero optaron por dejarla sin cifrar. ZYLK ha utilizado APISIX para otros usos y ha encontrado que el complemento les proporcionó funcionalidad adicional. Redirigieron el tráfico entrante a intermediarios MQTT, utilizando un ID de cliente para dividir los mensajes en diferentes temas si fuera necesario. Y la autenticación MQTT también era posible.
El uso de APISIX y MQTT permitió a ZYLK resolver problemas únicos y expandir sus capacidades más allá de los problemas típicos relacionados con HTTP. Al crear un canal de comunicación seguro, pudieron almacenar y analizar datos generados por equipos industriales y utilizarlos para entrenar modelos de aprendizaje automático para el mantenimiento predictivo.
Logros después de usar APISIX
ZYLK respalda firmemente APISIX y está muy dispuesto a recomendarlo a sus socios comerciales. Al describir APISIX a un amigo, Alfonso González diría: "APISIX es un servicio de puerta de enlace de API de Apache que proporciona muchas funciones para el enrutamiento, incluyendo autenticación, limitación de tasa y trazabilidad". Alfonso cree que APISIX es la mejor puerta de enlace para APIs.
El caso de uso de ZYLK involucró dispositivos industriales, protocolos industriales, comunicación MQTT y modelos de ML. Los beneficios que ZYLK obtuvo al usar APISIX incluyen:
1. Enviar mensajes MQTT de manera segura con APISIX en entornos industriales
Los dispositivos industriales como los PLCs registran datos de maquinaria de control climático, que se traducen a TCP y se envían a los servidores en la nube utilizando MQTT. APISIX se utilizó para enviar mensajes MQTT de manera segura desde el Raspberry Pi al sistema de colas RabbitMQ en la nube, asegurando la ciberseguridad y los mensajes cifrados necesarios para su caso de uso.
2. Habilitar comunicación segura con el complemento de proxy MQTT y TLS mutuo
ZYLK habilitó el complemento de proxy MQTT y creó una ruta de transmisión utilizando un objeto especial en APISIX. También firmaron y cargaron certificados con un script de Python, asegurándose de que el SNI coincidiera con el especificado en la ruta de transmisión. Al establecer TLS mutuo entre el cliente y el servidor, ZYLK pudo tener una comunicación segura desde APISIX hacia el exterior.
3. Expandir capacidades con APISIX
La implementación exitosa de APISIX y MQTT permitió a ZYLK resolver problemas únicos y expandir sus capacidades más allá de los problemas típicos relacionados con HTTP. Pudieron almacenar y analizar datos generados por equipos industriales y utilizarlos para entrenar modelos de aprendizaje automático para el mantenimiento predictivo.
ZYLK está comprometido a mantenerse a la vanguardia de su industria y proporcionar a sus clientes las mejores soluciones posibles. A medida que continúan enfrentando los desafíos del futuro, sin duda encontrarán nuevas e innovadoras formas de aprovechar tecnologías como APISIX para alcanzar sus objetivos.
Resumen
Antes de implementar APISIX, ZYLK tenía que gestionar sus comunicaciones punto por punto, lo que consumía mucho tiempo y era ineficiente. Enfrentaron varios problemas relacionados con el enrutamiento MQTT, la red de K8S y la comunicación HTTP.
Después de investigar varias soluciones de puerta de enlace de API, ZYLK finalmente eligió implementar APISIX debido a sus características de seguridad completas, su panel de control fácil de usar y su simplicidad. Con APISIX, ZYLK pudo exponer de manera segura un puerto del enrutador para comunicaciones de mensajería MQTT y enrutamiento interno de API. También pudieron redirigir mensajes MQTT entrantes con mTLS entre el cliente y el servidor. ZYLK también experimentó mejoras significativas en su infraestructura, lo que resultó en ahorros de tiempo y esfuerzo.
En términos de objetivos futuros, ZYLK ve la ciberseguridad, la convergencia de TI y OT, y el aprendizaje profundo explicable como los mayores desafíos en el horizonte para su industria. En los próximos seis meses, el equipo planea continuar trabajando en proyectos de I+D y desarrollar su propio servicio de IoT.