Files
DCTS/docs/remote_desktop_via_jump.md
T
fmq f2700031ce feat(all): seed_step_stab 稳定化种子链与同族种子轮换、ladder/自适应 Teff/丰度轴延拓三级回退与梯级种子入库复用、热启动首末比豁免、workflow 完成翻转回退链阻塞修复、大气收敛权威统计与 M14 回填
收敛攻坚(81/400 失败点根因与实测,见 docs/failed81_cno_seed_popzer_dpsilg_2026_08_18.md):
- runner: 新增 seed_step_stab 策略链——同物理族(同 Teff/logg/logHe)CNO 邻居种子
  + DPSILG=3.0 λ 算子欠松弛 + POPZER=1E-10 微布居置零(联动 POPZR2/RADZER 同值
  + NITZER=1),针对 20kK He 富大气 He I/II 电离前沿布居极限环
- runner: 三级链内延拓回退(主链与 nl_direct 全败后自动触发):
  · 固定 ladder 步进——plan_ladder_steps 按归一化间隔选轴,Δlogg≤0.25/ΔTeff≤2.5kK,≤4 步
  · 自适应 Teff 延拓——步长 1250K 起、成功 ×1.5 恢复、失败二分至 25K 折叠墙,≤48 步
  · C/N 丰度轴延拓——高温域(Teff>30kK)专用,严格同族种子沿 C(优先)/N 轴 0.2 dex 起步
  延拓阶段 NITER 下限提至 300(慢收敛 waypoint 迭代饥饿误判修复)
- runner: 稳定化多档回退(DPSILG/POPZER 三档互补,联合回收 41/65);
  域门控 Teff≤30kK——高温高金属域实测旋钮致散(17 拍爆至 4e16),域外跳过
- 梯级种子持久化: 收敛中间模型登记 ladder_seeds 随上报落 server seeds 表
  (任务失败也上传,合成名 _ladder 与真实网格点零冲突),簇内相邻失败点自动复用

调度与执行:
- scheduler: 策略解析新增 seed_step_stab 臂——find_exact_family_seed_from_db 严格
  同物理族判定(不做 global 退化,防 ladder 中间种子 ΔTeff≤5000K 误命中),
  排除本点历史已用种子实现重试轮换;链在 stab 耗尽时轮换未试过同族邻居重派
- executor: seed_step_stab 补种子下载(漏列曾致 78 任务假失败,seed_nc 无 fort.8 崩溃);
  Teff>30kK 域外自动降级普通种子链

收敛判据:
- conv_check: 热启动豁免——首拍 max_relc<1(种子已近解)时首末比 1e3 判据数学上
  不可达,豁免后交五重物理硬门槛裁决(修复 nl_ladder 0.038→6e-4 物理全过被误杀);
  冷启动仍受判据门控

workflow 生命周期:
- workflows/tasks: 完成 flip 增加「未消费回退链」阻塞子句——failed 点策略链未耗尽
  或链尾 seed_step_stab 尚有未试过同族种子时不得置 completed(修复最后活跃点 cold
  失败上报抢先 flip、still_running 守卫拦截后续策略永不派发);按 failed_stage 归因
  (synspec 失败行只看 synspec 链,防 stale 审计副本永久卡死)+ json_valid 脏行防护

统计与前端:
- 统计新增权威口径 tlusty_converged(不按策略拆)与 seed_step_stab_converged 分项,
  前端详情页色带/概览卡消费权威总数并新增稳定化青色段(修复 stab 收敛点漏计,
  生产 9137/9216 差额);M14 迁移回填历史 completed 点的 tlusty_status

文档:
- 新增 failed81 POPZER/DPSILG 制胜配方根因分析、Windows 节点经跳板 RDP 运维手册;
  failed400 增补 ladder 生产化实现与第二轮 121 残点实测矩阵
2026-09-02 19:37:25 +08:00

