认识 Azure IoT Edge 的限制和约束

适用于:IoT Edge 1.5 勾选标记 IoT Edge 1.5

重要

IoT Edge 1.5 LTS 是受支持的版本。 IoT Edge 1.4 LTS 于 2024 年 11 月 12 日终止。 如果使用的是早期版本,请参阅 Update IoT Edge

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

限制

网关层次结构中连接的客户端数

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

注释

连接的客户端包括设备和模块。

嵌套拓扑中的每个 IoT Edge 设备都会为每个连接的客户端打开与父 EdgeHub(或 IoT 中心)的单独逻辑连接,并为自身打开一个连接。 每一层的连接不会聚合,而是会被分别添加。

例如,如果第 L4 层中有两个 IoT Edge 子设备,并且每个子设备都有:

  • 设备本身的1个连接,以及
  • 100 个连接的下游客户端(包括设备和模块),

然后,第 L5 层中的父 IoT Edge 设备具有来自第 L4 层 的 202 个传入连接总数

可以通过在父设备的 edgeHub 模块中设置 MaxConnectedClients 环境变量来更改此限制。

重要

edgeHub 的模块孪生在其报告属性中保存有关连接客户端的信息,大小有限。 当孪生体的报告属性达到最大允许大小以增加连接的客户端数量时,IoT Edge将无法正确报告其状态。 如果客户端数超过数百,则可能会发生这种情况。 在设置 MaxConnectedClients之前,请考虑使用生产方案进行测试。

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

模块孪生属性的大小

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 中心的路由语法几乎相同。 支持的查询语法:

不支持的查询语法:

重启策略

on-unhealthy重启策略值由架构接受,但运行时当前不会从 Docker 运行状况检查中派生不正常状态,因此它没有实际效果。 on-failure重启策略将重启使用非零退出代码退出的模块。 仅neveron-failurealways重启策略会产生可观察的行为。

若要自动重启运行不正常的模块,请使用此GitHub问题中提到的解决方案。 在模块的 Healthcheck 中配置 createOptions 属性以处理失败的运行状况检查。

故障排除日志

在更新模块期间,从 Azure 门户访问模块日志可能会有延迟。

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

可以在一段时间后再次看到日志。 由于 edgeAgent 可能正忙于启动模块,因此无法访问,因此无法同时检索日志。 日志是从 Moby 或 Docker 拉取的,因此此过程需要时间,如果 edgeAgent 繁忙,请求可能会超时。

文件上传

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

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

Edge 代理环境变量

如果容器已经存在,则你在config.toml中对环境变量(如edgeAgent)的更改将不会应用到hostname。 若要应用这些更改,请通过运行edgeAgent删除sudo docker rm -f edgeAgent容器。 IoT Edge 守护程序会重新创建该容器,并在大约一分钟内启动 edgeAgent。

NTLM 身份验证

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

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

后续步骤

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