一、简介:为什么 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/hosts

5.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_ai

5.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.100

5.4 故障注入:拔网线 / 死机

  1. 软件级sudo systemctl stop heartbeat
    观察 backup 日志:

heartbeat: rt-ai-backup acquiring resources (IPaddr::192.168.1.100)
heartbeat: resource tensorrt_ai started

VIP 漂移完成,中断 < 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. 独立心跳网
    额外一张 1 Gb 网卡专跑心跳,减少业务流量冲击。

  2. 串口冗余
    serial /dev/ttyS0 作为第二心跳,防止交换机级故障。

  3. 时间同步
    启用 PTP(ptp4l)保障亚毫秒级时间对齐,方便日志追溯。

  4. 自动数据同步
    使用 lsyncd 实时同步模型目录,failover 后无需人工拷权重。

  5. 监控告警
    Prometheus + node_exporter 采集 heartbeat_resources 状态,Grafana 告警“VIP 不在任何节点”立即短信。

  6. 定期演练
    每月一次“故障日”,随机 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 永不触发,系统永远在线!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