认识 Azure IoT Edge 的限制和约束

适用于:IoT Edge 1.5 复选标记 IoT Edge 1.5 IoT Edge 1.4 复选标记 IoT Edge 1.4

重要

IoT Edge 1.5 LTS 和 IoT Edge 1.4 LTS 是受支持的版本。 IoT Edge 1.4 LTS 的生命周期结束日期为 2024 年 11 月 12 日。 如果你使用的是较低的版本,请参阅更新 IoT Edge

本文介绍使用 IoT Edge 时的限制和约束。

限制

网关层次结构中的子网数

默认情况下,网关层次结构中的每个 IoT Edge 父设备最多可以连接 100 个子设备。

但是,请务必了解嵌套拓扑中的每个 IoT Edge 设备都必须代表每个连接的客户端(设备或模块)打开一个与父 EdgeHub(或 IoT 中心)的单独逻辑连接,以及其自身的一个连接。 因此,每个层的连接不会聚合,但会添加。

例如,如果 L4 层中有 2 个 IoT Edge 子设备,每个子设备都有 100 个客户端,则 L5 以上层中的父 IoT Edge 设备将有 202 个来自 L4 的总传入连接。

可以在父设备的 edgeHub 模块中设置“MaxConnectedClients”环境变量来更改此限制。 但是,如果客户端数超过数百个,因为 IoT 中心孪生体大小限制,IoT Edge 可能会在在孪生体报告的属性中报告其状态时遇到问题。 一般情况下,在通过更改此环境变量来提高限制时要谨慎小心。

有关详细信息,请参阅创建网关层次结构

所需属性的大小

IoT 中心强制实施以下限制:

  • 标记值的大小限制为 8 kb。
  • properties/desiredproperties/reported 的值大小限制都为 32 kb。

有关详细信息,请参阅模块孪生大小

嵌套层次结构层数

IoT Edge 设备最多可在子级连接五层 IoT Edge 设备。

有关详细信息,请参阅父关系和子关系

部署中的模块数

IoT 中心对 IoT Edge 自动部署的限制如下:

  • 每个部署 50 个模块
  • 每个付费 SKU 中心 100 个部署(包括分层部署)
  • 每个免费 SKU 中心 10 个部署

限制

证书

IoT Edge 证书具有以下限制:

  • 公用名 (CN) 不能与将在 IoT Edge 设备的配置文件中使用的主机名相同
  • 客户端连接 IoT Edge 时使用的名称不能与 Edge CA 证书中使用的公用名相同。

有关详细信息,请参阅设备安全证书

TPM 证明

将 TPM 证明与设备预配服务一起使用时,需要使用 TPM 2.0。

有关详细信息,请参阅 TPM 证明设备要求

路由语法

IoT Edge 和 IoT 中心的路由语法几乎相同。 支持的查询语法:

不支持的查询语法:

重启策略

请勿在模块的 restartPolicy 中使用 on-unhealthyon-failure 作为值,因为它们尚未实现,不会启动重启。 只实现了 neveralways 重启策略。

此解决方法中介绍了自动重启不正常 IoT Edge 模块的推荐方法。 在模块的 Healthcheck 中配置 createOptions 属性以处理失败的运行状况检查。

故障排除日志

更新模块时,从 Azure 门户访问模块日志可能会延迟。

如果在 Azure 门户查看 IoT Edge 中设备的“故障排除”选项卡,可能会看到“无法检索日志”消息。 “请求失败,状态代码为 504。”请求超时,并且所有模块的“运行时状态”可能显示为“错误”。

这种查看日志的功能会及时恢复。 访问延迟的原因是 edgeAgent 可能正忙于启动模块,因此无法同时检索日志。 日志是从 Moby/Docker 中拉取的,因此此过程需要一些时间,如果 edgeAgent 繁忙,请求可能会超时。

文件上传

IoT 中心仅支持用于设备标识的文件上传 API,而不支持模块标识。 由于 IoT Edge 只使用模块,因此 IoT Edge 本地不支持文件上传。

有关使用 IoT 中心上传文件的详细信息,请参阅使用 IoT 中心上传文件

Edge 代理环境变量

config.toml 中对 hostnameedgeAgent 环境变量所做的更改不会应用于 edgeAgent(如果该容器已存在)。 若要应用这些更改,请使用 sudo docker rm -f edgeAgent 命令来删除 edgeAgent 容器。 IoT Edge 守护程序会重新创建该容器,并在大约一分钟内启动 edgeAgent。

NTLM 身份验证

不支持 NTLM 身份验证。 配置了 NTLM 身份验证的代理将不起作用。

IoT Edge 对代理身份验证的支持有限。 仅支持为用户名和密码身份验证配置的代理。

后续步骤

有关详细信息,请参阅 IoT 中心其他限制