ThingWorx 高可用性
ThingWorx 高可用性群集概述
要缩短关键物联网 (IoT) 系统的停机时间,可以将 ThingWorx 配置为在高可用性 (HA) 环境中以群集模式运行。如果所有组件均已正确配置,则群集可提供更好的可伸缩性和高可用性。
|
不支持对 HA 部署使用多个可用性区域。ThingWorx 与 Apache Ignite 节点之间持续通信时,区域之间的网络延迟可能会过长。
|
以下各部分概述了群集环境的设置和配置,以及 ThingWorx HA 部署的组件和注意事项。
与仅用于满足功能和规模要求的部署相比,所有 HA 部署都需要额外的资源。这些额外资源分为硬件资源 (如服务器、磁盘、负载平衡器等) 和软件资源 (如同步服务和负载平衡器)。然后,配置其他资源,以确保 HA 部署内没有单点故障。
所有 HA 部署都应基于 SLA (服务级别协议),用户可在其中分析应用程序部署的运行时间需求。例如,系统每月离线多少小时?能否满足系统故障停机或应用程序升级停机,或者能否同时满足这两种停机?HA 系统所需的额外资源数量取决于其要实现的 SLA。通常情况下,随着 SLA 的增长,用于满足 SLA 的资源需求也在增长。
术语词汇表
• 高可用性
一种系统或组件,能够在期望的长时间内连续运行。
• 可伸缩性
通过增加内存、磁盘或 CPU,或者通过添加服务器来增加系统可支持的负载的能力。
• 群集
同一应用程序中可同时运行的多个实例。群集提供了高可用性和可伸缩性。
• 单一实例
单例服务器是群集中将处理跨群集行为的一台服务器,如计时器和计划程序。它可确保任务仅在群集中运行一次。
• 虚拟 IP 地址
表示应用程序的 IP 地址。使用虚拟 IP 的客户端通常会路由到负载平衡器,然后将该请求定向到运行该应用程序的服务器。
• 负载平衡器
此设备用于接收网络流量并将其分发给准备接受网络流量的应用程序。
• 故障转移
一种备份运行模式,当主要组件因故障或计划停机时间而不可用时,辅助系统组件将承担系统组件 (如处理器、服务器、网络或数据库) 的功能。
• 最终一致性
更改需要在一定时间后传播到群集环境中的所有服务器。有关详细信息,请参阅
最终一致性。
• 共享状态
在群集中多个服务器之间共享的状态,无论哪台服务器查看此状态,显示均相同。属性数据是共享状态的一个示例,其中的当前属性值在所有服务器中均相同。
可实现高可用性的 ThingWorx 参考体系结构
下图所示为群集环境中的 ThingWorx。
以下组件可以是群集部署的一部分:
• 用户和设备 - 在 HA 功能中没有角色。从这些角度来看,没有任何变化。即使主 ThingWorx 服务器发生变化,它们也会始终使用相同的 URL 和 IP 地址。
• 防火墙 - 无 HA 功能,可将其视为可选项。防火墙通常用于实现安全要求。
• 负载平衡器 - 负载平衡器用于管理其所支持应用程序的虚拟 IP 地址。传送到该虚拟 IP 地址的所有流量都将定向到可接收这些流量的活动应用程序。
• ThingWorx Connection Server - 接收来自资产的 Web 套接字流量并将其传送到 ThingWorx Platform。连接服务器可在群集配置中运行。将资产定向至特定连接服务器后,应始终使用同一连接服务器。如果该服务器离线,则应将资产重定向到另一个可用的连接服务器。
• ThingWorx Foundation - 接收所有用户和资产流量。
• ThingWorx 存储库 - 这些存储库为必需的存储位置,如 ThingworxPlatform、ThingworxStorage 和 ThingworxBackupStorage,以及为支持实现而添加的任何其他存储位置。对于群集环境,存储文件夹必须存在于所有 ThingWorx 服务器都具有同等访问权限的公用存储位置中。
• Apache ZooKeeper - ZooKeeper 是一种集中的协调服务,ThingWorx Connection Server 和 Ignite 可通过其实现服务发现、单例选择和分布式协调。
• Apache Ignite - Ignite 提供分布式内存缓存,用于在群集中各个服务器之间共享状态。
• PostgreSQL - 对于 HA 配置,PostgreSQL 将通过热备用节点配置中的两个或多个服务器节点进行操作。其中一个节点可接收所有写入流量,而其他节点可接收所有读取流量。在所有节点之间激活流式复制,从而保持每个节点处于最新状态。
• Pgpool-II - 仅在 PostgreSQL HA 配置中使用。Pgpool-II 节点会接收 ThingWorx 请求 (读取和写入),并将其定向到相应的 PostgreSQL 节点。Pgpool-II 还会监控每个 PostgreSQL 节点的健康状况,并可在其中一个节点处于离线状态时启动故障转移并对任务进行重定向。
• Microsoft SQL Server (未显示) - 使用 Microsoft 故障转移以确保至少一台 MS SQL Server 处于在线状态且可用。
• InfluxDB - ThingWorx 群集配置不需要执行 InfluxDB 实施。如果需要满足实现的提取要求,请确保已对 HA 进行了配置。