Skip to Content
架构Edge Devices & Agent

边缘设备与代理

边缘设备是IronFlock的主要执行节点。每个设备是一台支持Linux的机器 — 工业PC、Raspberry Pi、NVIDIA Jetson、网关或任何具有Linux内核的硬件 — 运行IronFlock代理和一个或多个Docker容器化应用程序

IronFlock代理

代理是一个运行在设备上的轻量级Go二进制文件,负责:

  • 容器管理 — 启动、停止和监控所有已安装应用的Docker容器
  • WAMP连接 — 维护与中央消息代理的持久加密WebSocket连接
  • OTA更新 — 接收并应用代理自身、主机操作系统和已安装应用程序的更新
  • 隧道 — 通过反向代理隧道提供对设备服务(HTTP、SSH、VNC、TCP、UDP)的安全远程访问 — 无需开放端口
  • 网络管理 — 配置设备上的Wi-Fi、LAN和LTE连接

代理是唯一直接在主机操作系统上运行的IronFlock组件。其他所有内容都在Docker容器内运行。

自主运行

边缘设备设计为独立于中央服务运行。如果网络连接断开:

  • 应用继续运行 — 所有容器化应用程序继续正常运行
  • 应用可以缓冲数据 — 遥测数据在本地排队,连接恢复后转发到FleetDB

这种自主性是一个基本的设计选择。在工业环境中,网络可靠性无法保证,边缘应用程序的核心运行不应依赖于云连接。

设备上运行的内容

┌─────────────────────────────────────────┐ │ Linux Host OS │ │ │ │ ┌─────────────────────────────────┐ │ │ │ IronFlock Agent │ │ │ │ (连接、OTA、隧道) │ │ │ └────────────┬────────────────────┘ │ │ │ │ │ ┌────────────┴────────────────────┐ │ │ │ Docker Runtime │ │ │ │ │ │ │ │ ┌─────────┐ ┌─────────┐ │ │ │ │ │ App A │ │ App B │ ... │ │ │ │ │ (OPC UA │ │ (自定义 │ │ │ │ │ │ 读取器) │ │ 逻辑) │ │ │ │ │ └─────────┘ └─────────┘ │ │ │ └─────────────────────────────────┘ │ └─────────────────────────────────────────┘ │ (仅出站WSS) WAMP消息代理

每个应用在自己的容器中运行,拥有自己的依赖项。应用可以用任何编程语言编写 — Python、Go、Rust、Node.js、C++或任何可以在Docker容器中运行的语言。

支持的硬件

IronFlock支持任何支持Docker的Linux设备:

平台架构示例
工业PCx86_64Beckhoff、Advantech、Kontron、Dell Edge
单板计算机ARM64、ARMv7Raspberry Pi 4/5、BeagleBone
AI加速器ARM64NVIDIA Jetson Nano、Orin、Xavier
网关ARM64、x86_64Teltonika、Moxa、Advantech
自定义硬件ARM (v5、v6、v7)、ARM64、x86_64任何支持Docker的Linux设备

设备配置

设备可以通过多种方式添加到IronFlock:

  1. 使用FlockFlasher刷写 — 使用FlockFlasher桌面应用程序将IronFlock OS写入设备存储。设备启动时代理已预配置,自动连接。
  2. 安装代理 — 在现有Linux系统上,安装代理二进制文件并提供包含设备凭证的配置文件(.flock文件)。
  3. OEM预注册 — 提前注册设备序列号。当设备通电并连接时,自动分配到正确的项目。

通信模型

默认情况下,边缘设备只进行出站连接。代理通过加密WebSocket(WSS)连接到WAMP消息代理,不需要在任何端口上监听。这意味着:

  • 默认情况下,设备或其网络不需要入站防火墙规则
  • 设备不可从互联网发现或寻址
  • 远程访问通过反向隧道提供 — 由设备发起,而非操作员

但是,设备端口可以在需要时选择性打开 — 例如暴露设备上运行的本地HMI、REST API或其他服务。端口访问通过IronFlock UI配置和管理。

完整的安全架构请参见安全

Last updated on