认识 Azure IoT Edge 的限制和约束
适用于: IoT Edge 1.5
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/desired
和properties/reported
的值大小限制都为 32 kb。
有关详细信息,请参阅模块孪生大小。
IoT Edge 设备最多可在子级连接五层 IoT Edge 设备。
有关详细信息,请参阅父关系和子关系。
IoT 中心对 IoT Edge 自动部署的限制如下:
- 每个部署 50 个模块
- 此限制为 IoT 中心 32 kb 模块孪生大小限制所取代。 有关详细信息,请参阅使用自定义模块时应注意的孪生大小限制。
- 每个付费 SKU 中心 100 个部署(包括分层部署)
- 每个免费 SKU 中心 10 个部署
IoT Edge 证书具有以下限制:
- 公用名 (CN) 不能与将在 IoT Edge 设备的配置文件中使用的主机名相同。
- 客户端连接 IoT Edge 时使用的名称不能与 Edge CA 证书中使用的公用名相同。
有关详细信息,请参阅设备安全证书。
将 TPM 证明与设备预配服务一起使用时,需要使用 TPM 2.0。
有关详细信息,请参阅 TPM 证明设备要求。
IoT Edge 和 IoT 中心的路由语法几乎相同。 支持的查询语法:
不支持的查询语法:
请勿在模块的 restartPolicy
中使用 on-unhealthy
或 on-failure
作为值,因为它们尚未实现,不会启动重启。 只实现了 never
和 always
重启策略。
此解决方法中介绍了自动重启不正常 IoT Edge 模块的推荐方法。 在模块的 Healthcheck
中配置 createOptions
属性以处理失败的运行状况检查。
更新模块时,从 Azure 门户访问模块日志可能会延迟。
如果在 Azure 门户查看 IoT Edge 中设备的“故障排除”选项卡,可能会看到“无法检索日志”消息。 “请求失败,状态代码为 504。”请求超时,并且所有模块的“运行时状态”可能显示为“错误”。
这种查看日志的功能会及时恢复。 访问延迟的原因是 edgeAgent 可能正忙于启动模块,因此无法同时检索日志。 日志是从 Moby/Docker 中拉取的,因此此过程需要一些时间,如果 edgeAgent 繁忙,请求可能会超时。
IoT 中心仅支持用于设备标识的文件上传 API,而不支持模块标识。 由于 IoT Edge 只使用模块,因此 IoT Edge 本地不支持文件上传。
有关使用 IoT 中心上传文件的详细信息,请参阅使用 IoT 中心上传文件。
在 config.toml
中对 hostname
等 edgeAgent
环境变量所做的更改不会应用于 edgeAgent
(如果该容器已存在)。 若要应用这些更改,请使用 sudo docker rm -f edgeAgent
命令来删除 edgeAgent
容器。 IoT Edge 守护程序会重新创建该容器,并在大约一分钟内启动 edgeAgent。
不支持 NTLM 身份验证。 配置了 NTLM 身份验证的代理将不起作用。
IoT Edge 对代理身份验证的支持有限。 仅支持为用户名和密码身份验证配置的代理。
有关详细信息,请参阅 IoT 中心其他限制。