跳到主要内容

PI 连接器高可用与故障转移

本页说明在部署多套 taosX、并由引擎侧以多个 Xnode 管理时,PI 连接器任务的调度方式、故障转移行为,以及迁移窗口内的数据完整性表现,便于在生产环境评估冗余部署方案。

taosX 与 Xnode​

二者对应同一类数据接入执行能力,称呼随场景不同:

场景名称说明
外部部署与运维taosX独立安装、以服务或进程运行的数据接入组件;监听 gRPC 等端口,供 Agent 与任务执行使用
引擎内集群管理Xnode在 TDengine 中登记与管理的数据接入执行节点;通过 SQL(如 CREATE XNODE、SHOW XNODES、DRAIN XNODE)纳入调度

创建 Xnode 时,url 指向对应 taosX 实例的 gRPC 地址(默认端口 6055)。守护进程 xnoded 负责该执行节点与 taosd 的连接与调度协同。概念与 SQL 详见 数据接入(Xnode);组件部署详见 taosX 参考手册。

下文在谈「部署几套服务、打补丁、配置 Agent 地址」时用 taosX;在谈「集群内登记、调度、排空、节点状态」时用 Xnode。

概览​

在登记了多个 Xnode 的集群中,PI 连接器任务可以在某一 taosX 实例故障或计划维护后,迁移到其他 Xnode 对应的 taosX 上继续运行。调度模型是「同一时刻一个任务实例运行在一个 Xnode 上」,高可用主要靠故障后的重新调度完成。

迁移或宕机期间会产生短暂的采集中断。实时任务可通过 重启补偿时间 回填最近一段时间的数据;超出该窗口,或尚未刷盘的在途数据,需要结合 历史数据回填 等手段按业务要求处理。

能力说明
单套 taosX / 单个 Xnode 不可用时,任务在其他节点上继续或恢复运行支持,见下文调度与故障转移
迁移窗口内的 live 值、Snapshot 更新、乱序迟到值依赖重启补偿窗口与后续回填流程
同一 PI 任务在两个节点上同时运行调度与执行侧有防双跑机制
滚动升级单套 taosX可先 DRAIN XNODE 迁走任务再升级
备注

下文行为基于 Xnode 通用调度机制与 PI 连接器现有实现说明。PI 数据接入任务的专项高可用测试仍在完善中。

调度模型​

PI 任务按单个 Job 调度到「当前最优」的一个 Xnode(对应 Xnode 在线、已挂接所需 Agent、空闲内存更充足等),同一时刻在一个 Xnode 上运行。

  • 当前不是 active-standby 双实例并行采集,而是单实例调度。
  • 节点故障后,由调度器在可用 Xnode 上重新拉起任务。
  • 可在登记了 2 个或 3 个(及更多)Xnode 的集群中运行;节点数量不改变「单实例运行」语义。

故障转移行为​

当运行中任务所在的 taosX 被停止、打补丁重启或宕机时:

  1. Xnode 对 taosX 做心跳检测(约每 5 秒一次)。
  2. 节点失败后被标记为 offline;经过约 6 次退避重试后,再平衡逻辑在可用 Xnode 中为相关 Job 选择最优节点并重新拉起。
  3. 典型的「检测 + 迁移」延迟约在 10–30 秒量级(视网络与集群负载而定)。

计划性维护可主动迁移任务,避免等故障超时:

DRAIN XNODE <id>;

该命令将指定 Xnode 上的已有任务重新分配到其他 Xnode 执行。语法说明见 排空节点。

故障转移前提​

请将 taosX-Agent 配置为可连接全部相关 taosX 的 endpoint(即各 Xnode 登记的 gRPC 地址)。若 Agent 只指向单一 taosX,该实例不可用时任务可能无处可迁移。Agent 配置见 taosX-Agent 配置参考。

故障转移期间的订阅、检查点与状态​

故障转移会中断 PI DataPipe 订阅:

  • 原 taosX 上的订阅随进程退出而结束。
  • 新 Xnode(对应另一套 taosX)上的任务实例会新建 DataPipe,并重新订阅相关点位。

当前实现下:

  • PI 实时采集任务暂无随任务迁移的 checkpoint / 同步状态。
  • 实时任务的 重启补偿时间(对应 MaxBackfillRange)会在重启后按配置窗口回填最近一段时间的历史数据,适合覆盖较短中断。
  • 使用重启补偿时需了解其边界:
    • 崩溃时尚未刷盘的在途数据可能丢失;
    • 早于补偿窗口的迟到数据不会被该机制覆盖。

中断窗口内的数据如何处理​

中断窗口内产生或更新的数据是否写入 TDengine,取决于中断时长与重启补偿配置:

  • 落在重启补偿窗口内的历史数据,可在任务于新 Xnode 拉起后按配置回填。
  • live 值、PI Snapshot 更新,以及乱序/迟到且超出补偿窗口的值,需要在确认中断时间范围后,用 PI backfill 任务 按时间段补录,并做数据量与抽检校验。

如何避免双节点同时跑同一任务​

系统通过调度与执行侧约束降低同一 PI 任务双跑导致重复写入的风险:

  • Xnode 运行在 mnode leader 上;worker 只确认一条带 connection-id 的调度连接,新调度器会对旧连接发送断开。
  • 数据接入 worker 侧调度拒绝同一 (task_id, job_id) 的重复启动。

滚动升级与计划维护​

可以逐台对 taosX 打补丁或升级,而不必主动停止整个采集业务,推荐流程:

  1. 对该 taosX 对应的 Xnode 执行 DRAIN XNODE <id>,将任务迁走。
  2. 对该 taosX 打补丁 / 升级 / 重启。
  3. 对应 Xnode 重新 online 后,再按调度策略承接新任务。

补充说明:

  • 计划性迁移同样会带来与故障转移类似的短暂停采窗口,数据完整性表现与上文一致。
  • 若被升级节点同时承载 mnode leader,xnoded 切换期间可能出现集群范围内任务短暂停止,之后再自动恢复。

推荐生产架构​

面向多地 PI 汇聚到中心 TDengine、并需要数据接入侧冗余的场景,建议:

组件建议
TDengine3 个 dnode,mnode 三副本
taosX / Xnode部署 2–3 套 taosX,并在引擎中登记为对应 Xnode
存储共享存储(满足企业版 HA 部署要求)
taosX-Agent部署在可访问 PI 的 Windows 主机;配置全部相关 taosX endpoint
PI 依赖已授权的 PI AF SDK(及相应 Windows 服务账户权限)

网络与 Agent 代理拓扑选型仍参见 部署架构。库侧副本高可用参见 高可用(与 Xnode 任务调度不是同一层能力)。

版本、组件与许可​

使用上述能力时,通常需要:

  • TDengine TSDB Enterprise v3.4.0.0 及以上
  • 企业版许可
  • 已部署并授权的 PI AF SDK(随 taosX / taosX-Agent 所在 Windows 环境)
  • 满足部署要求的共享存储
  • 已创建对应 Xnode,且 taosX-Agent 指向集群内全部相关 taosX endpoint

相关文档​