Google 已宣布弃用 IoT Core。本文档旨在帮助您设计和实施一个迁移计划,用于从基于 IoT Core 的环境迁移到以下各项不依赖 IoT Core 的新环境:
- 边缘设备身份验证
- 边缘设备管理
- 边缘设备与 Google Cloud 之间的通信
本文档还提供了指南,供您在要执行以下操作时参考:评估在弃用 IoT Core 后迁移的机会和希望了解迁移的可能情况。
本文档是系列文档中的一篇,该系列介绍了 Google Cloud 上的 IoT 架构以及如何从 IoT Core 进行迁移。本系列中的其他文档包括以下内容:
- Google Cloud 上的关联设备架构概览
- Google Cloud 上的独立 MQTT 代理架构
- Google Cloud 上的 IoT 平台产品架构
- 在 Google Cloud 上运行 IoT 后端的最佳做法
- 将 Pub/Sub 架构上的设备迁移到 Google Cloud
- 自动预配和配置边缘与裸机系统和服务器的最佳做法
- 从 IoT Core 迁移环境(本文档)
要迁移的工作负载
本文档假定您要从 IoT Core 迁移的工作负载包含以下部分:
- 在边缘设备上运行的部分(部署在环境的边缘上,并且位于要处理的数据旁边)
- 在 Google Cloud 上运行的后端
下图显示了使用 IoT Core 的典型工作负载的架构。在此架构中,Cloud IoT 集成具有在 Google Cloud 上运行的后端的边缘设备。
上图总结如下:
- 边缘设备在本地收集和处理数据。
- 然后,边缘设备通过 MQTT 或 HTTP 协议将处理后的数据发送到在 Google Cloud 上运行的后端。此数据包括遥测和设备状态。
- 然后,IoT Core 会将从边缘设备接收的数据以 Pub/Sub 消息的形式发布到特定 Pub/Sub 主题。
- 后端工作负载订阅 Pub/Sub 主题,以接收有关设备状态的遥测信息和信息。
- 后端可能会向边缘设备发送设备配置和命令。
为了高效规划迁移,我们建议您进行评估,以全面了解您的来源环境架构。在这种情况下,“来源环境”是指您当前的基于 IoT Core 的环境。
本文档假定您可以更新在边缘设备上运行的配置和软件组件以进行迁移。在某些情况下,这种方法可能不可行。例如,您的边缘设备或部署流程可能不支持此使用场景。在这种情况下,我们建议您计划弃用不支持更新的边缘设备。如需详细了解如何为边缘设备设计和实现自动预配和配置流程,请参阅自动预配和配置边缘与裸机系统和服务器的最佳做法。
设计迁移
如需迁移基于 IoT Core 的环境,我们建议您遵循迁移到 Google Cloud 中所述的迁移框架。
下图说明了迁移过程的路径。
如上图所示,此过程分为四个阶段:
- 评估:在此阶段,您将评估来源环境、评估要从 Cloud IoT Core 迁移的工作负载和边缘设备。
- 规划:在此阶段,您将在 Google Cloud 上创建基本基础架构,例如预配资源层次结构和设置网络访问。
- 部署:在此阶段,您将部署要使用的新解决方案(而不是 IoT Core),并将边缘设备迁移到新的解决方案。
- 优化:在此阶段,您将优化目标环境。在这种情况下,目标环境是指不是基于 IoT Core 的迁移目标环境。
评估来源环境和工作负载
在评估阶段,您将收集有关来源环境、边缘设备和组织中 IoT Core 使用情况的信息。此信息可帮助您设计迁移计划,并确保您拥有迁移和目标环境所需的资源。
在评估阶段,您将完成以下任务:
- 构建您注册到 Cloud IoT Core 的边缘设备的清单。
- 构建与 Cloud IoT Core 集成的后端工作负载清单。
- 对边缘设备和后端工作负载进行分类。
- 试验和设计概念验证。
- 计算总拥有成本。
- 设计目标环境的架构。
- 选择要先迁移的边缘设备和后端工作负载。
在评估阶段结束时,您会有两份清单:边缘设备的清单和后端工作负载的清单。
为避免不一致,我们建议您在构建这些清单之前暂停部署新的边缘设备和后端工作负载。我们还建议您创建清单后,不要部署新的边缘设备和后台工作负载。
构建边缘设备清单
如需确定迁移范围并设计迁移计划,您需要了解来源环境中存在多少个边缘设备。您还必须了解设备如何与 IoT Core 交互,以及您是否可以按常见特征、行为、用途或依赖项对设备进行分类。
您注册到 IoT Core 的每个边缘设备都属于一个 IoT Core 注册表。构建边缘设备清单的第一步是列出您创建的 IoT Core 注册表。然后,您可以收集在每个注册表中注册的边缘设备的相关信息。
为了构建边缘设备的清单,应考虑每个边缘设备的以下信息以及设备如何与 IoT Core 集成:
标识符:收集有关边缘设备的 IoT Core 标识符的以下信息:
- 用户定义的标识符
- 当您将边缘设备注册到 IoT Core 时,IoT 自动生成的服务器定义、不可修改的 ID
- 使用在其中注册边缘设备的 IoT Core 注册表唯一标识边缘设备的资源名称
部署状态:评估边缘设备的当前部署状态。例如,边缘设备可能处于以下状态之一:
- 尚未制造或当前正在制造
- 已准备好部署,但尚未注册 IoT Core
- 已部署到其目标网站中,并已注册到 IoT Core
IoT Core 设备类型:评估 IoT Core 设备类型。您注册到 IoT Core 的每个边缘设备都可以通过以下两种方式之一执行操作。它可以是直接连接到 IoT Core 的客户端。或者,对于您不想或不能直接连接到 IoT Core 的客户端,它可以作为网关。
通信协议:IoT Core 支持两种协议与边缘设备通信:HTTP 和 MQTT。评估您的边缘设备用于与 IoT Core 通信的协议。对于 MQTT 协议,您还必须确定边缘设备和后端工作负载所依赖的服务质量。
凭据:IoT Core 使用密钥对和使用该密钥对生成的短期令牌对边缘设备进行身份验证。它可以使用基于证书的验证方法选择性地验证密钥对的公钥部分。评估边缘设备的身份验证配置方式。检查您是否针对设备所属的 IoT Core 注册表使用基于证书的验证机制。
设备元数据:在 IoT Core 中,您可以采用键值对的形式定义每个边缘设备的元数据。例如,您可以定义硬件指纹、序列号、制造商信息或与边缘设备相关的任何其他属性。您可以在将边缘设备添加到 IoT Core 注册表时修改元数据,或者修改注册表中已有的边缘设备。永不会通过 IoT Core 将元数据送入/送出边缘设备。收集您为边缘设备定义的元数据的信息。
设备状态:在 IoT Core 中,每个边缘设备都可以将其状态报告为任意结构化数据或非结构化数据。例如,边缘设备可能会报告其正在运行的固件的版本。或者,它可能会根据特定指标,报告其运行状况的相关信息。IoT Core 将有关设备状态的信息发布为您配置的 Pub/Sub 主题中的消息。评估边缘设备如何报告其状态信息,以及 IoT Core 将这些消息发布到哪些 Pub/Sub 主题。确定架构的哪些组件依赖于边缘设备状态的相关信息。
遥测事件:您添加到 IoT Core 注册表的每个边缘设备都可以将遥测事件作为任意结构化或非结构化数据发送到 IoT Core。IoT Core 将收到的遥测事件发布为您配置的 Pub/Sub 主题中的消息。评估边缘设备如何报告遥测事件,以及 IoT Core 将这些消息发布到哪些 Pub/Sub 主题。确定架构的哪些组件依赖于边缘设备报告的遥测事件。
设备配置:在 IoT Core 中,您可以将边缘设备的配置定义为任意结构化数据或非结构化数据。借助 IoT Core,您可以将对设备配置的更新定义为此类配置的新版本,然后这些更新将推送到边缘设备。评估边缘设备是否从 Cloud IoT Core 接收配置,并收集您定义的所有配置版本的相关信息。
命令:在 IoT Core 中,边缘设备可以接收来自 IoT Core 的命令,然后相应地响应这些命令。评估您的边缘设备是否支持对来自 IoT Core 的命令做出反应。
软件和配置更新:在迁移期间,您可能需要更新在边缘设备上运行的软件组件或这些组件的配置。评估边缘设备支持的更新机制。确定设备是否也支持回滚机制,以便在更新期间出现问题时恢复到已知正常工作的状态。
停机时间:在迁移期间,后端工作负载或来源环境的其他部分可能不可用。评估边缘设备是否支持停机时间、其回退机制以及在停机时间后如何恢复。
构建与 IoT Core 集成的后端工作负载清单
构建边缘设备的清单后,您可以收集来源环境中与 Cloud IoT Core 集成的后端工作负载的相关信息。后端工作负载可以通过以下方式与 IoT Core 集成:
- 向边缘设备发送命令,并使用 IoT Core 更新边缘设备的配置。
- 通过订阅 IoT Core 将关于边缘设备遥测事件和设备状态的消息发布到的 Pub/Sub 主题。
- 通过直接或使用基础架构预配工具与 IoT Core API 集成。例如,您可以使用 Terraform 预配 IoT Core 注册表和设备。
如需构建与 Cloud IoT Core 集成的后端工作负载清单,请针对每个后端工作负载执行以下操作:
- 命令和设备配置:评估后端工作负载是否向边缘设备发送命令,以及它是否更新设备配置。这两种操作都需要与 IoT Core API 集成。
- 遥测事件和设备状态:评估后端工作负载是否订阅了 IoT Core 发布遥测事件和设备状态的 Pub/Sub 主题。
与其他 IoT Core API 集成:评估后端工作负载是否与任何其他 IoT Core API 交互(除了发送命令和更新设备配置之外)。例如,您的后端工作负载可能依赖于 IoT Core API 来执行以下操作:
- 创建 IoT Core 注册表并更新其配置。
- 创建 IoT Core 设备并更新其配置。
- 收集有关 IoT Core 注册表和设备的信息。
- 使用 IoT Core 日志记录指标和设备活动日志。
对边缘设备和后端工作负载进行分类
创建边缘设备和清单工作负载的清单后,您可以根据每个清单中的特征对其进行分类。此分类可帮助您草拟迁移计划并选择要先迁移的边缘设备和后端工作负载。
如需对边缘设备进行分类,我们建议您根据边缘设备和后端工作负载之间可能发生的交互种类进行分类。请考虑以下交互种类:
- 边缘设备使用遥测事件或有关设备状态的信息向后端工作负载发送数据。
- 后端工作负载使用命令或设备配置更新向边缘设备发送指令。
对于上述每种交互,在交互期间交换的消息类型是不同的。不过,这些消息的用途类似。某些设备会将数据从边缘设备发送到后端工作负载,例如遥测事件和设备状态信息。某些设备会将指令从后端工作负载发送到边缘设备,例如命令和设备配置更新。
根据建议的交互种类,我们建议您将以下类别用于边缘设备:
- 仅传输:这些边缘设备会发送遥测事件或有关设备状态的信息,但不会收到后端工作负载的命令或设备配置更新。
- 仅接收:这些边缘设备不会发送遥测事件或有关设备状态的信息,但会接收来自后端工作负载的命令或设备配置更新。
- 接收和传输:这些边缘设备不但会发送遥测事件和有关设备状态的信息,而且会从后端工作负载接收命令或设备配置更新。
如需对后端工作负载进行分类,您可以采用类似于对边缘设备进行分类的方法。根据建议的交互种类,我们建议您将以下类别用于后端工作负载:
- 仅接收:这些后端工作负载会接收来自边缘设备的遥测事件或有关设备状态的信息,但不发送命令或设备配置更新。
- 仅发送:这些后端工作负载不会接收遥测事件或有关设备状态的信息,但会发送命令或设备配置更新。
- 发送和接收:这些后端工作负载不但会接收来自边缘设备的遥测事件或有关设备状态的信息,而且会发送命令或设备配置更新。
完成评估
构建清单后,您必须完成评估阶段的以下几个部分:
完成这些活动后,请继续阅读本文档。
设计目标环境的架构
完成上述评估活动后,您将设计目标环境的架构。
本文档重点介绍如何将来源环境迁移到目标环境。但是,从 IoT Core 迁移环境也是规划新功能和更新的机会。在设计目标环境的架构时,请考虑您在来源环境中可能遇到的任何限制。请考虑如何配置目标环境以避免这些限制。您还可以考虑在目标环境中可能需要的任何新功能。
根据边缘设备和后端工作负载的分类方式,您可能会看到在来源环境评估时出现的补充性 IoT Core 使用场景:
- 将来自边缘设备的数据注入到在 Google Cloud 上运行的后端。
- 在 Google Cloud 上运行边缘设备管理后端工作负载。
为了降低迁移的复杂性,我们建议您专注于评估来源环境时出现的应用场景。例如,如果您要从边缘设备注入数据,但未使用任何 IoT Core 设备管理功能,我们建议您专注于设计目标环境。此方法仅支持数据注入使用场景,而无需考虑设备管理使用场景。
目标环境的设计取决于您在来源环境中实现的 Cloud IoT Core 使用场景,以及您希望在目标环境中实现它们的方式。您必须考虑以下因素:
- 如果您在来源环境中实现了两个使用场景,则可以将目标环境设计为使用单个解决方案实现这两个使用场景。您还可以使用不同的解决方案来单独实现这两个使用场景。
- 如果您只在来源环境中实现两个使用场景之一,则可以将目标环境设计为使用单个解决方案实现该使用场景。
下图显示了在决定如何设计目标环境架构时需要考虑的一系列示例问题。
上图总结如下:
您是否需要同时从边缘设备注入数据和管理边缘设备?
- 如果是,请继续回答下一个问题。
- 如果不是,请继续了解边缘设备管理使用场景问题。
您是否需要一个解决方案来实现数据注入和边缘设备管理使用场景?
- 如果是,请在 Google Cloud 上部署数据注入和边缘设备管理解决方案。
- 如果不是,请在 Google Cloud 上部署边缘设备管理解决方案,然后继续进行数据注入使用场景评估问题。
您是否需要管理边缘设备?
- 如果是,请在 Google Cloud 上部署边缘设备管理解决方案,然后继续进行数据注入使用场景评估问题。
- 如果不是,请继续查看数据注入使用场景评估问题。
是否需要从边缘设备注入数据?
- 如果是,请转到下一个问题。
- 如果不是,则您已完成迁移,或者不需要迁移来源环境。在这两种情况下,您都可以停用来源环境。
首选通信协议是什么?
- 如果是 MQTT,请在 Google Cloud 上部署 MQTT 代理。
- 如果是 HTTP 或 gRPC,则使用 Pub/Sub 注入来自边缘设备的数据。
- 如果不是以上两者,请评估与您的首选通信协议兼容的数据注入解决方案。
设计目标环境的架构时,请考虑以下事项:
- 管理架构的任何组件都需要知识和工作量。我们建议您评估目标环境需要考虑的其他资源数量。
- 预配多个边缘设备会带来安全性、可伸缩性和运营挑战。如需详细了解如何预配边缘设备,请参阅自动预配和配置边缘和裸机系统及服务器的最佳做法。
- 使用 Pub/Sub 注入来自边缘设备的数据,使您无需管理和扩缩分布式消息传递平台。如果您使用 Pub/Sub 注入来自边缘设备的数据,请同时考虑 Pub/Sub 配额和限制,特别是在您需要注入来自许多设备的数据时。
如需对目标环境对目标设备进行身份验证并管理其身份,我们建议您评估目标环境支持的身份验证方法和凭据存储。请考虑它们如何与您在来源环境中使用 IoT Core 所用的身份验证方法和凭据存储进行比较。
收集此信息后,我们建议您按照 IoT 后端安全指南中的指导来设计和实现边缘设备的身份验证和身份管理机制。
选择要先迁移的边缘设备和后端工作负载
设计目标环境的架构后,您可以定义以下内容:
- 要先迁移的边缘设备和后端工作负载的类别。
- 迁移批次(从来源环境迁移到目标环境的一组内容)。
定义要先迁移的边缘设备的类别
边缘设备和后端工作负载的类别可能会带来不同的挑战和迁移难度。例如,迁移仅传输的边缘设备,可能比迁移接收和传输边缘设备更容易。
如需深入了解如何选择要先迁移的边缘设备和后端工作负载的类别,请参阅选择要先迁移的应用。
本部分总结了在决定要先迁移的内容时,您必须考虑每个边缘设备类别的注意事项。
仅传输边缘设备
这些边缘设备使用 MQTT 或 HTTP 发送遥测事件和有关设备状态的信息。
如果设备使用 MQTT,您可能只需更新其配置即可连接到目标环境中的 MQTT 代理并进行身份验证。您可以通过目标环境中的 MQTT 代理持续发布遥测事件和有关设备状态的信息。在某些情况下,您的目标环境中可能没有 MQTT 代理,并且需要迁移到其他类型的目标环境,例如第三方解决方案。在这种情况下,您需要评估解决方案提供的功能和集成界面。然后,您可以设计和实施合适的迁移计划。
如果设备使用 HTTP,您可能需要更新设备的配置,以连接到目标环境并针对目标环境进行身份验证。与使用 IoT Core API 相比,您可能还需要重构设备通信的语义,以考虑目标环境的差异。例如,如果您在目标环境中使用 Pub/Sub,则可以从使用 IoT Core API 将消息发布到 Pub/Sub 主题,迁移到使用 Pub/Sub API 来实现相同目的。在某些情况下,您可能无法在目标环境中使用 Pub/Sub,因此需要迁移到其他类型的目标环境,例如第三方解决方案。在这种情况下,您必须评估第三方解决方案提供的功能和集成界面,以设计和实施合适的迁移计划。
仅接收边缘设备
这些边缘设备使用 MQTT 接收命令,使用 MQTT 或 HTTP 接收配置更新。IoT Core 不支持使用 HTTP 发送命令。
如果设备使用 MQTT 接收命令和配置更新,则与之前的边缘设备类别类似。如需迁移此类别的边缘设备,您需要更新边缘设备的配置,以连接到目标环境中的 MQTT 代理并进行身份验证。您可以继续订阅 IoT Core 在其中发布命令和设备配置更新的 MQTT 主题。在某些情况下,您的目标环境中可能没有 MQTT 代理,并且需要迁移到其他类型的目标环境,例如第三方解决方案。在这种情况下,您需要评估解决方案提供的功能和集成界面,以设计和实施合适的迁移计划。
如果设备使用 HTTP 接收配置更新,则与上述边缘设备类别类似。如需迁移此类边缘设备,您可能需要更新其配置,以便连接到目标环境并针对其进行身份验证。为了接收配置更新,您可能还需要重构通信的语义,以考虑目标环境中的差异(与使用 IoT Core API 相比)。例如,如果您要迁移到不同类型的目标环境(例如第三方解决方案),则需要评估该解决方案在设计和配置方面提供的功能和集成界面。实施合适的迁移计划。
接收和传输边缘设备
这些边缘设备可能最难迁移,因为它们既是来自后端工作负载的数据的使用者,又是边缘设备接收的数据的生产者。在这种情况下,迁移上述边缘设备的类别的注意事项都适用,因此您需要特别注意处理此后端工作负载类别的迁移。
选择要先迁移的边缘设备类别后,您需要选择要迁移的后端工作负载的类别。
仅接收后端工作负载
这些后端工作负载与生成遥测事件或有关设备状态的信息的边缘设备相分离,因此出于以下原因,迁移相对简单:
- 后端工作负载订阅 Pub/Sub 主题。因此,设备无需了解这些信息的生产者即可使用它们。您可能不需要更新在边缘设备上运行的配置或软件。
- 后端工作负载不会向边缘设备发送命令或设备配置更新。因此,在迁移这些后端工作负载期间,您无需考虑此使用场景。
- 您可以保留现有的 Pub/Sub 主题以发布或使用消息。在这种情况下,如果您的目标环境继续将遥测事件和有关设备状态的信息转发到这些 Pub/Sub 主题,则后端工作负载可以继续订阅现有的 Pub/Sub 主题。
仅发送后端工作负载
这些后端工作负载需要全面评估,以了解在发送命令和设备配置更新时它们如何与边缘设备交互,以及如何将边缘设备迁移到目标环境。例如,如果您要使用 MQTT 代理迁移到目标环境,则这些后端工作负载可能会从使用 IoT Core API 发送命令或设备配置更新,以通过 MQTT 发布消息。在某些情况下,您可能不需要在边缘设备上执行软件或配置更新。例如,如果后端工作负载以相同的格式和相同 MQTT 主题发布命令和配置更新,IoT Core 会在来源环境中发布有关命令和设备配置更新的消息。如果要迁移到其他类型的目标环境(例如第三方解决方案),则需要评估解决方案提供的功能和集成界面,以设计和实现合适的解决方案迁移计划。
发送和接收后端工作负载
这些后端工作负载可能最难迁移,因为它们既是来自边缘设备的数据使用者,又是边缘设备接收的数据的生产者。在这种情况下,迁移上述后端工作负载类别的注意事项都适用,因此您需要特别注意处理此后端工作负载类别的迁移。
定义迁移批次
为了降低在单个批次中迁移大量内容的风险和复杂性,分批迁移每个类别中要迁移的项目。如需规划迁移批次,请执行以下操作:
通过对同构内容进行分组来设计迁移批次:为了对要迁移的项目进行分组,我们建议您选择一组条件,使得迁移批次中的项目具有共同的特征。例如,您可以根据以下条件将边缘设备归入不同的批次:
- 部署区域
- 设备注册到的 IoT Core 注册表
- 是否存在有意义的 IoT Core 设备元数据集
- 设备的部署状态
确定每个迁移批次的大小:对于迁移要迁移的项目的每个类别,我们建议您规划该类别中的第一个迁移批次。随着在迁移过程中获得经验和动力,您可以增加批次的大小。
评估迁移批次是否需要临时策略:根据您对要在迁移批次中迁移的项目进行分组的方式,适用于给定迁移批次的迁移策略可能取决于该批次中的项的特征。例如,如需迁移按部署状态分组的边缘设备,您必须考虑以下事项:
- 如果您的设备尚未制造或正在制造,您可以指示制造商更新其配置和软件,以便将设备迁移到目标环境。
- 如果您的设备已准备好部署,但尚未注册 IoT Core,您可以指示部署者召回这些边缘设备。然后,您可以更新它们的配置和软件,以将它们迁移到目标环境。
- 如果您的设备已经部署在目标站点中,并且已注册到 IoT Core,您可以更新其配置和软件,以便远程或现场将其迁移到目标环境。
规划和构建基础
在规划和构建阶段,您需要预配和配置支持 Google Cloud 上的工作负载的云基础架构和服务,如下所示:
- 构建资源层次结构。
- 配置身份和访问权限管理。
- 设置结算功能。
- 设置网络连接。
- 强化安全性。
- 设置监控和提醒。
如需了解如何构建支持工作负载及其依赖项的云基础架构和服务,请参阅迁移到 Google Cloud:构建您的基础。请遵循这些准则为您的环境构建基础。然后,您将继续执行本文档下一部分中所述的活动。
迁移边缘设备和后端工作负载
为目标环境构建基础后,您必须执行以下操作,以将边缘设备和后端工作负载迁移到目标环境。
- 预配和配置资源以实现目标环境的架构:作为迁移过程的第一步,您需要创建并设置新平台的基础架构。
- 将边缘设备和后端工作负载迁移到目标环境:验证目标环境准备就绪后,然后将后端工作负载和边缘设备迁移到目标环境。根据目标环境的架构以及您的使用场景,可能可以采用不同的迁移方法。本文档讨论了两步式迁移策略,该策略可让您的来源环境和目标环境在一段时间内共存。这种方法意味着如果迁移过程中发生故障,您可以回滚到来源环境。
- 停用来源环境:确认目标环境完全正常运行后,请停用来源环境。
为目标环境的架构预配和配置资源
在此阶段,您需要预配和配置目标环境。如目标环境的设计架构中所述,目标环境的架构总结如下:
- 在 Google Cloud 上运行的 MQTT 代理:在 Google Cloud 上运行 MQTT 代理,并将遥测事件和有关设备状态的信息从 MQTT 代理转发到后端工作负载。您的后端工作负载会将命令和控件发布到 MQTT 主题。
- Pub/Sub:您的边缘设备会将遥测事件和设备状态信息发布到 Pub/Sub,并从 Pub/Sub 接收命令。
- 第三方数据注入和设备管理平台:您可以设置第三方解决方案用于遥测事件以及有关设备状态的信息状态注入和设备管理。
如需详细了解每种架构,请参阅 Google Cloud 上的已连接设备架构。
将边缘设备和后端工作负载迁移到目标环境
在目标环境中预配和配置资源后,可将边缘设备和后端工作负载迁移到目标环境。在本部分中,您需要将边缘设备和后端工作负载从来源环境迁移到目标环境。来源环境和目标环境共存,直到您停用来源环境。
为减少停机时间,迁移过程包括以下阶段:
- 监控来源环境和目标环境。
- 将边缘设备元数据信息从来源环境迁移到目标环境。这些信息包括设备凭据、设备配置和设备状态。
- 更新边缘设备,使其同时连接到来源环境和目标环境。
- 将后端工作负载从来源环境迁移到目标环境。
- 更新边缘设备,以便仅连接到来源环境。
我们建议您在每个迁移阶段监控源环境和目标环境,并在进入下一阶段之前验证每个阶段的结果。
除了监控环境之外,您可能还需要引入黑盒测试来验证环境是否按预期工作。此类测试的一个示例是后端工作负载在检测到特定事件(例如温度超过 50 摄氏度)时向操作人员发送电子邮件通知。您可以创建一个测试使用场景,其中包含温度超过 50 摄氏度的遥测数据,并测试后端工作负载是否向操作人员发送电子邮件。
监控来源环境和目标环境
如需监控来源环境和目标环境,我们建议您考虑以下指标:
- 活跃设备数量:最近向 IoT Core 发送数据的设备数量。
- 设备通信错误数量:后端工作负载在给定时间段内与边缘设备通信时发生的错误数量(按错误类型分组)。此指标有助于您了解后端工作负载在与边缘设备通信时遇到问题。
- 设备操作数量:在给定时间段内,边缘设备执行的操作数量(按操作类型分组;操作的示例包括连接或断开连接请求、消息发布)。此指标可帮助您了解边缘设备是否按预期运行。例如,如果设备错误计数和设备操作计数值都在增加,则环境可能在向边缘设备发送消息时出现问题。
- 已接收字节数:在给定时间段内从边缘设备接收的字节数。此指标可帮助您了解网络入站流量统计信息。
- 已发送字节数:发送到边缘设备的字节数的增量计数。此指标可帮助您了解网络出站流量统计信息。
- 消息吞吐量:后端工作负载在给定时间段内处理的消息数量。此指标可帮助您了解环境是否根据边缘设备和后端工作负载之间的流量而扩缩。例如,如果活跃设备数量和设备操作数量增加,但消息吞吐量没有太大变化,您可能需要检查后端工作负载是否有足够的资源来处理不断增加的消息。
- 消息传送延迟时间:边缘设备发布消息后,在后端工作负载接收消息以进行处理之前经过的时间。例如,如果延迟时间值增加,您可能需要检查是否存在导致消息传送延迟的问题。
- 无法传送的消息数:无法传送到边缘设备和后端工作负载的消息数。未能将消息传送给使用者可能意味着边缘设备或后端工作负载可能没有响应。
- Cloud 资源配额用量:监控 Cloud 资源配额用量,确保环境有足够的资源可供扩缩。
监控来源环境
Cloud Monitoring 会自动从 IoT Core 和 Pub/Sub 收集指标。例如,IoT Core 公开 device/active_devices
、device/error_count
和 device/operation_count
指标。此数据可帮助您了解连接到来源环境的边缘设备数量,以及与 IoT Core 通信时出错的边缘设备数量。device/received_bytes_count
指标和 device/sent_bytes_count
指标可帮助您监控网络带宽消耗。
如需监控消息递送状态和健康状况,您可以使用 Monitoring Query Language 来衡量订阅的递送延迟时间健康状况得分、消息吞吐量和无法递送的消息数。
监控目标环境
监控目标环境,了解迁移是否成功。根据目标环境的架构,MQTT 代理或第三方 IoT 平台可能会提供以下指标:
MQTT 代理:如果目标环境基于 MQTT 代理,则代理可能会提供有关边缘设备和消息传送的指标。如需监控发送和接收的字节数,请参阅 Cloud Load Balancing 提供的指标。如果 MQTT 代理在 GKE 集群上运行,您可以配置 Cloud Monitoring 以定义将哪些指标发送到 Monitoring。如果 MQTT 代理在 Compute Engine 实例上运行,您可以使用默认信息中心或安装 Ops Agent 以从 Cloud Monitoring 实例收集详细遥测。
Pub/Sub:如果目标环境基于 Pub/Sub,则使用 Pub/Sub 主题和订阅。例如,您可以使用 Monitoring Query Language 来执行查询以提取订阅的递送延迟时间健康状况得分、消息吞吐量和无法递送的消息数。
IoT 平台:如果目标环境基于 IoT 平台,则该平台可能会提供有关边缘设备和消息传送的信息。如果第三方 IoT 平台在 GKE 集群上运行,您可以配置 Logging 和 Monitoring 以配置将哪些指标发送到 Cloud Monitoring。如果第三方 IoT 平台在 Cloud Monitoring 实例上运行,您可以使用默认信息中心或安装 Ops Agent 以从 Cloud Monitoring 实例收集详细遥测。
将边缘设备元数据信息从来源环境迁移到目标环境
如需迁移到新的 IoT 平台,您需要将边缘设备元数据信息迁移到目标环境。如需迁移边缘设备元数据,请考虑以下元数据类别:
设备凭据:IoT Core 使用密钥对和短期令牌对边缘设备进行身份验证。按照目标环境的必要步骤将设备注册到目标环境,并根据其身份验证机制在目标环境中创建设备凭据。
设备配置:您的目标环境可能是提供设备配置服务的第三方 IoT 平台,您的使用场景需要配置边缘所需状态的最新设备。在这种情况下,您需要将设备配置迁移到目标环境。在迁移期间,请确保设备配置在来源环境与目标环境之间保持同步。如果您的目标环境基于 MQTT 代理或 Pub/Sub,并且未提供管理设备配置的方法,您可能需要以长期存档的形式将设备配置存储在 Cloud Storage 存储桶中。
有关设备状态的信息:确保边缘设备首次连接到目标环境时更新其状态,以便目标环境提供有关设备状态的最新信息。
完成此步骤后,请验证是否已正确配置所需的设备信息和凭据,以及边缘设备是否可以连接到目标环境并进行身份验证。
更新边缘设备以同时连接到来源环境和目标环境
进入此阶段后,您的目标环境即可接受来自边缘设备的连接。您可以更新边缘设备,将其连接到来源和目标环境以发送遥测事件和有关设备状态的信息。更新边缘设备时,您必须采取的方法取决于边缘设备类别。
对于会发送设备遥测事件或有关设备状态的信息、但不会从后端工作负载接收命令或设备配置更新的边缘设备,应执行以下操作:
- 更新边缘设备,使其将遥测事件和有关设备状态的信息发送到来源环境和目标环境。
- 验证目标环境是否正确接收遥测事件和有关设备状态的信息。
相反,对于不会发送遥测事件或有关设备状态的信息、但会接收来自后端工作负载的命令或配置更新的边缘设备,应执行以下操作:
- 更新边缘设备,以接收来自目标环境的命令和配置更新。
- 确保您的边缘设备向目标环境报告命令执行或配置更新的结果。
- 从目标环境向边缘设备发送命令和配置更新。
- 验证该命令和配置更新是否成功执行。
对于不但会发送遥测事件和有关设备状态的信息、并且会从后端工作负载接收命令或配置更新的边缘设备,应执行以下操作:
- 更新边缘设备,使其将遥测事件和有关设备状态的信息发送到来源环境和目标环境。
- 验证目标环境是否正确接收遥测事件和有关设备状态的信息。
- 更新边缘设备代码,以接收来自目标环境的命令和配置更新。
- 确保您的边缘设备向目标环境报告命令执行或配置更新的结果。
- 从目标环境向边缘设备发送命令和配置更新。
- 验证该命令和配置更新是否成功执行。
针对您的使用场景运行这些步骤后,所有边缘设备类别都会执行以下操作:
- 同时连接到来源环境和目标环境。
- 将遥测事件和有关设备状态的信息同时发送到来源环境和目标环境。
- 仅从来源环境接收命令和配置更新,因为您尚未迁移后端工作负载。
最好避免后端工作负载处理边缘设备同时发送到来源环境和目标环境的同一消息。我们建议您在目标环境中尽可能以最小值配置消息保留期限。通过此方法,您可以验证目标环境是否按预期工作。它还允许您在迁移后端工作负载之前检查目标环境中的消息是否到期。您可以在下一个迁移步骤之后调整目标环境中的消息保留配置。
如果由于技术或监管原因,边缘设备无法同时连接到来源环境和目标环境,请先将边缘设备配置为断开与来源环境的连接。然后,您只连接到目标环境。在这种情况下,仍与来源环境连接的后端工作负载会停止接收来自边缘设备的遥测事件和设备状态信息。设备无法再向边缘设备发送命令和配置更新。
我们还建议您预配和配置缓冲区存储机制。当后端工作负载仍连接到来源环境时,此方法可帮助您避免在设备将遥测事件和有关设备状态的信息发送到目标环境时丢失数据。然后,后端工作负载可以在连接到目标环境时使用此信息。例如,您可以基于 MQTT 代理、Pub/Sub 或 IoT 平台配置目标环境的消息保留功能。这种方法可让您将未确认的消息在完成迁移的下一阶段所需的时间内保持可用,如下面的部分中所述。
将后端工作负载从来源环境迁移到目标环境
您将后端工作负载迁移到目标环境。根据目标环境的架构,您必须采用不同的方法来迁移工作负载。
Google Cloud 上的 MQTT 代理:如果您的目标环境基于 MQTT 代理,以下因素可指导您的迁移方法:
- 对于会从边缘设备接收遥测事件或有关设备状态的信息、但不发送命令或设备配置更新的后端工作负载:配置后端工作负载订阅 MQTT 主题,以接收来自边缘设备的遥测事件和有关设备状态的信息。
- 相反,对于不会接收遥测事件或有关设备状态的信息、但会发送命令或设备配置更新的后端工作负载:配置后端工作负载以发布消息,用于将命令和配置更新发送到 MQTT 主题,以在目标环境中处理命令和配置更新。
- 对于既会从边缘设备接收遥测事件或有关设备状态的信息、又会发送命令或设备配置更新的后端工作负载:配置后端工作负载订阅 MQTT 主题以接收遥测,接着配置后端工作负载以发布消息,用于将命令和配置更新发送到 MQTT 主题。
Pub/Sub:如果目标环境基于 Pub/Sub,以下因素将指导您的迁移方法:
- 对于会接收来自边缘设备的遥测事件或有关设备状态的信息、但不会发送命令或设备配置更新的后端工作负载:在目标环境中新建 Pub/Sub 订阅,并更新后端工作负载以使用新创建的订阅。
- 相反,对于不会接收遥测事件或有关设备状态的信息、但会发送命令或设备配置更新的后端工作负载:创建 Pub/子主题,并配置后端工作负载以发布消息,用于将命令和配置更新发送到 Pub/Sub 主题。
- 对于既会从边缘设备接收遥测事件或有关设备状态的信息,又会发送命令或设备配置更新的后端工作负载:配置后端工作负载以订阅 Pub/Sub 主题,用于接收遥测事件和有关设备状态的信息。然后,配置后端工作负载以发布消息,用于将命令和配置更新发送到 Pub/Sub 主题。
第三方 IoT 平台:如果您的目标环境基于第三方 IoT 平台,您必须按照第三方 IoT 平台说明在后端工作负载和物联网平台之间设置集成。然后,您可以验证后端工作负载是否能够接收来自边缘设备的遥测事件和有关设备状态的信息。您还将检查后端工作负载是否可以发布消息,以将命令或设备配置更新发送到边缘设备。
如需验证边缘设备和后端工作负载是否按预期工作,我们建议您执行以下操作:
- 验证后端工作负载是否接收遥测事件和有关设备状态的信息,并正确做出响应。例如,如果您的后端工作负载生成近乎实时的信息中心来监控特定的遥测数据,请验证信息中心是否使用最新的数据时间段进行更新。
- 验证后端工作负载是否按预期将命令和配置更新发送到边缘设备。验证边缘设备是否按预期响应。
- 验证边缘设备是否向目标环境报告遥测事件和有关设备状态的信息。
此时,后端工作负载将执行以下操作:
- 连接到目标环境。
- 从目标环境中接收来自边缘设备的遥测事件和有关设备状态的信息。
- 从目标环境将命令和配置更新发送到边缘设备。
现在,您可以更新目标环境的消息保留配置(当您将边缘设备同时连接到来源环境和目标环境,您将消息保留配置设置为最小值),根据您的要求进行设置。
当您更新后端工作负载的配置以从目标环境接收遥测事件和有关设备状态的信息时,后端工作负载可能需要时间来应用此更新后的配置。在临时阶段,后端工作负载无法使用边缘设备发送的遥测事件以及有关设备状态的信息。如果您的使用场景需要完整的数据完整性,您可能需要先配置目标环境的消息保留期限,然后再更新后端工作负载的配置。此方法可确保在后端工作负载可以应用新配置和使用消息之前,消息不会过期。
更新边缘设备以仅连接到目标环境
至此,您已成功将边缘设备迁移到目标环境,但是,它们仍在使用来源环境。为了完成迁移步骤,请通过移除与 IoT Core 的连接并集成边缘设备,更新边缘设备以连接到目标环境。完成此更新后,您的边缘设备仅连接到目标环境。
停用来源环境
将边缘设备和后端工作负载迁移到目标环境并验证目标环境后,您将停用来源环境。
如需停用来源环境,请执行以下操作:
- 删除订阅 IoT Core 主题的 Pub/Sub 订阅。
- 删除未使用的 Pub/Sub 主题。如果您重复使用 Pub/Sub 主题,请确保不要删除通过 IoT Core 创建的主题。您可以使用 IoT Core 控制台找到 IoT Core 使用的 Pub/Sub 主题。
- 删除 IoT Core 设备和注册表。
迁移后优化您的环境
优化是迁移的最后一个阶段。在此阶段,您将使环境比以前更高效,同时,您将对可重复的循环执行多次迭代,直到您的环境满足优化要求。这种可重复的循环步骤如下:
- 评估您的当前环境、团队和优化循环。
- 确定优化要求和目标。
- 优化您的环境和团队。
- 调整优化循环。
以下部分依赖于《迁移到 Google Cloud:优化您的环境》。
评估目标环境、团队和优化循环
虽然您进行的首次评估侧重于来源环境,但评估的这个阶段适用于优化阶段。如需详细了解如何评估目标环境、团队和优化循环,请参阅衡量环境、团队和优化循环。
确定优化要求
查看您可能需要针对目标环境实施的以下优化要求:
- 设置自动扩缩:使用 Google Cloud 服务(例如托管式实例组或 Google Kubernetes Engine),以在负载增加时,自动将您的 IoT 解决方案和后端工作负载横向或纵向扩容。此方法有助于确保在部署大型设备群时,设备注册和遥测数据存储区能够处理大量数据。由于 Spanner 是一个具有高可用性且可扩缩的分布式事务型数据库,因此它非常适合用于存储遥测数据和设备注册信息。
- 增强日志记录和监控机制:优化和集成日志记录和监控机制以形成集中式解决方案。您可能还需要改进某些监控指标,以帮助您了解边缘设备如何与 IoT 解决方案交互。您还应记录和关联活动,例如连接事件、断开连接事件和遥测事件。我们还建议您监控系统和应用错误。如果可能,请在系统级发生某些严重故障时设置提醒。
- 使用 Google Cloud 安全服务保护您的工作负载:Security Command Center 是一项集中式漏洞和威胁报告服务,可帮助您通过评估安全性和数据攻击面,强化安全状况。它提供资产清点和发现功能,并且可以帮助您识别配置错误、漏洞和威胁。Security Command Center 还可帮助您降低和消除风险。如需了解如何帮助保护在 Google Kubernetes Engine (GKE) 上运行的工作负载,请参阅 Google Kubernetes Engine 安全概览,了解如何保护 GKE 工作负载。
完成优化
填写优化要求列表后,请完成优化阶段。如需了解如何执行此操作,请参阅迁移到 Google Cloud:优化您的环境。
后续步骤
- 了解 Google Cloud 上的已连接的设备架构。
- 了解自动预配和配置边缘与裸机系统和服务器的最佳做法。
- 了解验证迁移计划的最佳做法。
- 如需查看更多参考架构、图表和最佳实践,请浏览云架构中心。
- 了解强化环境安全性的选项。