Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:
IoT Edge 1.5
Importante
IoT Edge 1.5 LTS es la versión compatible. IoT Edge 1.4 LTS alcanzó el final del ciclo de vida el 12 de noviembre de 2024. Si usa una versión anterior, consulte Update IoT Edge.
Implemente Azure IoT Edge nodos en redes organizadas en capas jerárquicas. Cada capa de una jerarquía es un dispositivo de puerta de enlace que controla los mensajes y las solicitudes de los dispositivos de la capa que se encuentra debajo. Esta configuración también se conoce como perímetro anidado.
Estructura una jerarquía de dispositivos para que solo la capa superior tenga conectividad con la nube y las capas inferiores solo pueden comunicarse con capas ascendentes y descendentes adyacentes. Estas capas de red constituyen la base de la mayoría de las redes industriales que siguen la norma ISA-95.
En este tutorial se muestra cómo crear una jerarquía de dispositivos IoT Edge, implementar IoT Edge contenedores en tiempo de ejecución en los dispositivos y configurar los dispositivos localmente. En este tutorial, realiza las siguientes tareas:
- Cree y defina las relaciones en una jerarquía de dispositivos IoT Edge.
- Configure el entorno de ejecución de IoT Edge en los dispositivos de la jerarquía.
- Instalar certificados coherentes en la jerarquía de dispositivos.
- Agregar cargas de trabajo a los dispositivos de la jerarquía.
- Use el módulo proxy de API IoT Edge para enrutar de forma segura el tráfico HTTP a través de un único puerto desde los dispositivos de nivel inferior.
Sugerencia
En este tutorial se incluye una combinación de pasos manuales y automatizados para proporcionar una presentación de las características integradas de IoT Edge.
Si prefiere una visión completamente automatizada de la configuración de una jerarquía de dispositivos IoT Edge, siga el ejemplo de Azure IoT Edge para IoT industrial con scripts. Este escenario con script implementa Azure máquinas virtuales como dispositivos preconfigurados para simular un entorno de fábrica.
Si desea obtener un vistazo detallado a los pasos manuales para crear y administrar una jerarquía de dispositivos IoT Edge, consulte la guía sobre cómo crear jerarquías de puertas de enlace de dispositivos IoT Edge.
En este tutorial, se definen los siguientes niveles de red:
Capa superior: los dispositivos IoT Edge de esta capa pueden conectarse directamente a la nube.
Capas inferiores: dispositivos IoT Edge en capas inferiores a la capa superior no se pueden conectar directamente a la nube. Deben pasar por uno o varios dispositivos intermedios IoT Edge para enviar y recibir datos.
En este tutorial se usa una jerarquía de dos dispositivos para simplificar. El dispositivo de la capa superior representa un dispositivo en la capa superior de la jerarquía, que se puede conectar directamente a la nube. Este dispositivo se denomina dispositivo primario. El dispositivo de la capa inferior representa un dispositivo en la capa inferior de la jerarquía que no se puede conectar directamente a la nube. Agregue más dispositivos para representar el entorno de producción, según sea necesario. Los dispositivos en capas inferiores se denominan dispositivos secundarios.
Estructura de la jerarquía del tutorial, que contiene dos dispositivos: el de nivel superior y el de nivel inferior
Nota:
Un dispositivo secundario puede ser un dispositivo de bajada o un dispositivo de puerta de enlace en una topología anidada.
Requisitos previos
Para crear una jerarquía de dispositivos IoT Edge, necesita lo siguiente:
Un equipo (Windows o Linux) con conectividad a Internet.
Una cuenta de Azure con una suscripción válida. Si no tiene una suscripción Azure, cree una cuenta free antes de comenzar.
Un nivel gratuito o estándar IoT Hub en Azure.
Un shell de Bash en Azure Cloud Shell con Azure CLI con la extensión Azure IoT instalada. En este tutorial se usa el Azure Cloud Shell. Para ver las versiones actuales de los módulos y extensiones de Azure CLI, ejecute az version.
Dos dispositivos Linux para configurar la jerarquía. Si no tiene dispositivos disponibles, puede crear Azure máquinas virtuales para cada dispositivo de la jerarquía mediante la plantilla IoT Edge Azure Resource Manager. IoT Edge versión 1.5 está preinstalada con esta plantilla de Resource Manager. Si va a instalar IoT Edge en sus propios dispositivos, consulte Install Azure IoT Edge for Linux o Update IoT Edge.
Para simplificar la comunicación de red entre dispositivos, las máquinas virtuales deben estar en la misma red virtual o usar el emparejamiento de redes virtuales.
Asegúrese de que los siguientes puertos estén abiertos para todos los dispositivos de entrada, excepto para el dispositivo de capa inferior: 443, 5671, 8883:
- 443: se usa entre centros perimetrales primarios y secundarios para las llamadas API REST y para extraer imágenes de contenedor de Docker.
- 5671, 8883: se usan para AMQP y MQTT.
Para obtener más información, consulte cómo abrir puertos a una máquina virtual con el portal de Azure.
Sugerencia
En pasos posteriores, usará el identificador SSH y el nombre de dominio completo o la dirección IP de cada máquina virtual para la configuración, así que no debe perder de vista esta información. Puede encontrar la dirección IP y el FQDN en el portal de Azure. En el caso de la dirección IP, vaya a la lista de máquinas virtuales y anote la información del campo Dirección IP pública. Para encontrar el nombre de dominio completo, vaya a la página de información general de cada máquina virtual y busque el campo Nombre DNS. Para el identificador SSH, vaya a la página de conexión de cada máquina virtual.
Creación de la jerarquía de dispositivos IoT Edge
Los dispositivos IoT Edge componen las capas de la jerarquía. En este tutorial se crea una jerarquía de dos dispositivos IoT Edge: el dispositivo de capa top y el dispositivo de capa lower. Puede crear más dispositivos de bajada, según sea necesario.
Para crear y configurar la jerarquía de dispositivos de IoT Edge, use el comando az iot edge devices create Azure CLI. Este comando simplifica la configuración de la jerarquía gracias a la automatización y la condensación de varios pasos:
- Crea dispositivos en tu centro de IoT
- Establecimiento de las relaciones primario-secundario para autorizar la comunicación entre los dispositivos
- Aplicación del manifiesto de implementación a cada dispositivo
- Generación de una cadena de certificados para cada dispositivo con el fin de establecer una comunicación segura entre ellos
- Generación de archivos de configuración para cada dispositivo
Creación de la configuración de dispositivos
Cree un grupo de dispositivos perimetrales anidados que contenga un dispositivo primario con un dispositivo secundario. En este tutorial, se usan manifiestos de implementación de ejemplo básicos. Para ver otros ejemplos de escenarios, revise las plantillas de ejemplo configuration.
Antes de usar el comando az iot edge devices create , defina el manifiesto de implementación para los dispositivos de capa superior e inferior. Descargue el archivo de ejemplo deploymentTopLayer.json en el equipo local.
El manifiesto de implementación de dispositivos de nivel superior define el módulo proxy de API IoT Edge y declara el route desde el dispositivo de capa inferior hasta IoT Hub.
Descargue el archivo de ejemplo deploymentLowerLayer.json en el equipo local.
El manifiesto de implementación de dispositivos de capa inferior incluye el módulo de sensor de temperatura simulado y declara la ruta al dispositivo de capa superior. En la sección systemModules , los módulos en tiempo de ejecución se establecen para extraer de $upstream:443 en lugar de mcr.microsoft.com. El dispositivo de capa inferior envía solicitudes de imagen de Docker al módulo proxy de API de IoT Edge en el puerto 443, porque no puede obtener directamente las imágenes de la nube. El otro módulo implementado en el dispositivo de capa inferior, el módulo Simulated Temperature Sensor (Sensor de temperatura simulado), también realiza su solicitud de imágenes a .
Para obtener más información sobre cómo crear un manifiesto de implementación de capa inferior, consulte Connect Azure IoT Edge dispositivos para crear una jerarquía.
En Azure Cloud Shell, utilice el comando az iot edge devices create de Azure CLI para crear dispositivos en IoT Hub y paquetes de configuración para cada dispositivo de la jerarquía. Reemplace el texto del marcador de posición entre corchetes angulares por sus propios valores:
Marcador de posición Descripción nombre-del-hub Nombre del IoT Hub. config-bundle-output-path La ruta de acceso de la carpeta donde desea guardar las agrupaciones de configuración. nombre-del-dispositivo-padre Nombre del identificador de dispositivo primario de capa superior. manifiesto-de-despliegue-principal El archivo de manifiesto de implementación del dispositivo primario. parent-fqdn-or-ip Nombre de dominio completo (FQDN) o dirección IP del dispositivo primario. child-device-name El nombre del identificador de dispositivo secundario de capa inferior. child-deployment-manifest El archivo de manifiesto de implementación del dispositivo secundario. child-fqdn-or-ip Nombre de dominio completo (FQDN) o dirección IP del dispositivo secundario. az iot edge devices create \ --hub-name <hub-name> \ --output-path <config-bundle-output-path> \ --default-edge-agent "mcr.microsoft.com/azureiotedge-agent:1.5" \ --device id=<parent-device-name> \ deployment=<parent-deployment-manifest> \ hostname=<parent-fqdn-or-ip> \ --device id=child-1 \ parent=parent-1 \ deployment=<child-deployment-manifest> \ hostname=<child-fqdn-or-ip>Por ejemplo, el comando siguiente crea una jerarquía de dos dispositivos IoT Edge en IoT Hub. Un dispositivo de capa superior denominado parent-1 y un dispositivo de capa inferior denominado child-1*. El comando guarda las agrupaciones de configuración de cada dispositivo en el directorio de salida. El comando también genera certificados de prueba autofirmados y los incluye en la agrupación de configuración. Las agrupaciones de configuración se instalan en cada dispositivo mediante un script de instalación.
az iot edge devices create \ --hub-name my-iot-hub \ --output-path ./output \ --default-edge-agent "mcr.microsoft.com/azureiotedge-agent:1.5" \ --device id=parent-1 \ deployment=./deploymentTopLayer.json \ hostname=10.0.0.4 \ --device id=child-1 \ parent=parent-1 \ deployment=./deploymentLowerLayer.json \ hostname=10.1.0.4
Después de ejecutar el comando, busque los conjuntos de configuración del dispositivo en el directorio de salida. Por ejemplo:
PS C:\nested-edge\output> dir
Directory: C:\nested-edge\output
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 4/10/2023 4:12 PM 7192 child-1.tgz
-a--- 4/10/2023 4:12 PM 6851 parent-1.tgz
Use sus propios certificados y claves pasados como argumentos al comando o cree una jerarquía de dispositivos más compleja. Para obtener más información sobre cómo crear dispositivos anidados mediante el comando az, consulte az iot edge devices create. Si no está familiarizado con el modo en que se usan los certificados en un escenario de puerta de enlace, consulte la sección sobre los certificados en la guía paso a paso.
En este tutorial, usará argumentos insertados para crear los dispositivos y las agrupaciones de configuración. También puede usar un archivo de configuración en formato YAML o JSON. Para obtener un archivo de configuración de ejemplo, consulte el ejemplo sample_devices_config.yaml.
Configuración del entorno de ejecución de IoT Edge
Además del aprovisionamiento de los dispositivos, los pasos de configuración establecen una comunicación de confianza entre los dispositivos de la jerarquía mediante los certificados que ha creado antes. Los pasos también comienzan a establecer la estructura de red de la jerarquía. El dispositivo de capa superior mantiene la conectividad a Internet, lo que le permitirá extraer imágenes de su entorno de ejecución de la nube, mientras que los dispositivos de capa inferior se enrutan mediante el de capa superior para acceder a estas imágenes.
Para configurar el entorno de ejecución de IoT Edge, aplique los conjuntos de configuración a los dispositivos. Las configuraciones son diferentes para el dispositivo de capa superior y un dispositivo de capa inferior, por lo que debe asegurarse de usar el archivo de configuración adecuado para cada dispositivo.
Copie cada archivo de almacenamiento de agrupación de configuración en su dispositivo correspondiente. Puede usar una unidad USB, un servicio como Azure Key Vault o una función como Secure file copy. Elija el método que mejor se adapte a su escenario.
Por ejemplo, para enviar la agrupación de configuración de parent-1 al directorio principal de la máquina virtual parent-1, podría usar un comando como el ejemplo siguiente:
scp ./output/parent-1.tgz admin@parent-1-vm.westus.cloudapp.azure.com:~En cada dispositivo, extraiga el archivo de agrupación de configuración. Por ejemplo, use el comando tar para extraer el archivo de almacenamiento parent-1:
tar -xzf ./parent-1.tgzEstablezca el permiso de ejecución para el script de instalación.
chmod +x install.shEn cada dispositivo, ejecute el script de instalación con permiso raíz para aplicar el lote de configuración:
sudo ./install.sh
Para ver más detalles sobre los cambios en el archivo de configuración del dispositivo, consulte Conectar dispositivos Azure IoT Edge juntos para crear una jerarquía.
Para comprobar que los dispositivos estén configurados correctamente, ejecute las comprobaciones de configuración y conectividad en los dispositivos.
sudo iotedge check
admin@child-1-vm:~$ sudo iotedge check
Configuration checks (aziot-identity-service)
---------------------------------------------
√ keyd configuration is well-formed - OK
√ certd configuration is well-formed - OK
√ tpmd configuration is well-formed - OK
√ identityd configuration is well-formed - OK
√ daemon configurations up-to-date with config.toml - OK
√ identityd config toml file specifies a valid hostname - OK
√ host time is close to reference time - OK
√ preloaded certificates are valid - OK
√ keyd is running - OK
√ certd is running - OK
√ identityd is running - OK
√ read all preloaded certificates from the Certificates Service - OK
√ read all preloaded key pairs from the Keys Service - OK
√ check all EST server URLs utilize HTTPS - OK
√ ensure all preloaded certificates match preloaded private keys with the same ID - OK
Connectivity checks (aziot-identity-service)
--------------------------------------------
√ host can connect to and perform TLS handshake with iothub AMQP port - OK
√ host can connect to and perform TLS handshake with iothub HTTPS / WebSockets port - OK
√ host can connect to and perform TLS handshake with iothub MQTT port - OK
Configuration checks
--------------------
√ aziot-edged configuration is well-formed - OK
√ configuration up-to-date with config.toml - OK
√ container engine is installed and functional - OK
√ configuration has correct parent_hostname - OK
√ configuration has correct URIs for daemon mgmt endpoint - OK
√ container time is close to host time - OK
‼ DNS server - Warning
Container engine is not configured with DNS server setting, which may impact connectivity to IoT Hub.
Please see https://aka.ms/iotedge-prod-checklist-dns for best practices.
You can ignore this warning if you are setting DNS server per module in the Edge deployment.
‼ production readiness: logs policy - Warning
Container engine is not configured to rotate module logs which may cause it run out of disk space.
Please see https://aka.ms/iotedge-prod-checklist-logs for best practices.
You can ignore this warning if you are setting log policy per module in the Edge deployment.
‼ production readiness: Edge Agent's storage directory is persisted on the host filesystem - Warning
The edgeAgent module is not configured to persist its /tmp/edgeAgent directory on the host filesystem.
Data might be lost if the module is deleted or updated.
Please see https://aka.ms/iotedge-storage-host for best practices.
‼ production readiness: Edge Hub's storage directory is persisted on the host filesystem - Warning
The edgeHub module is not configured to persist its /tmp/edgeHub directory on the host filesystem.
Data might be lost if the module is deleted or updated.
Please see https://aka.ms/iotedge-storage-host for best practices.
√ Agent image is valid and can be pulled from upstream - OK
√ proxy settings are consistent in aziot-edged, aziot-identityd, moby daemon and config.toml - OK
Connectivity checks
-------------------
√ container on the default network can connect to upstream AMQP port - OK
√ container on the default network can connect to upstream HTTPS / WebSockets port - OK
√ container on the IoT Edge module network can connect to upstream AMQP port - OK
√ container on the IoT Edge module network can connect to upstream HTTPS / WebSockets port - OK
30 check(s) succeeded.
4 check(s) raised warnings. Re-run with --verbose for more details.
2 check(s) were skipped due to errors from other checks. Re-run with --verbose for more details.
En el dispositivo de capa superior, ves la salida con varias comprobaciones aprobadas. Es posible que vea algunas advertencias sobre las directivas de registro y, en función de la red, las directivas de DNS.
Implementación del módulo de dispositivo
La implementación de módulos para los dispositivos se aplica al crear los dispositivos en IoT Hub. El comando az iot edge devices create aplica los archivos JSON de implementación para los dispositivos de nivel superior e inferior. Una vez finalizada la implementación, el dispositivo de capa inferior usa el módulo IoT Edge API Proxy para obtener sus imágenes.
Además de los módulos en tiempo de ejecución IoT Edge Agent y IoT Edge Hub el dispositivo de capa top también obtiene el módulo Docker registry y IoT Edge API Proxy.
El módulo Docker registry apunta a un Azure Container Registry existente. En este caso, apunta a Microsoft Container Registry. De forma predeterminada, el módulo del Registro de Docker escucha en el puerto 5000.
El módulo IoT Edge API Proxy enruta las solicitudes HTTP a otros módulos, por lo que los dispositivos de nivel inferior pueden extraer imágenes de contenedor o insertar blobs en el almacenamiento. En este tutorial, se comunica en el puerto 443 y está configurado para enviar solicitudes de extracción de imágenes de contenedor de Docker al módulo Docker Registry en el puerto 5000. Las solicitudes de carga de Blob Storage van al módulo AzureBlobStorageonIoTEdge en el puerto 11002. Para obtener más información sobre el módulo IoT Edge API Proxy y cómo configurarlo, consulte la guía cómo hacerlo del módulo.
Para obtener información sobre cómo crear una implementación como esta en el portal de Azure o Azure Cloud Shell, consulte la sección dispositivo de capa top de la guía de procedimientos.
Vea el estado de los módulos con este comando:
az iot hub module-twin show --device-id <edge-device-id> --module-id '$edgeAgent' --hub-name <iot-hub-name> --query "properties.reported.[systemModules, modules]"
Este comando muestra todas las propiedades notificadas de edgeAgent. Entre las propiedades útiles para supervisar el estado del dispositivo se incluyen: estado en tiempo de ejecución, hora de inicio en tiempo de ejecución, hora de última salida y recuento de reinicios en tiempo de ejecución.
También puede ver el estado de los módulos en el portal Azure. Vaya a la sección Dispositivos de la IoT Hub para ver los dispositivos y módulos.
Visualización de datos generados
El módulo Sensor de temperatura simulado genera datos de entorno de ejemplo. Envía mensajes con la temperatura y la humedad ambiental, la temperatura y la presión de la máquina, y una marca de tiempo.
También puede ver estos mensajes mediante Azure Cloud Shell:
az iot hub monitor-events -n <iot-hub-name> -d <lower-layer-device-name>
Por ejemplo:
az iot hub monitor-events -n my-iot-hub -d child-1
{
"event": {
"origin": "child-1",
"module": "simulatedTemperatureSensor",
"interface": "",
"component": "",
"payload": "{\"machine\":{\"temperature\":104.29281270901808,\"pressure\":10.48905461241978},\"ambient\":{\"temperature\":21.086561171611102,\"humidity\":24},\"timeCreated\":\"2023-04-17T21:50:30.1082487Z\"}"
}
}
Solución de problemas
Ejecute el comando para comprobar la configuración y solucionar errores.
Ejecute en una jerarquía anidada, incluso si los dispositivos de bajada no tienen acceso directo a Internet.
Cuando se ejecuta desde la capa inferior, el programa extrae la imagen del elemento padre a través del puerto 443.
El valor procede del registro de contenedor que está vinculado al módulo del Registro. Este tutorial lo establece de forma predeterminada en :.
| Nombre | Value |
|---|---|
REGISTRY_PROXY_REMOTEURL |
https://mcr.microsoft.com |
Si usa un registro de contenedor privado, asegúrese de que todas las imágenes (IoTEdgeAPIProxy, edgeAgent, edgeHub, Simulated Temperature Sensor y diagnostics) están presentes en el registro de contenedor.
Si un dispositivo de bajada usa una arquitectura de procesador diferente a la del dispositivo primario, use la imagen de arquitectura adecuada. Use un registro conectado o especifique la imagen correcta para los módulos edgeAgent y edgeHub en el archivo config.toml del dispositivo de bajada. Por ejemplo, si el dispositivo primario se ejecuta en ARM32v7 y el dispositivo de bajada se ejecuta en AMD64, especifique la versión coincidente y la etiqueta de imagen de arquitectura en el archivo config.toml del dispositivo de bajada.
[agent.config]
image = "$upstream:443/azureiotedge-agent:1.5.0-linux-amd64"
"systemModules": {
"edgeAgent": {
"settings": {
"image": "$upstream:443/azureiotedge-agent:1.5.0-linux-amd64"
},
},
"edgeHub": {
"settings": {
"image": "$upstream:443/azureiotedge-hub:1.5.0-linux-amd64",
}
}
}
Limpieza de recursos
Puede eliminar las configuraciones locales y los recursos de Azure que creó en este artículo para evitar cargos.
Para eliminar los recursos:
Inicie sesión en el portal Azure y seleccione Grupos de recursos.
Seleccione el nombre del grupo de recursos que contiene los recursos de prueba de IoT Edge.
Revise la lista de los recursos contenidos en el grupo de recursos. Si desea eliminar todos ellos, puede seleccionar Eliminar grupo de recursos. Si desea eliminar solo algunos de ellos, puede seleccionar cada recurso para eliminarlos individualmente.
Pasos siguientes
En este tutorial, configuraste dos dispositivos IoT Edge como puertas de enlace y asignaste uno como el dispositivo padre del otro. Después, ha extraído una imagen de contenedor al dispositivo de bajada por medio de una puerta de enlace con el módulo de proxy de la API de IoT Edge. Si quiere más información, consulte la guía paso a paso sobre el uso del módulo de proxy.
Para más información sobre el uso de puertas de enlace para crear capas jerárquicas de dispositivos IoT Edge, consulte el siguiente artículo.