Texto copiado
HomeBlog Docker MQTT Composición

Gestión eficaz de la producción de IoT con Docker MQTT Server

por Ponlakshmi


docker mqtt broker

A partir de 2024, millones de aplicaciones de IoT están corriendo en la nube. Más del 50% de los despliegues Implementaciones basadas en la nube que prevén conectividad y escalabilidad de gran escala. MQTT Broker no es el único componente de un despliegue de IoT. Tenemos muchos componentes adicionales como colas, almacenamiento de datos, motor de agregación de datos, IA/ML, herramientas de monitoreo y más según sea necesario para la solución. Gestionar tal combinación de aplicaciones hablando entre sí para la recopilación, procesamiento y la visualización necesita una orquestación mejor y perfecta. Docker es una gran herramienta que está disponible Libre y de código abierto.

Composito de muelles para MQTT Broker

El componente básico del despliegue de IoT es elMQTT Servidor. Hay dos maneras de usar la misma.


  • Usarlo como un Broker Central de MQTT - Sólo se utilizará para el intercambio de datos. ElIoT ApplicationLo haré. ser desplegado en el borde más como los otros clientes, y la aplicación Host se suscribe a todos los temas e intercambiará datos más como los otros clientes.
  • Usarlo con elDatos separados de IoT Almacenamiento- La aplicación MQTT se integrará en la MQTT Broker o estará detrás de MQTT Interruptor de comunicación más desde una perspectiva de datos y colas entre la Aplicación y el MQTT Broker.

Para ambas formas de ejecutar la creación del docker es muy similar excepto para algunas configuraciones para el almacenamiento de datos o la conexión a la aplicación backend.


Esta sección le ayuda a configurar un entorno docker MQTT Server con un almacenamiento de datos en una base de datos relacional. Hemos tomado un despliegue basado en ubuntu como ejemplo para desplegar elMQTT Broker. Sin embargo esto se puede hacer con el otro sistema operativo también.


Prerrequisitos

  • Ubuntu
  • Docker
  • Mysql - si planea almacenar datos en la base de datos. Las instrucciones ejecutarán MySQL en el físico vm en sí mismo. Sin embargo, se puede desplegar dentro del docker según sea necesario o Amazon RDS tipo de tiendas de datos se pueden utilizar.

Configuración del MySQL

Le recomendamosMySQLpara ser ejecutado en una máquina física que una sección para el propósito de persistencia de datos. Siga las instrucciones siguientes para configurar el MySQL. Tiene que instalar el servidor MySQL primero.

$ sudo apt-get update
$ sudo apt-get install -y mysql-server-5.7

Modifique la configuración MySQL. Por defecto el mysql funciona a 127.0.0.1 y permite sólo el local aplicación para conectarse a ella. Puede cambiarlo como 0.0.0.0 para la aplicación que se ejecuta en secciones y otras máquinas para acceder a MySQL.

$ gedit /etc/mysql/mysql.conf.d/mysqld.cnf
dirección bind = 0,00,0

Reinicie el MySQL para que los cambios surtan efecto.

$ servicio de sudo mysql reinicio

Proporcionar acceso a los datos:El usuario raíz de MySQL tiene acceso sólo a la máquina local para leer y escribir datos en las bases de datos. Necesitamos permitir que el usuario root acceda a los datos de la sección. Conéctese a la consola MySQL del localhost y ejecute las siguientes consultas.


Mysql -u root -pIntroduzca la contraseña:
mysqlTODOS LOS PRIVILEGADOS EN *.* A ‘root’@’% IDENTIFIED BY ‘root ’ CON LA OPCIÓN DE LA GRANTA;
mysqlFLUSH PRIVILEGES


Su servidor MySQL está listo para conectarse desde cualquier sección que se ejecuta en su servidor Ubuntu.

Creando el Broker MQTT de Docker

Docker necesita ser instalado en su ubuntu para crear la imagen del docker de laMQTT Brokery también ejecute el Bróker MQTT dockerizado. Para instalar el Docker, ejecute el siguiente comando.


$ apt-get install docker. io

Descargar Free MQTT Brokerpara Ubuntu y Extraigalo de su carpeta /home/ubuntu. Si está extrayendo el archivo de alguna otra carpeta, asegúrese de utilizar la carpeta de referencia correcta


ubuntu@Unzip Bevywise_CrystalMQ_Linux.zip

Modificar la configuración de laMQTT Broker para Enlace MySQL


$ cd /home/ubuntu/Bevywise/CrystalMQ
$ gedit conf/datastore.conf

DB_SERVER = MYSQL
DBHOST= detectmysql host ip
MYSQL_USER=
MYSQL_PASSWORD = >

Crear el archivo del docker


Gedit DockerfileDESDE ubuntu

