你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

了解对断连设备更新的支持(预览)

适用于 IoT Edge 设备的 Microsoft 联网缓存 (MCC) 模块能够在网关后断连设备上实现设备更新功能。 在透明网关方案中,一个或多个设备可以通过与 Azure IoT 中心保持连接的一个网关设备来传递其消息。 在这些情况下,子设备可能没有 Internet 连接,或者可能不允许这些子设备从 Internet 下载内容。 MCC 模块为 Device Update for IoT Hub 客户提供了智能网络内缓存功能。 该缓存功能支持 IoT Edge 网关后的基于 Linux OS 的设备(也称为下游 IoT 设备)的基于映像和基于包的更新。 缓存还有助于减少用于更新的带宽。

注意

此信息与可用于早期测试和生产环境的预览功能相关。 此功能完全受支持,但仍在积极开发中,并且可能会在正式发布之前发生重大更改。

如果不熟悉 IoT Edge 网关,请详细了解如何将 IoT Edge 设备用作网关

什么是 Microsoft 联网缓存

Microsoft 联网缓存是一种智能的透明缓存,适用于为 IoT 中心的设备更新发布的内容,并且可以进行自定义,以缓存来自其他源(如包存储库)的内容。 Microsoft 联网缓存是冷缓存,由针对确切文件范围的客户端请求(由“传递优化”客户端请求)加热,并且不会预植入内容。 以下关系图和分步说明介绍了 Microsoft 联网缓存在设备更新基础结构中的工作原理。

注意

此流假定 IoT Edge 网关具有 Internet 连接。 对于下游 IoT Edge 网关(嵌套边缘)方案,可以将内容交付网络 (CDN) 视为在父 IoT Edge 网关上托管的 MCC。

演示 Microsoft 联网缓存模块如何实现断连设备更新的示意图。

  1. Microsoft 联网缓存会作为 IoT Edge 模块部署到本地网关服务器。

  2. Device Update for IoT Hub 客户端配置为使用 IoT 叶设备的设备连接字符串的 GatewayHostName 属性 IoT Edge 子设备的 config.toml 中设置的 parent_hostname 来从 Microsoft 联网缓存下载内容。

  3. Device Update for IoT Hub 客户端从设备更新服务接收下载命令,并从 Microsoft 联网缓存(而不是 CDN)请求更新内容。 在默认情况下,Microsoft 联网缓存在 HTTP 端口 80 上侦听,并且传递优化客户端在端口 80 上发出内容请求,因此,必须将父级配置为在此端口上侦听。 目前只支持 HTTP 协议。

  4. Microsoft 联网缓存服务器会从 CDN 下载内容,种植磁盘上存储的它的本地缓存,并将内容传递到设备更新客户端。

    注意

    在使用基于包的更新时,Microsoft 联网缓存服务器将由管理员来配置所需的包主机名。

  5. 来自其他设备更新客户端的对于同一更新内容的后续请求现在会来自缓存,并且 Microsoft 联网缓存将不会向 CDN 发出关于同一内容的请求。

利用父/子托管支持工业 IoT (IIoT) 的方案

工业 IoT (IIoT)方案通常涉及多个级别的 IoT Edge 网关,只有顶级具有 Internet 访问权限。 在此方案中,每个网关托管一个 Microsoft 联网缓存服务,服务配置为从其父网关请求更新内容。

当子(或下游)IoT Edge 网关从其父网关请求更新内容时,在到达托管具有 Internet 访问权限的 Microsoft 联网缓存服务器的最顶层 IoT Edge 网关之前,会根据需要多次重复此请求。 从连接了 Internet 的服务器上,会从 CDN 请求内容,此时,内容会被传送回最初请求该内容的子 IoT Edge 网关。 内容会存储在磁盘上的每个级别。

请求访问预览版

Microsoft 联网缓存 IoT Edge 模块作为预览版发布,面向使用 IoT 中心的设备更新来部署解决方案的客户。 对该预览版的访问会通过邀请方式提供。 如果你想访问该模块,可以请求访问适用于 IoT 中心的设备更新的 Microsoft 联网缓存预览版,并提供所需信息。

Microsoft 联网缓存模块配置

Microsoft 联网缓作为 IoT Edge 模块部署到 Azure IoT Edge 网关。 与其他 IoT Edge 模块一样,环境变量和容器创建选项用于配置 MCC 模块。 本部分定义了成功部署 MCC 模块以供 Device Update for IoT Hub 使用的环境变量和容器创建选项。

Microsoft 联网缓存模块没有命名要求,因为没有其他模块或服务交互依赖于 MCC 模块的名称来进行通信。 此外,Microsoft 联网缓存服务器的父子关系也不依赖于此模块名称,而是依赖于 IoT Edge 网关的 FQDN 或 IP 地址。

模块环境变量

Microsoft 联网缓存模块环境变量用于将基本模块标识信息和功能模块设置传递到容器。

变量名称 值格式 说明
CUSTOMER_ID Azure 订阅 ID GUID 必需

此值是客户的 ID,它为传递优化服务提供对缓存节点的安全身份验证。
CACHE_NODE_ID 缓存节点 ID GUID 必需

唯一标识传递优化服务的 MCC 节点。
CUSTOMER_KEY 客户密钥 GUID 必需

此值是客户的密钥,它为传递优化服务提供对缓存节点的安全身份验证。
STORAGE_N_SIZE_GB(其中 N 是缓存驱动器) Integer 必需

