Arquitectura Edge
Introducción
La implementación de IoT/Edge híbrido en la plataforma Onesait se basa en la colaboración de los dos componentes, Edge Engine como arquitectura que se despliega en los distintos nodos distribuidos y en el Edge Management system, siendo este el centro global de gestión de toda esta infraestructura.
El siguiente diagrama representa los componentes implicados en Onesait Edge, los cuales aportan las capacidades necesarias para disponer de una gestión completa de los dispositivos desplegados en campo con diversas funcionalidades aportadas por el agente.
Console Onesait Edge: Componente global de gestión de nodos distribuidos que permite (i) el alta/baja de dispositivos, (ii) comunicación segura con los nodos incluida la atestación del dispositivo, (ii) la gestión de un repositorio remoto de configuración de los Edge Engine remotos, (iii) la realización de operaciones de actualización de configuraciones y aplicaciones desplegadas y la (iv) gestión remota con consola de operación ssh.
Edge Engine: Conjunto de capacidades desplegadas en los gateways mediante contenedores, gestionado por el agente desplegado nos permite: control de nodo remoto, adquisición de información y monitorización, procesamiento local de la información así como la conectividad con la cloud final de negocio y escalabilidad.
Field Device: El Phygitial Edge dispone de capacidades para la conexión con múltiples dispositivos, los cuales permiten una gestión remota limitada y no disponen de capacidades para el despliegue de aplicaciones, como sensores autonomos de comunicación 3G.
Vista de componentes
Console Onesait Edge:
IoT Broker (EMQX): Broker de comunicación principal entre los gateways desplegados y la plataforma, mediante comunicaciones MQTT se recupera toda la información desde campo y donde posteriormente se distribuye a las plataformas de negocio integradas.
Minsait Edge Core: Elemento principal del sistema, encargado de la gestión y comunicación de los dispositivos, es el centro del control del Onesait Edge.
Consola de gestión de Onesait EdgeKey Managment System (KMS): Sistema de administración de claves, donde se generan las claves para la autenticación de los dispositivos y al mismo tiempo se proporciona una interfaz para control de las mismas.
Monitoring: Sistema de monitorización de las comunicaciones en los entornos, basado en Grafana y prometheus, el cual almacenas las estadísticas del broker y proporcionando una infertaz amigable para el usuario final.
Registry: encargado de almacenar todas las imágenes DOCKER que serán descargadas por los dispositivos que tengan la posibilidad de descargar el agente en el dispositivo IOT.
La razón de incorporar un registry a IOTEdge es la centralización de todos los componentes que se podrán instalar en los distintos dispositivos. Entendiendo como componentes aquellos contenedores destinados a realizar una labor en concreto como puede ser la monitorización de dispositivos MODBUS, ZIGBEE, etc
Proxy Reverso: El proxy reverso es el encargado de filtrar todas las peticiones que se realizan al Onesait Edge utilizando para ello el componente de seguridad. Además asigna un contexto web a cada uno de los servicios incluidos dentro de la aplicación, por lo que por ejemplo tenemos el contexto /grafana para el servicio de grafana dentro Onesait Edge.
SSH Reverso: El propio Onesait Edge permite la gestión del servidor de Salto que permite la conexión web entre los dispositivos y Onesait Edge. Este servidor hace de intermediario entre los dispositivos que se encuentran en cualquier parte del mundo y Onesait Edge.
La configuración de este servidor de salto se hace desde la propia página web de Onesait Edge en el apartado de configuración:
Edge Engine
IoTa:El agente conocido como IoTa, admite despliegues sobre distintas arquitecturas hardware con los requisitos de componentes definidos, adicionalmente, puede ser instalado sobre VMs que empleen hipervisores (tipo 1 o tipo 2) Vmware (ESXi,Player, Station), KVM, VirtualBox, MS-Hyper-V y Windows 10 WSL2 y sobre las que se hayan desplegado los requisitos.
Las principales funcionalidades del Agente Edge son las siguientes:
Inicia y gestiona (en caso de desconexión) el canal que permite el flujo de la información de comando y control desde el Edge Management System soportado con MQTT/TLS. La apertura TLS se realiza con los certificados desplegados en la instalación.
Comunica el nodo egde con módulos internos de IOT HUB, en concreto, el Registro de Imágenes Docker y el Git de repositorios de configuración.
Procesa todos los comandos envidos desde IOT HUB:
Comandos de tunneling inverso para SSH, monitorización e información, de estado hardware y estado software del nodo edge.
Comandos de actualización de configuración docker-compose y Ansible para modificar/desplegar aplicaciones (contenedores en el nodo edge).
Comandos directos con scripting de OS que permiten el update de librerías, la aplicación de parches o el control a bajo nivel de elementos hardware (ej.- modem 4G).
Módulos Edge:Aplicaciones desplegadas en los gateways que proporcionan mayor gestión y capacidades a los dispositivos, ampliable y evolucinable gracias a su gestión mediante contenedores docker, entre las principales encontramos:
Edge MQTT: servicio soportado por el broker Mosquitto. En este servicio, todos los eventos producidos por el resto de aplicaciones son volcados y quedan disponibles para posteriores procesos. La configuración de este componente se puede hacer de forma local al nodo o de forma remota gracias a las capacidades de IOT HUB.
Edge Database: servicio que está soportado por la tecnología de la TickTack stack de InfluxDB. Permitiendo: (i) la persistencia de los eventos publicados en el servicio interno de mensajería, (ii) su visualización, (iii) la ejecución de queries y (iv) la exportación de los mismos. La configuración de este componente se puede hacer de forma local al nodo o de forma remota gracias a las capacidades del Edge Maganament System
Edge Flow (Node-Red):Node-Red está basado en tecnología Node.js y permite la definición de flujos de reglas sobre los eventos publicados en el servicio de mensajería interna. La configuración de este componente se puede hacer de forma local al nodo o de forma remota gracias a las capacidades de IOT HUB. Dado el amplio conjunto de conectores que proporciona Node-Red, es posible emplear estos componentes como elemento SDK para la conexión a diversas.
Edge Modbus: Módulos que permiten la comunicación Modbus tanto por serie como por red, permitiendo una flexibilidad al usuario final del alta y gestión de señales.
Edge Zigbe: Módulos que permiten la gestión y alta de sistemas Zigbee como lamparas, analizadores, switch, etc.
WoT: web of things, el módulo indicado para el descubrimiento de las señales conectadas a los nodos desplegados en campo, capaz de conectar con la plataforma con una configuración básica.
Additional applications: dentro de los productos Onesait Platform se dispone adicionalmente de contenedores que ya habilitan servicios complejos, a parte de los ya definidos, como: Bacnet, OPC-UA, OPC-DA, Virtual-PLC, IA-OpenVINO, etc.
Security
El Phygitial Edge dispone de un registro de identidad que almacena información sobre los dispositivos y módulos a los que se les permite conectarse. Antes de que un dispositivo o módulo pueda conectarse, debe haber una entrada para ese dispositivo o módulo en el registro de identidad del sistema.
Un dispositivo o módulo se autentica contra el Edge Management System en función de las credenciales almacenadas en el registro de identidad (KMS: sistema de administración de claves).
Onesait Edge permite dos métodos de autenticación entre el dispositivo y Edge Management System. Puede usar un archivo encriptado asociado a la dirección MAC del dispositivo o puede generar un par de certificados usando TPM2.0 instalado en el dispositivo y usado por el Edge Management System para crear un archivo de conexión encriptado (iotagent.enc).
Tecnologías principales
MODULE | TECHNOLOGY |
Base Technology | Java 11, Spring Boot v.2.4.5 |
Edge Console | OpenSSH, Wetty (Javascript) |
BBDD | MongoDB v.5.0 |
MQTT | EMQx v.4.2.11 |
NodeRed | Nodered (Esta puede ser cualquier versión) |
GIT | Gitea v.1.11.5 |
Proxy Reverso | Traefik v.2.2.1 |