114 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Windows 节点远程桌面连接手册(经 Linux 跳板中转)
> 2026-08-20 实战总结。背景:两台 Windows 计算节点(node-fmq-dckj-02/03)与本机不直连,
> 必须经 Linux 跳板 node-fmq-dckj-01dckj@100.66.1.5Tailscale 网段)中转。
> 本机无节点小宝直连 Windows 的能力,所有 Windows 运维(尤其 Docker Desktop 登录自启)
> 都走本文的 SSH 隧道 + RDP 方案。
## 1. 网络拓扑与凭据
| 节点 | 地址 | 登录 | 密码 | 可达路径 |
|---|---|---|---|---|
| 跳板 dckj-01 | 100.66.1.5 | dckj | dckjzndx | 本机直连 |
| node-fmq-dckj-02 | 192.168.6.102 | fmq | 1235 | 仅经跳板 |
| node-fmq-dckj-03 | 192.168.6.103 | Administrator | dev#2dckj@zndx | 仅经跳板 |
- Windows 侧 SSH22)和 RDP(3389)均开放,但只对跳板所在的内网段可达。
- Windows 上运行**节点小宝**(内网穿透工具,服务名 `NodeBabyLinkService`
`StartMode=Auto` 开机自启),负责与 dckj-01 之间的 P2P 链路——
跳板能通 SSH 本身就说明节点小宝是活的。
- ⚠️ 密码写在文档里仅图方便,机器若更换使用人请先改密;长期方案建议配 SSH 公钥。
## 2. 核心方案:SSH 隧道转发 RDP(无需在跳板装任何桌面软件)
原理:本机 `ssh -N -L` 建立经跳板的加密隧道,把远端 3389 映射到本机端口,
再用本机任意 RDP 客户端(Remmina / xfreerdp / GNOME Connections)连 localhost。
```bash
# 隧道一:本机 13389 → dckj-03 (192.168.6.103) RDP
sshpass -p 'dev#2dckj@zndx' ssh -N \
-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
-o ServerAliveInterval=30 -o ServerAliveCountMax=6 \
-o ProxyCommand="sshpass -p dckjzndx ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -W %h:%p dckj@100.66.1.5" \
-L 13389:192.168.6.103:3389 Administrator@192.168.6.103 &
# 隧道二:本机 13390 → dckj-02 (192.168.6.102) RDP
sshpass -p 1235 ssh -N \
-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
-o ServerAliveInterval=30 -o ServerAliveCountMax=6 \
-o ProxyCommand="sshpass -p dckjzndx ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -W %h:%p dckj@100.66.1.5" \
-L 13390:192.168.6.102:3389 fmq@192.168.6.102 &
```
然后 RDP 客户端连接:
- dckj-03 → `localhost:13389`(用户 Administrator
- dckj-02 → `localhost:13390`(用户 fmq
要点:
- `ProxyCommand` 里层 `sshpass` 付**跳板机**密码,外层 `sshpass` 付**目标机**密码,
两级密码各管一段,这是双密码跳板场景的关键结构。
- `ServerAliveCountMax=6`(默认 3):节点小宝 P2P 链路偶发抖动,放宽容忍避免隧道被误杀。
- 验证隧道:`timeout 3 bash -c '</dev/tcp/127.0.0.1/13389' && echo OK`
- 隧道断了(症状:RDP 卡死、后台 ssh 报 "Timeout, server not responding")直接重跑上面命令即可。
## 3. 经跳板执行远程命令(非交互,运维日常)
```bash
rwin() { # rwin <win-02|win-03> "命令"
case "$1" in
win-02) h=fmq@192.168.6.102; p=1235 ;;
win-03) h=Administrator@192.168.6.103; p='dev#2dckj@zndx' ;;
esac
sshpass -p "$p" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
-o ProxyCommand="sshpass -p dckjzndx ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -W %h:%p dckj@100.66.1.5" \
"$h" "$2"
}
# 用例:rwin win-03 "docker ps"
```
`scripts/fetch_results.sh` / `scripts/deploy.sh` 已原生支持跳板:profile 里加
`REMOTE_PROXY_JUMP=dckj@100.66.1.5` 即自动 `-o ProxyJump`win-01/win-02 两个 profile 已配好)。
## 4. 重要经验:Windows 节点重启后的恢复顺序
**Docker Desktop 是 GUI 程序,必须有所属用户的交互桌面会话才能启动引擎。**
从 SSH 远程 `Start-Process 'Docker Desktop.exe'` 无效——进程落在无桌面的 SSH 会话里,
GUI 初始化不了,引擎 named pipe(`dockerDesktopLinuxEngine`)不会创建,
`docker ps` 报 "unable to start" / "cannot find the file specified"。
正确的恢复链:
1. 确认节点小宝活着(能 SSH 进去即活着;服务 `NodeBabyLinkService` Auto 自启,一般不用管)。
2. 建隧道、RDP 登录对应账户的桌面(**必须是与 Docker 数据同账户的桌面**,
dckj-03 的 Docker 挂在 Administrator 下,登录别的用户如 gaoyuqi 没用)。
3. 登录后 Docker Desktop 自动启动(两台均已开 AutoStart),任务栏鲸鱼图标静止即就绪。
4. `dcts-node` 容器配了 restart 策略,引擎就绪后**自动恢复运行**,无需手动 compose up。
5. 验证:`rwin win-03 "docker ps"` 看到 `dcts-node Up`,再看看板心跳上线。
诊断命令速查(经 `rwin` 执行):
```powershell
# 开机时间(判断是否重启过)
(Get-CimInstance Win32_OperatingSystem).LastBootUpTime
# 节点小宝服务状态
Get-CimInstance Win32_Service | Where-Object {$_.Name -match 'NodeBaby'} | Format-List Name,State,StartMode
# Docker 引擎是否就绪
docker ps
# 当前桌面会话归属(判断该登录哪个账户)
quser
```
## 5. 本次事故时间线(2026-08-20
- 两台 Windows 于 14:52 左右重启;节点小宝 Auto 自启正常(开机 16 秒内拉起),
网络链路一直通。
- Docker Desktop 虽配了 AutoStart,但因 **Administrator/fmq 未登录桌面**Docker Desktop
依赖登录会话),引擎未启动,节点掉线。
- 远程 Start-Process 反复失败 → 查日志发现 backend 未被拉起 → `quser` 发现桌面会话
属于第三方用户且已断开 → 定位根因。
- 经 SSH 隧道 RDP 登录桌面后,Docker 引擎启动、`dcts-node` 容器自动恢复。
治本方向(未做,待定):给两台 Windows 配置 Administrator/fmq 自动登录
(注册表 `AutoAdminLogon`,密码明文存储需评估安全),彻底摆脱重启后必须人工 RDP。