最多指定九个驱动器来缓存内容,并指定为每个缓存驱动器上的内容分配的最大空间(以 GB 为单位)。 驱动器的数量必须与容器创建选项 MicrosoftConnectedCacheN 值中指定的缓存驱动器绑定值匹配。

示例:
STORAGE_1_SIZE_GB = 150
STORAGE_2_SIZE_GB = 50

缓存的最小大小为 10 GB。
UPSTREAM_HOST FQDN/IP 可选

如果联网缓存节点与 Internet 断开连接,则此值可以指定充当代理的上游 MCC 节点。 此设置用于支持嵌套 IoT 方案。

注意:MCC 侦听 http 默认端口 80。
UPSTREAM_PROXY FQDN/IP:PORT 可选

出站 Internet 代理。 此值也可以是 ISA 95 网络的 OT DMZ 代理。
CACHEABLE_CUSTOM_N_HOST HOST/IP
FQDN
可选

需要此项以支持自定义包存储库。 可以在本地或在 Internet 上托管存储库。 可配置的自定义主机数不受限制。

示例:
Name = CACHEABLE_CUSTOM_1_HOST Value = packages.foo.com
Name = CACHEABLE_CUSTOM_2_HOST Value = packages.bar.com
CACHEABLE_CUSTOM_N_CANONICAL Alias 可选

需要此项以支持自定义包存储库。 此值可用作别名,并将由缓存服务器用于引用不同的 DNS 名称。 例如,存储库内容的主机名可以是 packages.foo.com,但对于不同的区域,可以在主机名中添加额外的前缀,例如 westuscdn.packages.foo.com 和 eastuscdn.packages.foo.com。 通过设置规范别名,可以确保来自同一主机但来自不同 CDN 源的内容不会重复。 规范值的格式并不重要,但它对于主机必须是唯一的。 这可能是将值设置为与主机值匹配的最简单的方法。

基于前面的自定义主机示例的示例:
Name = CACHEABLE_CUSTOM_1_CANONICAL Value = foopackages
Name = CACHEABLE_CUSTOM_2_CANONICAL Value = packages.bar.com
IS_SUMMARY_PUBLIC 是或否 可选

允许在本地网络或 Internet 上查看摘要报告。 如果设置为“是”,则需要使用 API 密钥(稍后讨论)以查看摘要报告。
IS_SUMMARY_ACCESS_UNRESTRICTED 是或否 可选

无需使用网络中任何设备的 API 密钥,即可在本地网络或 Internet 上查看摘要报告。 如果不想锁定通过浏览器查看缓存服务器摘要数据的访问权限,请使用此变量。

模块容器创建选项

容器创建选项提供对与 Microsoft 联网缓存模块使用的存储和端口相关的设置的控制。

示例容器创建选项:

{
    "HostConfig": {
        "Binds": [
            "/microsoftConnectedCache1/:/nginx/cache1/"
        ],
        "PortBindings": {
            "8081/tcp": [
                {
                    "HostPort": "80"
                }
            ],
            "5000/tcp": [
                {
                    "HostPort": "5100"
                }
            ]
        }
    }
}

以下部分列出用于部署 MCC 模块所需的容器创建变量。

HostConfig

需要 HostConfig 参数才能将容器存储位置映射到磁盘上的存储位置。 最多可以指定九个位置。

注意

驱动器数必须与环境变量 STORAGE_N_SIZE_GB 值 /MicrosoftConnectedCache*N*/:/nginx/cache*N*/ 中指定的缓存驱动器绑定值匹配。

PortBindings

PortBindings 参数将容器端口映射到主机设备上的端口。

第一个端口绑定指定 MCC 在其上侦听内容请求的外部计算机 HTTP 端口。 默认的 HostPort 为端口 80,目前不支持其他端口,因为 ADU 客户端会在端口 80 上发出请求。 TCP 端口 8081 是 MCC 侦听的内部容器端口,且无法更改。

第二个端口绑定可确保容器不侦听主机端口 5000。 Microsoft 联网缓存模块包含一个 .NET Core 服务,缓存引擎使用该服务实现各种功能。 若要支持嵌套边缘,HostPort 不得设置为 5000,因为注册表代理模块已在侦听主机端口 5000。

Microsoft 联网缓存摘要报告

摘要报告当前是供客户查看部署到 IoT Edge 网关的 Microsoft 联网缓存实例的缓存数据的唯一方法。 报告以 15 秒的间隔生成,并包括该时间段的平均统计信息和模块生存期的聚合统计信息。 该报告提供的关键统计信息包括:

  • hitBytes - 直接从缓存传递的字节数之和。
  • missBytes - Microsoft 联网缓存必须从 CDN 下载以查看缓存而传递的字节数之和。
  • eggressBytes - hitBytes 和 missBytes 的总和,是传递到客户端的总字节数。
  • hitRatioBytes - hitBytes 与 egressBytes 的比值。 例如,如果在一段时间内传递的 eggressBytes 总和等于 hitBytes,则此值为 1。

摘要报告位于 http://<IoT Edge gateway>:5001/summary。将 <IoT Edge 网关> 替换为托管 MCC 模块的 IoT Edge 网关的 IP 地址或主机名。

后续步骤

了解如何在单一网关嵌套和工业 IoT 网关中实现 Microsoft 联网缓存。