背景
sucaddy 从 v1.0 迭代到现在 v12.4,从一个实验性的代理隧道项目,变成了我日常依赖的网络基础设施。跨境流量、内网穿透、博客服务——全部跑在这 5 台节点上。
基础设施多了,运维就得跟上。之前靠手敲命令查状态,既慢又不靠谱。于是有了这套健康巡检系统。
架构
5 个节点,3 种角色:
🇰🇷 Korea — Hub 入站 + NaiveProxy
🇭🇰 HK — Landing+Hub 双栈出口
🇺🇸 Blog — Hub+Blog 站点服务 + NaiveProxy
🇨🇳 成都 — Relay 隧道 + 反向服务器
🐧 Armbian — Proxy 内网代理 + 反向客户端
所有节点运行同一套 sucaddy 二进制(amd64 全一致),配置通过 sync-config 自动同步,部署走 deploy.sh 一键推送 + MD5 校验。
巡检维度
健康检查脚本覆盖 6 个维度:
1. 存活检查
systemctl is-active + ss -tlnp + TCP 握手三重验证。5 节点 × 全部端口,缺一个就标红。
2. 稳定性评分
检测 uptime、重启次数、journal 关键错误、时钟偏移。chrony 同步下时钟偏移基本没有超过 1ms,这是我之前用 systemd-timesyncd 做不到的。
3. 版本一致性
编译后校验二进制 MD5,部署后全节点比对。之前踩过坑——某个节点部署失败,旧版跑了半个月没发现。
4. 进程纯净度
每节点只允许 1 个 sucaddy 进程,0 个 stale 残留文件。部署脚本结束后自动检查,多出来的直接告警。
5. 全链路检测
从 NETWORK-LINKS.md 自动读取 13 条链路定义,逐条验证:
- 4 条节点直连出口
- 4 条 SS 加密隧道(成都→韩国/香港/博客)
- 2 条 NaiveProxy 路由(韩国→HK/Blog)
- 1 条反向隧道(成都→Armbian)
- 2 条 Armbian 代理出口(SOCKS5/HTTP)
每一条链路都跑实际 TCP 连接 + 延迟测量。
6. 时钟偏移
SS 2022 协议要求时间偏差不超过 30s。之前成都节点因 NTP 失效每天漂移 3s,导致隧道频繁断连。部署 chrony + 定期巡检后彻底解决。
真实数据
这是今天巡检的结果:
🟢 Korea: A 100, uptime=9d 21h, 0 restarts
🟢 成都: A 100, uptime=9d 21h, 0 restarts
🟢 HK: A 100, uptime=9d 21h, 0 restarts
🟢 Blog: A 100, uptime=9d 21h, 0 restarts
🟢 Armbian: A 100, uptime=3d 1h, 0 restarts
13/13 链路全通,近 10 天零故障。这个结果不是偶然——每天定时巡检 + 版本锁 + 时钟同步,三层保障叠出来的。
技术细节
巡检脚本结构:
scripts/
├── health-check.sh # 入口
├── deploy.sh # 编译 + 推送 + 核验
├── sync-config.sh # 配置同步 + MD5
└── lib/
├── common.sh # ANSI、SSH、节点加载
├── gather.sh # 数据采集(含时钟偏移)
├── checks.sh # 健康/稳定/版本/进程
└── links.sh # 全链路测试
每台节点 SSH 直连,采集时间 ~2 秒。全量检查(5 节点 + 13 链路)约 12 秒出结果。
链路定义写在 NETWORK-LINKS.md 的 LINKS_START/LINKS_END 块内,config.yaml 变更后 git post-commit hook 自动更新,不需要手动维护。
踩过的坑
- systemd-timesyncd 不够用:成都节点每天漂移 2-3s,换了 chrony 后稳定在 0.1ms 以内
- h2 ALPN 被拒绝:NaiveProxy 的 NextProtos 带
h2时导致 HTTP 请求无法解析,改成http/1.1only 解决问题 - 反向隧道死连接:5s 写超时 + 连接池预建 2 条控制连接,完成切换无感
- 部署顺序反了:hub 节点最后部署,否则新灰度配置会污染 cache
总结
运维自动化不是一蹴而就的。sucaddy 这套巡检系统是从每一次故障、每一次手敲命令的烦躁中逐步拼出来的。
核心原则就三条:
- 能自动化就别手敲——巡检、部署、配置同步全部是脚本一键
- 能验证就立刻验——MD5 校验、链路全通、版本一致,不发半成品
- 能度量的才能管理——每台节点的 uptime、重启数、错误率、时钟偏移全部量化打分
未来计划:加告警推送(Telegram)、历史趋势图、自动故障恢复。