Files
pikasTech-unidesk/docs/reference/provider-gateway.md
T

3.2 KiB
Raw Blame History

Provider Gateway Reference

Provider Gateway 是计算节点侧容器。它只主动连出到主 server 暴露的 provider ingress WebSocket,不要求计算节点有公网 IP,适合 NAT、内网和防火墙后的机器。

Main Server Self Provider

当前主 server 也运行一个 provider-gatewayproviderId 固定来自 config.jsonproviderGateway.id。这让单机环境也能验证完整的分布式调度闭环:frontend 发起任务,core 写数据库并通过 provider ingress WebSocket 下发,provider gateway 执行后回传状态。

Provider Ingress

provider ingress 是唯一允许公网暴露的 provider 连接接口,当前由 backend-core 容器的独立端口提供 /ws/provider/health。backend-core REST API 仍只在 Docker 内网开放,外部计算节点只应连接 provider ingress。

Docker Socket Path

自动任务执行只允许走本地 Docker socket。Compose 将 /var/run/docker.sock 挂入 provider-gatewayprovider 标签会报告 dockerSocketPresentdocker.ps 调试任务会通过该 socket 查询宿主 Docker 容器。

Docker Status Telemetry

provider-gateway 连接成功后必须周期性上报 Docker daemon 状态,数据来源是本地 Docker socket 上的 docker infodocker ps -adocker imagesdocker volume lsdocker network ls。backend-core 将最新快照保存到 unidesk_node_docker_statusfrontend 的资源节点 Docker 状态 子标签用该快照渲染 Docker Desktop 风格视图;该能力仍然只通过 provider 主动上报,不要求主 server 反向连接计算节点。

System Status Telemetry

provider-gateway 连接成功后必须周期性上报节点 CPU、内存和硬盘用量。采集来源是节点本地 /proc/stat/proc/loadavg/proc/meminfodf -PB1backend-core 将最新快照保存到 unidesk_node_system_status,并将历史采样保存到 unidesk_node_metric_samples 供 frontend 绘制任务管理器风格曲线。该链路仍然由 provider 主动上报,主 server 不反向探测计算节点。

Remote Provider Upgrade

backend-core 可以通过真实 WebSocket 调度向在线 provider 下发 provider.upgrademode: "plan" 只返回升级计划,用于 E2E 和人工预检;mode: "schedule" 会要求 provider-gateway 通过本地 Docker socket 启动一个 detached updater 容器,由 updater 在节点本地执行 docker compose up -d --no-deps --build provider-gateway--no-deps 是强制要求,升级 provider-gateway 时不得重建或停止 database、backend-core、frontend。升级执行路径使用 Docker socket 和只读仓库挂载,不使用 Host SSH 维护桥作为自动调度通道。

Host SSH Maintenance Bridge

宿主 SSH 转发只作为应急维护辅助路径,不用于自动任务调度。实现参考 ../web-terminal 的经验:容器内使用只读挂载的私钥,通过 ssh -tt 主动连接宿主 sshd,并设置 StrictHostKeyChecking=accept-newServerAliveIntervalServerAliveCountMax。本仓库保留 src/components/provider-gateway/scripts/host-ssh-shell.sh 作为维护桥接脚本,默认 Compose 不挂载私钥,避免把 SSH 路径误用为调度通道。