Skip to main content

使用 Docker 进行快速 IoT 部署

随着 IoT 端点数量的成倍增长,使用其数据的服务也不断增加,这就需要以更具可扩展性的方式协调和部署软件。

像 Docker 这样的容器技术对解决这一挑战有很大帮助。容器化代码可以跨分布式系统集中编排,从而可以更轻松地扩展设计。容器还提供了硬件抽象层,允许它们在 IoT 端点中常见的各种系统上运行。

但这只是解决了问题的一半。与 IoT 端点一样,IoT 服务多种多样,而且使用许多不同的 API 和消息传输协议。为了在异构的设备和服务组合之间传输数据,开发人员需要一个可以在所有这些系统之间转换消息的通信中心。

这些挑战导致结合了容器化和消息传输的平台的兴起。借助这些平台,开发人员可以在云中创建 Docker 化的工作负载,将其部署到边缘设备、在本地分析数据并进行适当响应。然后,边缘设备可以将数据和结果推送回云中,以便根据需要进行远程监控(图 1)。

图 1. Azure IoT Edge 等平台支持 Docker 化的工作负载配置和端到端消息传输。(资料来源:Microsoft)

在本文中,我们将介绍一种此类服务,即 Microsoft Azure IoT。

容器化过程

Azure IoT 是用于开发、部署和管理 IoT 应用的云平台。除其他功能外,该平台还提供各种可加快产品上市的服务模块,例如机器学习和数据流分析。

虽然这些云服务很有用,但是使平台真正有价值的是它能够将工作负载推送到边缘。借助最近发布的 Azure IoT Edge 2.0,开发人员可以使用 Docker 对模块进行容器化,并将它们部署到运行 Linux 或 Windows 的设备上。通过这种方式,云智能和分析可以扩展到从 Raspberry Pi 到功能强大的工业网关等各种设备。

为了管理这些不同的端点,IoT Edge 与 Azure IoT Hub 紧密合作。此服务支持身份验证并建立与 IoT 设备的通信,同时自动执行设备注册和配置。IoT Hub 还可用作容器化模块的注册表、安全消息传输的渠道以及已部署模块的远程管理连接。

图 2 所示,使用 IoT Edge 的过程如下:

  • 创建 IoT Hub(或使用已建立的 IoT Hub)
  • 将 IoT Edge 设备注册到该 IoT Hub
  • 启动 IoT Edge 运行时
  • 将模块远程部署到 IoT Edge 设备

图 2. Azure IoT Edge 允许使用 Docker 对模块进行容器化,并通过安全消息传输进行远程管理。(资料来源:Microsoft)

边缘设备上的 IoT Edge 运行时负责基本服务,例如边缘设备离线时的安全、数据存储和转发,以及管理与 Internet 隔离的系统(例如连接到边缘设备的传感器)。它还管理模块和云之间的通信。例如,机器学习 (ML) 模块可能仅向云发送警报,而不是向所有数据发送警报(图 3)。

图 3. Azure Edge IoT 运行时控制包含所需功能和服务的 Docker 模块。(资料来源:Microsoft)

IoT Edge 使用与 IoT Hub 相同的 API,因此网关可以像本地 IoT Hub 一样工作。“通过这种方式,这些模块可以预先配置并在存储库中的云中运行,同时等待被移除。” Microsoft 技术专家 Brett Stateham 说。

预先打包的服务和定制服务

当预先打包的服务可用时,开发人员可以自由复制其中的内容并对其进行修改。或者他们可以使用他们选择的语言从头开始编写自己模块的代码,并使用 Docker 对其进行打包。“所以,它的可扩展性极强。” Stateham 说。

这些服务包括商务智能分析、人工智能和机器学习以及移动服务等等。但是任何服务都可以访问数据,因为 Azure IoT Hub 支持 Python、Java、PHP 和 .Net 的开放 API 和 SDK。“最糟糕的情况是,一些标准的 REST API 能够使用这些消息。” Stateham 说。

使用安全的消息遥测传输(例如 AMQPS、MQTTS 和 HTTPS)从边缘设备安全地传输数据,并且一旦对数据进行存储,它就可用于可能想要读取它的任何后端服务。IoT Edge 和 IoT Hub 使用相同的安全消息传输协议,因此简化了通信、配置、注册和整体管理。

部署到边缘硬件

虽然 IoT Edge 可以在各种设备上运行,但许多现有系统都不具有对 Internet 连接的本地支持。例如,传感器模块可能具有用于 Modbus 或 CAN 总线的有线接口,或用于低功耗蓝牙 (BLE) 的无线接口,但不具有 TCP/IP 堆栈,无法将数据直接推送到云。

Stateham 表示,这就是英特尔® NUC 等设备的用武之地(图 4)。这些设备可以运行 Windows 10 或 Wind River Linux 并部署在边缘。“它的上面有 USB 端口、Wi-Fi 和其他一些很酷的东西。” 他说,“它可以用来与 BLE 模块通信,这些模块可以从那里连接到云。” 同样,对于任何其他有线或无线模块或传感器,它们可以作为聚合点连接到网关。

图 4. 使用英特尔® NUC 等边缘计算系统作为聚合点,可以将具有有线或无线连接的传感器模块连接到云。(资料来源:Microsoft)

将智能推送到边缘

借助作为 Azure IoT 堆栈扩展的 IoT Edge,开发人员现在可以快速安全地在边缘添加可扩展的 IoT 分析和其他服务,以连接传感器模块并开始将 IoT 功能应用到 AI 原则。

要了解有关部署容器化 IoT 工作负载的更多信息,请观看网络研讨会 “使用 Azure IoT Edge 和英特尔® NUC 创建现场网关”。

作者简介

Patrick Mannion is a independent content developer and consultant who has been analyzing developments in technology for more than 25 years. Formerly Brand Director for EETimes, EDN, Embedded, Planet Analog, and Embedded.com, now part of AspenCore, he has also been developing and executing community-oriented online- and events-based engineer-to-engineer learning platforms. His focus is on connecting engineers to find novel design solutions and focused skills acquisition in the areas of Embedded, IoT, Test and Measurement, RF/Wireless, and Analog & Mixed-Signal Design.

Profile Photo of Patrick Mannion