跳转至

阶段十二:102 节点纳管一次性最终验收

状态:已完成并归档

计划 ID:phase-12-pcdell-102-final-acceptance

📌 结论摘要

P12 已完成并归档,102 节点纳管正式关闭。 P12 已完成唯一工作包 P12-0,102 节点纳管的 8 项验收全部通过,并已按用户授权关闭“102 节点纳管”。最终受控重启后,102 的身份、双网地址、SSH、Tailscale、Docker、Nomad Client、官方 node_exporter、RR 遥测、RR/101/Home 三管理入口、UFW 来源边界和系统卫生均具备现场回读证据。依据是 P12 详情、docs/plans/state.json 和本页记录;影响是 P13 可以直接复用已经验收的节点能力,但 OmniRoute 安装、数据恢复和生产切换仍需独立授权。

🗂️ 目录

🧾 验收结果

编号 验收项 结果 关键证据
1 主机名、有线地址、WiFi 地址、Tailnet 地址和别名一致 ✅ 通过 最终启动回读 pcdell-102、192.168.50.102、192.168.50.202、100.64.0.4;与 docs/node-aliases.md 和 360T7 预留一致
2 SSH 10222、公钥登录、root 自动化身份和 hhtbing 本地应急身份一致 ✅ 通过 sshd -T 返回 port 10222、公钥启用、密码关闭;root 自动化登录和 hhtbing 本地登录均成功,hhtbing 具备 sudo
3 Tailscale、Docker、Nomad Client、node_exporter 均为 enabled、active、healthy ✅ 通过 四项服务均 active;Nomad 在 RR 端为 ready/eligible,Docker/exec 驱动为 Healthy;官方容器运行且重启策略为 always
4 RR 能正常采集 102 的 9100/metrics ✅ 通过 RR 读取 HTTP 200、87,619 bytes,并返回 node_uname_info{nodename="pcdell-102"}
5 RR、101、Home 三个管理入口均能管理 102 ✅ 通过 三个入口使用登记身份直连 100.64.0.4:10222,均回读同一 boot_id、主机名、root 用户和 Tailnet 地址
6 无 failed unit、无重复 exporter、无错误 UFW 来源规则 ✅ 通过 systemctl --failed 为空;exporter 容器、进程、9100 监听各 1 个;raw 前置守卫阻止非 RR 来源
7 窗口允许时完成一次重启持久性复核 ✅ 通过 最终 boot_id=bd3d4e88-5118-4805-b1d6-f8766c8a4a6b;重启后身份、SSH、四项服务、遥测、三入口和 UFW 均恢复
8 不要求把 OmniRoute 迁移进 102,迁移仍是独立事项 ✅ 通过 102 未安装 omniroute,服务不存在;本轮未恢复 RR 数据、未切换 MM 回源、未迁移生产

🔧 根因修复

最终重启没有只做表面复测,而是暴露并修正了两个会影响验收口径的启动问题。

问题 根因 修复结果
openipmi.service 启动后为 failed Dell OptiPlex 7050 的 SMBIOS 没有 IPMI Management Controller,openipmi 包仍将该无硬件消费者的 SysV 服务设为开机启动 记录原状态后执行 disable、mask 和 reset-failed;最终启动为 inactive/dead/masked,failed unit 为空,回退命令为 systemctl unmask openipmi.service && systemctl enable openipmi.service
101 可绕过 UFW 读取 102 的 9100 旧 v0.2.2 守卫只插入 filter INPUT,Tailscale 随后把 ts-input 放回链首并接受其他 Tailnet 来源 仓库脚本升级为 v0.2.3,守卫前置到 raw PREROUTING;102 安装文件 SHA-256 为 13c702a781f7e424350c1ddb02bf11b14101458fecdf24bac40debcf13366f5c,101 负向访问超时、RR 正向访问 HTTP 200

上述修复保留了原 UFW 允许规则和 filter 层规则,新增 raw 层守卫的原因不是替换原有边界,而是保证限制在 Tailscale 链接管前执行。v0.2.3 已写回仓库部署脚本,后续 Linux 节点部署会使用同一修复;本次没有据此修改 d02 或其他节点的运行状态。

🧪 服务与观测基线

对象 最终状态 证据
Tailscale 1.102.4,enabled/active,BackendState=Running,Health=[] tailscale status --json;RouteAll=false、ExitNodeID=""、CorpDNS=false
Docker enabled/active,NRestarts=0 systemd 回读;唯一容器为 agentmeshos-node-metrics
Nomad Client enabled/active,HTTP/RPC/Serf 监听 100.64.0.4:39046-39048 RR 端 Nomad ACL 上下文回读 ready/eligible,Docker/exec 驱动 Healthy
node_exporter v1.9.1,running,restart=always 进程和 100.64.0.4:9100 监听各 1 个;RR 正向采集成功
来源守卫 v0.2.3,enabled/active raw PREROUTING 规则为仅 RR 接受、其他 Tailnet 来源丢弃
系统卫生 failed unit 为空 最终启动 systemctl --failed --no-legend --plain 无输出

🔁 回退与重开

102 节点纳管本身不部署业务数据,回退范围是节点验收状态和本轮两项启动修复。openipmi 可按归档命令恢复;来源守卫可将 v0.2.3 替换为备份文件后重启服务,但恢复旧守卫会重新引入来源旁路风险。任何回退都必须先保留故障证据,再验证 RR 正向采集、101 负向阻断、failed unit 和三管理入口。

P12 关闭后不再拆出 P12-1、P12-2 等零散任务。若后续发生地址、SSH、Tailscale、Docker、Nomad、遥测、管理入口或防火墙漂移,应作为新的运维事件处理,不能重新打开已经关闭的 P12 工作包。

⚠️ 残余风险与未决项

事项 当前事实 下一步
P13 执行授权 P13 已进入等待实施,但没有安装、恢复或切换授权 用户明确授权后再进入 P13-0;不得从 P12 归档自动派生迁移动作
101 known_hosts 存在旧 100.64.0.4 普通主机记录,当前 10222 Tailnet 管理正常且指纹一致 如需清理,单独授权并先备份
exporter 启动重试 Tailnet 地址尚未就绪时容器会短暂重启,最终由 restart=always 恢复 当前不影响 9100 健康、RR 采集和重启验收;后续如调整启动依赖需单独验证
d02 同类守卫 仓库脚本已修复,但本次 P12 未修改 d02 运行状态 未来 d02 维护窗口按 v0.2.3 重新部署并做正负向回归

截至 2026-10-01,P12 没有阻塞关闭的未决项。

🧾 后续状态更正(2026-10-01,不改变 P12 归档事实)

后续授权已进入并完成 P13。102 已一次性安装 Node 22.23.0 与 OmniRoute 3.8.51,并完成隔离数据恢复、最终快照恢复、生产切换、全链路验收、真实回退和再次切换;MM 公网入口已直连 102,RR omni 数据、包、service、回退备份和网关 vhost 已删除。P13 已完成并归档,完整记录见 P13 完成归档。本节只更新 P13 状态,不改写 P12 验收时“102 尚未安装 OmniRoute”的历史事实,也不从 P12 自动派生新的迁移动作。