feat(acceptance): 建立同构验收与弹性容量体系

实现本地三节点 K3s 同构环境、脱敏生产快照、Gemini 图片和多参考图视频协议模拟、统一验收报告及故障注入。\n\n新增 Worker 容量控制器、资源与连接预算、任务恢复保护,并将生产验收拆分为 validation 执行和人工 CAS 放量。\n\n验证包括 Go 全量测试、PostgreSQL HTTP 集成测试、go vet、OpenAPI、ShellCheck、前端检查、迁移及发布脚本测试。
This commit is contained in:
2026-07-31 18:02:24 +08:00
parent 93d36d0e55
commit e05922b0f4
94 changed files with 12379 additions and 826 deletions
+23 -6
View File
@@ -8,7 +8,7 @@
验收脚本是显式生产写操作,会暂停新正式任务、调整 Worker 容量并在恢复场景删除一个
Worker Pod。它不会自动发布新版本;只能针对已经发布、完整 SHA 和 digest 固定的 manifest
执行。
执行。进入线上前必须先通过[本地三节点同构验收](local-isomorphic-acceptance.md)。
## 隔离与流量门禁
@@ -79,8 +79,9 @@ AI_GATEWAY_WORKER_REPLICAS_NINGBO
AI_GATEWAY_WORKER_REPLICAS_HONGKONG
```
`AI_GATEWAY_WORKER_REPLICAS_*` 是发布工具配置,不会传入容器。当前验收固定宁波、香港
一个 2 GiB Worker不创建额外 Pod
`AI_GATEWAY_WORKER_REPLICAS_*` 是发布工具配置,不会传入容器。容量档位先固定宁波、香港
一个 2 GiB Worker再按实时内存、CPU 和 PostgreSQL 预算验证 `1+2`、条件允许时的
`2+2`,以及安全 drain 回到 `1+1`
| 档位 | 单实例执行槽 | 数据库池 | 媒体并发 | 全局执行槽 |
|---|---:|---:|---:|---:|
@@ -120,7 +121,8 @@ easyai-ai-gateway-cluster-release capacity
```bash
scripts/cluster/run-production-acceptance.sh \
--execute dist/releases/<完整SHA>.json
--execute dist/releases/<完整SHA>.json \
--local-report dist/acceptance/local/<本地run-id>/acceptance-report.json
```
脚本依次执行:
@@ -133,11 +135,25 @@ scripts/cluster/run-production-acceptance.sh \
6. 执行两条真实小流量请求。
7. 校验任务、账务、回调、队列、连接池、RSS、节点内存、数据库同步、六向 WireGuard 和
公网健康。
8. 重新校验 SHA/digest/revision 后切回 `live`
8. 完成 Run 并输出 `acceptance-report/v1`,保持 `validation`,等待人工确认
报告保存在 `dist/acceptance/<run-id>/`,包含每阶段吞吐、p50/p95/p99、队列和资源 CSV、
协议模拟器统计及最终摘要。报告不包含图片原文、Base64、Token、密码或连接串。
确认整体报告后单独执行人工开闸:
```bash
scripts/cluster/run-production-acceptance.sh \
--promote dist/releases/<完整SHA>.json \
--run-id <线上run-id>
```
`--promote` 会重新读取 Run、流量 revision、release SHA、镜像 digest、配置哈希及暂存容量
配置,任一 CAS 不一致即拒绝。成功切到 `live` 后同一命令继续运行有限期监控:前 2 小时
每 10 秒采样,之后每 60 秒采样至 24 小时,不恢复已经停用的周期性巡检。队列、RSS、
连接池、同步复制、租约、重复结算、WireGuard 或公网健康触发硬门禁时,监控通过 CAS
自动切回 `validation`,并恢复 Run 开始前保存的精确容量快照;不会自动回滚数据库。
## 通过和失败处理
通过要求包括:任务全部成功、Gemini 输出可解码且哈希/字节数正确、视频参考图校验全部
@@ -145,6 +161,7 @@ scripts/cluster/run-production-acceptance.sh \
超过当前档位、无 OOM/重启、Pod RSS 小于 1.5 GiB、节点内存低于 80%、PostgreSQL 连接
低于 75%、连接池不连续满载、双副本同步、六向链路和公网健康通过。
失败 Run 会记录原因、恢复上一稳定容量并保持 `validation`排除问题后调用 Run
失败 Run 会记录原因、恢复上一稳定容量并保持 `validation`成功 Run 也保持
`validation`,只有上述人工 `--promote` 才能开闸。排除失败问题后调用 Run 的
`retry` 接口重新执行。只有人工决定放弃验收时,才使用带相同 CAS 字段的 `abort` 接口
恢复 `live`;该操作不会把失败验收标记为通过。