2. AVEVA工业平台典型架构解析

在讨论高可用与灾备之前,必须先看清 AVEVA 工业平台“长什么样”。很多现场的高可用方案之所以失效,并不是因为集群软件配置错误,而是因为设计者没有识别出真正的单点依赖——例如把注意力全放在 SCADA 服务器冗余上,却忽略了历史库、许可服务器或统一身份认证这些“看不见但一断就全停”的组件。本节从系统组成、服务分层、数据流三条线索切入,最后落到高可用灾备的关键依赖点上。

一、系统组成:从现场到企业级的四类角色

一个典型的 AVEVA 工业平台(以 System Platform + Historian + 可视化客户端为主干)可以按角色划分为四类组件:

  • 采集与边缘层:现场 PLC/DCS/RTU 通过 OPC UA、Modbus TCP、EtherNet/IP 等协议接入,由通信驱动(如 OI Server、DI Server)或边缘网关完成协议转换与数据缓存。
  • 平台服务层:包括 Galaxy Repository(GR,对象与模型仓库)、Application Server(对象引擎与脚本执行)、View Engine(图形渲染)、Alarm Server(报警与事件)、Historian(历史数据存储与检索)。
  • 客户端与展示层:Operations 客户端、Web 客户端、移动端,以及报表与仪表板工具。
  • 支撑服务层:SQL Server(GR 与 Historian 的元数据/事件存储)、Active Directory 或 AVEVA 统一身份、License Server、时间同步源(NTP/PTP)。

这四类角色在物理上可能分布在多台服务器上,也可能部分合并部署。理解它们之间的调用关系,是判断“哪些组件必须冗余、哪些可以降级”的前提。

二、服务分层:谁依赖谁

从依赖方向看,平台呈现明显的分层结构:底层是操作系统、SQL Server、AD、License 与时间源;中间是 GR、Application Server、Historian 等平台服务;上层是 View Engine、Web 服务与客户端。上层依赖下层,下层故障会向上放大。例如 License Server 不可用,Application Server 可能在宽限期后停止运行;AD 不可用,客户端登录与权限校验会失败;时间源漂移,会导致报警与历史数据时间戳错乱,进而影响事件顺序分析。

因此,高可用设计不能只盯着“最显眼”的 SCADA 节点,而应按依赖链逐层识别冗余需求。下面这张图给出了典型部署下的分层与数据流关系,并标注了关键依赖点。

AVEVA 工业平台典型分层架构与关键依赖点 采集与边缘层 PLC / DCS / RTU OPC UA / Modbus OI / DI Server 边缘网关缓存 实时数据 平台服务层 Galaxy Repository 对象模型仓库 Application Server 对象引擎/脚本 Historian 历史数据存储 Alarm Server 报警与事件 View Engine 图形渲染 画面/报警/趋势 客户端与展示层 Operations 客户端 Web / 移动客户端 报表与仪表板 支撑服务层(关键依赖) SQL Server Active Directory License Server NTP / PTP 时间源 关键依赖点(单点故障风险): SQL Server 实例 · AD 域控 · License Server · 时间源 · GR 主节点 · Historian 主节点

三、数据流:从现场值到历史趋势

以一路温度信号为例,其典型数据流为:PLC 寄存器 → OI Server 扫描(示例扫描周期 500 ms)→ Application Server 对象属性更新 → Alarm Server 比较报警限值 → Historian 按死区(示例 0.5 ℃)与采样周期(示例 1 s)决定是否落库 → View Engine 从内存或 Historian 读取并渲染趋势。这条链路上任何一环中断,都会导致“画面还在动但历史断档”或“历史正常但报警不触发”等局部失效。高可用设计需要针对每一环明确:是否允许短暂中断、中断后如何补数、切换时是否丢点。

四、高可用灾备关键依赖点

结合上面的分层与数据流,可以把关键依赖点归纳为以下几类:

依赖点故障影响冗余/容错建议
SQL Server(GR/Historian 元数据) GR 无法签出、Historian 无法写入、报警事件丢失 AlwaysOn 可用性组或故障转移集群;独立实例避免与平台服务争抢资源
Active Directory / 统一身份 客户端无法登录、权限校验失败、服务账户认证中断 多域控部署;本地缓存凭据作为降级手段;服务账户使用托管账户
License Server 宽限期后 Application Server 停止、客户端无法连接 冗余许可服务器;离线许可作为应急;监控许可到期与占用
时间源(NTP/PTP) 报警与历史时间戳错乱、事件顺序不可信 双时间源;平台内统一指向同一层级;定期校验偏差
Galaxy Repository 主节点 无法部署对象、无法签出、模型变更停滞 GR 冗余(主备/集群);定期备份 Galaxy 并验证恢复
Historian 主节点 历史数据断档、趋势不可用、报表缺失 Historian 冗余(采集端缓存+存储复制);明确切换时的数据补传策略

常见误区:只对 Application Server 做冗余,却让 GR、Historian、License、AD 保持单实例。结果是主节点切换成功,但平台整体仍不可用。高可用必须沿依赖链逐层检查,而不是只冗余“最显眼”的那一层。

五、一个可执行的依赖检查清单

在实际项目中,可以用下面这份清单快速核对关键依赖是否已覆盖。字段可根据项目规模裁剪,但建议至少保留“组件、当前部署方式、是否单点、冗余方式、切换验证结果”五项。

AVEVA 平台高可用依赖检查表(示例)
组件                  当前部署        是否单点   冗余方式              切换验证
SQL Server           单实例          是         AlwaysOn AG           待验证
Active Directory     双域控          否         —                     已通过
License Server       单实例          是         备用许可服务器        待验证
NTP 时间源           单源            是         双上游源              待验证
Galaxy Repository    单节点          是         主备 GR               待验证
Application Server   双节点          否         故障转移集群          已通过
Historian            单节点          是         冗余 Historian        待验证
View Engine          双节点          否         负载均衡              已通过

填写时要注意:“是否单点”与“冗余方式”必须成对判断。例如 AD 部署了两台域控,但两台虚拟机在同一台物理主机上,逻辑上不是单点,物理上仍是单点。灾备设计必须同时考虑逻辑冗余与物理隔离,否则机房级故障仍会导致全停。