RUN apt-get update " apt-get install -y \
libexpat1 \
libsqlite3-0 \
wget \
unzip

RUN rm -rf /var/lib/apt/lists/*

ADD ./CrystalMQ / CristalMQ

RUN chmod +x /CrystalMQ/bin/runbroker.sh
RUN chmod +x /CrystalMQ/bin/install_mysql_connector.sh
WORKDIR /CrystalMQ/bin

RUN ./install_mysql_connector.sh

EXPOSE 1883 8080 8883 10443 8081

CMD [./runbroker.sh]

Construir la imagen del docker


# Docker construye -t mqttroute .

Verificar & Run Docker MQTT Broker

# Docker images

root@ubuntu # docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
mqtt último 45f7ee9a1ec7 Hace 7 segundos 81.15 MB
ubuntu latest 7feff7652c69 hace 4 semanas 81.15 MB

Empieza a usar el comando docker. El siguiente comando ejecutará el MQTT Broker como un proceso de daemon. Si usted está planeando ejecutar MQTT Broker en un modo seguro, el documento sobreUn servidor mqtt segurote ayudará a crear una instancia segura y luego empaquetarla con el muelle.


$ docker run -d --name "enter-container-name" --restart=always -p "80:8080" "Intro-docker-image-name"

Nota: Si ha utilizado un puerto diferente en lugar de 8080, simplemente reemplace el número de puerto en el comando anterior.


A continuación hay un Docker descargable Archivo de imagen de nuestro MQTT Broker, que proporciona todos los recursos necesarios, lo que permite configurar y ejecutar fácilmente Docker a través de un proceso sencillo.



Nota:El Docker Descargable Configuración de imagen solo admite Base de datos SQLite, y los datos no serán almacenados; sólo puede ver los datos en tiempo real.


Después de descargar, ejecute el siguiente comando para descomprimir el archivo y prepararlo para la extracción:


bzip2 -d route.tar.bz2


Luego ejecute el siguiente comando para cargar los recursos necesarios en el sistema Docker.


docker load -i "file.tar"


A continuación, puede proceder ejecutando Docker con el siguiente comando:


$ docker run -d --name "enter-container-name" --restart=always -p "80:8080" "Intro-docker-image-name"


Nota: Si ha utilizado un puerto diferente en lugar de 8080, simplemente reemplace el número de puerto en el comando anterior.

Almacenamiento de datos " Buenas prácticas en entorno Docker

MQTT Broker por defecto admite un número de almacenamiento de bases de datos como MySQL, MSSQL, PYSQL, SQLITE, Elastic Búsqueda. Cualquiera de estos almacenamientos de datos IoT puede ser habilitado en el propio archivo de configuración de almacenamiento de datos. In Además de estos almacenamientos, podemos personalizar el requisito de almacenamiento adicional utilizando elPython MQTT Broker personalizado extensospara transformar los datos en el formato según sea necesario antes del almacenamiento. Estas extensiones personalizadas también se puede utilizar para conectar estos datos a las colas o aplicaciones empresariales.


El almacenamiento de datos o la cola o cualquier otra aplicación que reciba o envíe datos al MQTT Broker debe ser colocado fuera de la imagen del docker. Si su otro componente es una cola o aplicación que no almacena datos, puedes correr eso también en un muelle. Si se está conectando a una base de datos o a un motor de datos grande, entonces tiene que se ejecuta en un servidor físico o virtual con almacenamiento persistente. Se recomienda utilizar el almacenamiento como un servicio como Amazon RDS para un mejor y seguro almacenamiento de datos.

Funcionamiento de MQTT Server ( Plataforma IoT) Componentes en Docker & Kubernetes

Solution provider IoT Platformes un multi-tenant framework and it is based on the micro services based architecture. Cada componente del marco se puede ejecutar en un contenedor de muelles y desplegado en los servidores Físicos o VM en la nube o en la premisa. el dockerized componentes de los MQTT Server se puede desplegar en los kubernetes. El despliegue en este caso se hará por nosotros. Los scrips completos de vigilancia para los componentes, incluyendo el monitoreo funcional y la aplicación será desplegado y puede ser monitoreado por su Equipo Dev-ops sobre la consola de la interfaz de usuario web.

Cómo Docker ayuda a MQTT ¿Desplegaciones de corredores?

Containerizationayuda a ejecutar la aplicación en aislamiento independiente de la Sistema operativo del servidor físico o VM haciendo elMQTT Serverun entorno virtual predefinido dando un mayor nivel de consistencia. A medida que el VM dockerized consume menos memoria, la aplicación general seráaltamente escalable y portátil. La combinación de docker y kubernetes hará la lapso de implementación a través de múltiples VM mantiene el control sobre una única orquestación para una gestión fácil.

Docker compose para MQTT

Escalando su despliegue de MQTT

Vamos a colaborar