一、简介:为什么 AI 系统也需要双机热备?
工业 AI 场景:
边缘质检:RT-Linux + GPU 推理,断线 200 ms → 漏检 3 张图像,整批报废。
机械臂控制:主节点宕机,备用机必须在 1 s 内接管 TCP 控制套接字,否则急停触发停产。
传统 HA (Keepalived/Corosync)重在“秒级”漂移;RT-Linux + Heartbeat可达百毫秒级,满足实时闭环。
掌握本文技能= 让 AI 模型服务像 PLC 一样“永不停机”,提升产线 OEE(设备综合效率)2%-5%。
二、核心概念:5 个关键词先搞懂
| 关键词 | 一句话 | 本文出现形式 |
|---|---|---|
| Heartbeat | 轻量级 HA 工具,用户空间守护进程,UDP/串口发“ I'm alive ” | hbd守护进程 |
| 资源 (Resource) | 需要漂移的“东西”:VIP、AI 推理服务、GPIO 控制权 | IPaddr, systemd 服务 |
| 故障检测时间 (Deadtime) | 主节点多久不回复即被判失效 | deadtime 0.5s |
| 抢占 (Failback) | 主节点恢复后是否再次抢回资源 | 默认auto_failback off |
| 实时链路 | 基于 PREEMPT_RT 的千兆网卡 + PTP 时间同步 | 保障检测精度 |
三、环境准备:10 分钟搭好“热备实验室”
1. 硬件
2 × x86_64 工控机(≥2 核,8 GB,千兆网卡同一交换机)
1 × 串口线(可选,用于冗余心跳)
1 × 共享存储(可选,NFS/USB 磁盘均可)
2. 软件
| 组件 | 版本 | 安装命令 |
|---|---|---|
| RT 内核 | 5.15.71-rt53 | 见附录一键脚本 |
| Heartbeat | 3.0.6 | apt install heartbeat |
| AI 推理服务 | TensorRT 8.6 | 提供 systemd 单元即可 |
3. 网络规划
表格
复制
| 节点 | 主机名 | 静态 IP | 角色 |
|---|---|---|---|
| 主 | rt-ai-master | 192.168.1.10/24 | Active |
| 备 | rt-ai-backup | 192.168.1.11/24 | Standby |
| VIP(漂移) | — | 192.168.1.100/24 | 对外服务地址 |
4. 一键安装 RT 内核(可复制)
#!/bin/bash # install_rt.sh VER=5.15.71 RT_PATCH=patch-5.15.71-rt53.patch.xz wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v$VER/linux-image-*-$VER-rt53*amd64.deb wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v$VER/linux-headers-*-$VER-rt53*amd64.deb sudo dpkg -i linux*.deb && sudo update-grub && sudo reboot重启选 RT 内核进入。
四、应用场景:AI 边缘质检产线(300 字)
某汽车零部件厂部署 AI 视觉质检:RT-Linux 工控机通过 GigE 相机实时拍照→TensorRT 推理→OK/NG 信号控制气动推杆。单台设备停机 1 小时即损失 3000 件产能。采用本文双机热备方案后,主节点因 GPU 驱动异常死机,Heartbeat 0.4 s 检测到失效,VIP 192.168.1.100 与推理服务瞬间漂移到备机,推杆控制 TCP 连接在新主节点重绑,整体中断 < 600 ms,人工几乎无感知,产线 OEE 保持 85%+。方案无需共享磁盘,仅用 NFS 存放模型权重文件,备机定时同步即可。
五、实际案例与步骤:30 分钟搭建完整漂移
5.1 基础环境:时间同步 + 主机名
# 两台都执行 sudo timedatectl set-ntp off sudo apt install chrony -y sudo sed -i 's/pool/#pool/' /etc/chrony/chrony.conf echo "server 192.168.1.1 iburst" | sudo tee -a /etc/chrony/chrony.conf sudo systemctl restart chrony设置主机名(分别执行):
# 主节点 sudo hostnamectl set-hostname rt-ai-master echo "192.168.1.10 rt-ai-master" | sudo tee -a /etc/hosts # 备节点 sudo hostnamectl set-hostname rt-ai-backup echo "192.168.1.11 rt-ai-backup" | sudo tee -a /etc/hosts5.2 安装 Heartbeat 与配置文件
sudo apt install heartbeat -y生成密钥(两机必须相同):
sudo openssl rand -hex 16 | sudo tee /etc/heartbeat/authkeys sudo chmod 600 /etc/heartbeat/authkeys主配置:/etc/heartbeat/ha.cf
logfacility local0 keepalive 1 deadtime 0.5 warntime 1 initdead 3 udpport 694 ucast eth0 192.168.1.11 # 主→备单播,备机反之写 1.10 auto_failback off node rt-ai-master node rt-ai-backup资源文件:/etc/heartbeat/haresources
rt-ai-master IPaddr::192.168.1.100/24/eth0 tensorrt_ai
systemd 服务资源:/etc/heartbeat/resource.d/tensorrt_a
#!/bin/bash # tensorrt_ai start/stop/status 脚本 case $1 in start) systemctl start tensorrt_ai.service ;; stop) systemctl stop tensorrt_ai.service ;; status) systemctl is-active tensorrt_ai.service ;; esac赋可执行权限:
sudo chmod +x /etc/heartbeat/resource.d/tensorrt_ai5.3 启动服务并验证
sudo systemctl enable heartbeat sudo systemctl start heartbeat查看日志:
sudo journalctl -fu heartbeat # 应出现:heartbeat: rt-ai-master is active在 master 上绑定 VIP:
ip a show eth0 | grep 192.168.1.1005.4 故障注入:拔网线 / 死机
软件级:
sudo systemctl stop heartbeat
观察 backup 日志:
heartbeat: rt-ai-backup acquiring resources (IPaddr::192.168.1.100) heartbeat: resource tensorrt_ai startedVIP 漂移完成,中断 < 0.6 s。
2.硬件级:拔掉 master 网线,现象一致。
5.5 故障恢复(可选)
重新启动 master,因auto_failback off,VIP 仍留在 backup,避免二次抖动;运维可择时手工 failback:
sudo hb_gui # 图形化或 sudo /usr/share/heartbeat/hb_failback六、常见问题与解答(FAQ)
| 问题 | 现象 | 解决 |
|---|---|---|
| VIP 漂移后无法 ping | ARP 缓存未更新 | 在资源脚本加send_arp广播 |
| 备机提示“authkeys mismatch” | 密钥不一致 | 重新复制/etc/heartbeat/authkeys |
| 漂移后 AI 服务起不来 | 模型文件缺失 | 使用 NFS 共享权重,或rsync定时同步 |
| 心跳间隔 < 1 s 导致误判 | 网络抖动 | 适当放宽deadtime 1+ 串口冗余心跳 |
| systemd 服务启动超时 | 依赖 GPU 驱动 | 在tensorrt_ai.service加After=nvidia-persistenced.service |
七、实践建议与最佳实践
独立心跳网
额外一张 1 Gb 网卡专跑心跳,减少业务流量冲击。串口冗余
serial /dev/ttyS0作为第二心跳,防止交换机级故障。时间同步
启用 PTP(ptp4l)保障亚毫秒级时间对齐,方便日志追溯。自动数据同步
使用lsyncd实时同步模型目录,failover 后无需人工拷权重。监控告警
Prometheus +node_exporter采集heartbeat_resources状态,Grafana 告警“VIP 不在任何节点”立即短信。定期演练
每月一次“故障日”,随机 kill 主节点,验证 RTO < 1 s。
八、总结:一张脑图带走全部要点
双机热备(Heartbeat) ├─ 环境:RT-Linux + Heartbeat + 时间同步 ├─ 配置:ha.cf / haresources / authkeys ├─ 资源:VIP + systemd 服务 ├─ 测试:软件停、拔网线、故障注入 ├─ 优化:串口冗余、send_arp、数据同步 └─ 监控:Prometheus 告警 + 定期演练掌握 Heartbeat 双机热备,等于给 AI 产线装上“不间断电源”——
主节点无论网络抖动、驱动异常还是硬件宕机,都能在亚秒级完成漂移,让人眼无法察觉中断,保障实时 AI 推理 7×24 小时在线。
立刻打开两台实验机,复制本文脚本跑一遍,下次领导问“系统高可用怎么做”,你可以自信回答:“Heartbeat + RT-Linux,RTO<600 ms,已演练 12 次。”祝你 failover 永不触发,系统永远在线!