认识 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 中心)分别建立一个单独的逻辑连接,此外还会为子 EdgeHub 本身建立一个连接。 子 edgeHub 的连接会在父 edgeHub 的 connected-clients 模块孪生中显示为 <childDeviceId>/$edgeHub。 每一层的连接不会聚合,而是会被分别添加。

例如,如果层 L4 IoT Edge子设备有 100 个连接的下游客户端(设备和模块),则它将打开 100 个到其父 edgeHub 的连接,并为子 edgeHub 本身打开 1 个连接,总计为 101 个。 如果 L4 中存在两个此类子设备,则 L5 父设备将看到来自 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 中心其他限制