Guardian 守护进程
guardian = 节点守护进程(traffic-guardian),与 worker 构成每台节点的双进程模型:
guardian 只管 worker 的命(保活/版本仓/滚动/迁移),不管 raft、不碰流量、不解释配置内容。
双进程的分工
| 归属 | 职责 |
|---|---|
| guardian | worker 保活与重启、系统服务安装、配置版本仓+LKG(最后已知良好配置)、校验调度(干跑)、五态上报、滚动听令、迁移执行体 |
| worker | 全部业务能力(数据面/管理面/raft)——崩了就崩,由 guardian 拉起 |
为什么需要 guardian:worker 自重启是悖论(崩了就不能自己拉自己);而滚动升级需要 一个与配置版本无关的常驻进程来执行「停旧起新」。guardian 极简、与配置解耦—— worker 起不来时按版本仓里的 LKG 反复拉起,不会把坏配置永久烙进节点。
命令面
traffic-guardian service-run # 守护态运行(服务安装的注册动词)
traffic-guardian status # 节点状态(worker 进程/版本/五态)
traffic-guardian worker start|stop|restart|drain|pid|query|versions
traffic-guardian config list|apply|show|rollback # 配置版本仓(rev 目录+LKG 标记)
traffic-guardian key list|rotate # 控制口密钥
traffic-guardian migration tasks|status|cancel
traffic-guardian service install|uninstall # 系统服务双形态安装
traffic-guardian upgrade # 滚动升级执行(听 CP 编排器令)
部分动词(restart/drain/install/rollback 等)有交互确认,脚本化时注意。
系统服务安装(开机自启+崩溃兜底)
traffic-guardian service install --exe /opt/traffic/traffic-guardian
- Linux:注册 systemd unit(
Restart=always——系统级保活兜底); - Windows:注册 SCM 服务;崩溃自动重启(
sc failure策略对应物)。
安装器把 service-run 动词与守护旗标写入服务定义(ExecStart/binPath),开机自启。
安装后 traffic-guardian service-run 由服务管理器拉起,人工不直接跑。
guardian 控制口
guardian↔worker 的本机控制走 IPC(Unix domain socket / Windows 命名管道,
数据根下 guardian.sock)——--bind 三态:
| 形态 | 地址 |
|---|---|
| IPC(缺省) | unix:///<path>.sock 或 pipe://traffic-guardian |
| TCP+Bearer | http://host:port(远程管理网场景,配系统密钥) |
CP 的滚动编排器逐台下指令到各节点 guardian 控制口执行升级序列——详见滚动升级。
无 guardian 的形态
K8s 部署省略 guardian(探针直接指向 worker 管理口,保活交给编排器);
裸跑 worker(traffic-worker run)也可以,只是没有自愈与服务化。