边缘设备与代理
边缘设备是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设备:
| 平台 | 架构 | 示例 |
|---|---|---|
| 工业PC | x86_64 | Beckhoff、Advantech、Kontron、Dell Edge |
| 单板计算机 | ARM64、ARMv7 | Raspberry Pi 4/5、BeagleBone |
| AI加速器 | ARM64 | NVIDIA Jetson Nano、Orin、Xavier |
| 网关 | ARM64、x86_64 | Teltonika、Moxa、Advantech |
| 自定义硬件 | ARM (v5、v6、v7)、ARM64、x86_64 | 任何支持Docker的Linux设备 |
设备配置
设备可以通过多种方式添加到IronFlock:
- 使用FlockFlasher刷写 — 使用FlockFlasher桌面应用程序将IronFlock OS写入设备存储。设备启动时代理已预配置,自动连接。
- 安装代理 — 在现有Linux系统上,安装代理二进制文件并提供包含设备凭证的配置文件(
.flock文件)。 - OEM预注册 — 提前注册设备序列号。当设备通电并连接时,自动分配到正确的项目。
通信模型
默认情况下,边缘设备只进行出站连接。代理通过加密WebSocket(WSS)连接到WAMP消息代理,不需要在任何端口上监听。这意味着:
- 默认情况下,设备或其网络不需要入站防火墙规则
- 设备不可从互联网发现或寻址
- 远程访问通过反向隧道提供 — 由设备发起,而非操作员
但是,设备端口可以在需要时选择性打开 — 例如暴露设备上运行的本地HMI、REST API或其他服务。端口访问通过IronFlock UI配置和管理。
完整的安全架构请参见安全。
Last updated on