跳转至

Three Dogs 多 Edge 一致性计划

计划状态:进行中

阶段位置:P17 并行工程专项,不改变 P17 当前阶段编号和状态

当前工作包:TD3-4 来源同步与长期观察

📌 结论摘要

本计划解决 threedogs.vip 与 www.threedogs.vip 只存在于 MM、dog 只信任旧 MM IP 的架构不一致问题。目标是把 Three Dogs 纳入现有 edge.yohan.fun 多 Edge 入口模型:MM、d02、DD、dog 均具备相同公网 vhost 和证书,统一通过逻辑 Origin 访问 dog WordPress;dog Origin 使用动态 Edge 来源清单和认证头,不再手工绑定单台 MM。

本计划只解决 Edge 入口故障,不解决 dog 整机故障。第二个 WordPress Origin、数据库和 wp-content 复制属于后续独立项目。

🧱 架构契约

  • edge.yohan.fun:唯一活动 Edge 身份,继续由 P15 控制器自动切换。
  • origin-threedogs.yohan.fun:稳定逻辑 Origin,当前为 dog.yohan.fun。
  • threedogs.vip 与 www.threedogs.vip:只指向 edge.yohan.fun,不再保存物理 IP。
  • MM、d02、DD、dog:部署同一 Three Dogs 前端 vhost 和覆盖裸域、www 的证书。
  • dog Origin:保留唯一 WordPress 实例;来源 IP 从四个 Edge 候选域名动态生成,并同时要求 Origin 认证头。
  • 公开 GET/HEAD 使用缓存和 stale-if-error;登录、管理、购物车、结账、API、查询参数和带登录 Cookie 的请求绕过缓存。
  • 业务站点故障不得直接触发 Edge DNS 轮换;Edge 能力和业务健康分开验收。

工作包

TD3-0 基线与回退

  • 保存 MM 前端配置、dog Origin 配置、证书、当前 DNS 和 UFW 规则。
  • 冻结逻辑 Origin、ACME Challenge Alias、来源清单节点和验证方式。

TD3-1 代码与模板

  • 新增 Three Dogs Edge 部署脚本、证书脚本和 Dynadot DNS 委派脚本。
  • 把 origin-threedogs.yohan.fun 纳入 AliDNS 别名控制器。
  • 增加本地契约测试,禁止 vhost 保存 MM、dog 或候选 Edge 公网 IP。

TD3-2 证书与 DNS

  • 在 Dynadot 建立 _acme-challenge.threedogs.vip 和 _acme-challenge.www.threedogs.vip 到 AliDNS 验证域的 CNAME。
  • 四个 Edge 分别通过 AliDNS DNS-01 签发 threedogs.vip + www.threedogs.vip 证书并安装续期任务。
  • 建立 origin-threedogs.yohan.fun -> dog.yohan.fun。

TD3-3 生产部署与真实 Edge 验证

  • 四个 Edge 部署统一前端 vhost、Origin CA 和认证头。
  • dog 部署新 Origin vhost、动态来源清单、UFW 同步和 5 分钟 timer。
  • 分别通过四个候选公网 IP 固定 SNI 回读裸域和 www。
  • 执行一次受控 Edge 切换与回切,验证 DNS、TLS、站点和旧入口。

TD3-4 来源同步与长期观察

  • 保持 dog 每 5 分钟刷新 Edge 来源清单和 UFW。
  • 监控证书续期、来源解析失败、Origin 认证负向回归和 Edge 切换后的站点可用性。
  • 不在本专项内增加 dog WordPress Origin 副本。

验收标准

  • 四个候选 Edge 的 threedogs.vip、www.threedogs.vip 均返回 200。
  • 证书 SAN 覆盖裸域和 www,四个 Edge 有效期和续期任务一致。
  • Edge vhost 不出现固定 MM、dog 或候选 Edge 公网 IP。
  • dog Origin 只接受动态来源清单中的 Edge IP,并要求正确认证头。
  • 非授权来源访问 14443/tcp 超时或拒绝。
  • 手动切换 edge.yohan.fun 到 d02 后,权威 DNS 和站点回读通过;随后回切 MM。
  • proxy.yohan.fun、四个 panel-*、Cloudreve、核心 Edge 域名无回归。

回退

  • Edge vhost:恢复脚本保存的 last-known-good 并执行 nginx -t 后 reload。
  • dog Origin:恢复脚本保存的 last-known-good,并恢复原 UFW 来源规则。
  • 证书:保留旧证书目录备份;失败时恢复旧文件并 reload。
  • DNS:Dynadot 和 AliDNS 写入前均保存记录备份;失败时恢复原记录。

生产验收记录

2026-10-11 已完成生产部署和现场验收:

  • Dynadot _acme-challenge 与 _acme-challenge.www 已委派到 _acme-challenge.threedogs-acme.yohan.fun,两个权威 NS 与公共解析器均可回读。
  • origin-threedogs.yohan.fun -> dog.yohan.fun 已由 AliDNS 控制器建立并保存回退备份。
  • MM、d02、DD、dog 均签发 threedogs.vip + www.threedogs.vip ECC 证书,SAN 和到期时间已回读,每日 03:11 续期任务已安装。
  • 四个候选公网 IP 固定 SNI 回读 threedogs.vip 与 www.threedogs.vip 均为 200。
  • dog Origin 来源清单已动态生成四条 Edge Public IPv4,UFW 使用同一来源集合;旧 MM 单 IP 规则已移除。
  • 正确认证头通过 Origin,错误认证头返回 403;未授权 101 公网访问 14443/tcp 超时。
  • 真实切换 edge-mm -> edge-d02 后 d02 公网站点和 Console 回读通过,随后回切 MM;RR 公共观察点确认 DNS 回到 MM。
  • dog agentmeshos-three-dogs-origin-sync.timer 为 enabled/active,手工执行 service 的 Result=success 且重复同步幂等。

分布式底座接入声明

  • 接入结论:接入 Network、Credentials 和 Observability;不接入 Nomad、Compute 或 Storage。
  • Adapter 归属:不适用;本专项使用版本化维护脚本和 root-only 凭据。
  • 执行映射:101 负责代码、测试、GitHub 和协调;四个 Edge 执行本地 Nginx 与证书;dog 执行 Origin 来源同步。
  • 数据路径:Nginx 配置、证书和来源清单只存在于节点本地;不迁移 WordPress 数据。
  • 凭据路径:AliDNS 凭据和 Origin Token 只在目标节点 root-only 文件;Dynadot 凭据只在 RR/101 root-only。
  • 生命周期:DNS CNAME 为长期记录;Origin 来源 timer 持续运行;回退备份保留到验收完成。
  • 验收证据:代码测试、提交 SHA、Actions、四个 Edge 公网回读、Origin 负向访问和 Edge 切换/回切。

⚠️ 未决项

事项 当前事实 下一步
dog 整机故障 仍是单一 WordPress Origin 按用户确认,本计划不处理;需要时另立 Origin HA 项目
业务健康告警 新专项有本地 Edge 验证,暂不接入自动 DNS 轮换 保持告警与入口切换解耦,避免 Origin 故障造成 Edge 抖动