proxy-pool/docs/operations/production-readiness.md
2026-08-02 15:14:20 +08:00

3.6 KiB
Raw Blame History

生产就绪检查表

架构与一致性

  • Gateway 热路径依赖审计确认无 PostgreSQL、Redis、Provider 或模板执行。
  • 每个 Proxy 同一时刻最多归属一个 Workerownership epoch 单调。
  • Reserved -> Active 使用单个原子转换,无超卖与负计数。
  • Sequential 并发 Empty 只切换一次,旧 Upstream Proxy 自然耗尽;末端 stop 使用权威 CAS 停用 Routing 并刷新 Gateway 快照。
  • pool.maxSizefetch.maxTotal 分别按当前库存和累计获取计数。
  • Extract 只有 AVAILABLE -> EXTRACTEDOpenAPI 不存在 release/renew。
  • Extract 状态更新和短期幂等结果位于同一个 Redis 原子操作。
  • PostgreSQL 中不存在 Proxy 明细或逐次提取记录。
  • partialallOrNothing 均通过 Redis 原子并发测试。
  • reserveForGateway 在所有提取路径上统一执行。

安全

  • 非回环监听均配置 Auth 或 allowCIDRs严格模式已开启。
  • Gateway、Distribution、Admin 凭据和权限相互独立。
  • trusted proxy 只包含受控 LoadBalancer/Ingress 网段。
  • 解析前后均拦截私网、回环、链路本地、元数据地址与 DNS Rebinding。
  • Secret 由外部密钥系统注入镜像、ConfigMap、日志没有明文。
  • 所有 Controller 使用同一枚至少 32 字节的独立配置 HMAC 密钥,并完成轮换演练。
  • Pod 以非 root、只读根文件系统、无 Linux capabilities 运行。
  • NetworkPolicy 默认拒绝,外部数据库/Redis/Provider 网段已收紧。
  • Provider 模板有响应大小、执行时间、函数与外部访问限制。

可用性

  • PostgreSQL 跨可用区,有监控、备份和恢复演练证据。
  • Redis 跨可用区并受监控,完成丢失后由 Provider 重建活动池的演练。
  • Gateway、Controller、Checker 均跨主机/可用区分散。
  • PDB、优雅终止与最大连接时长的组合经过驱逐测试。
  • Controller 断线时 Gateway 在 maxStaleAge 内继续,超限拒绝新请求。
  • Worker 崩溃后 ownership 只在租约过期后再分配。
  • Snapshot 版本缺口触发全量同步,旧 Delta 被拒绝。

性能

  • 单 Worker 基准使用生产同规格硬件、网络、TLS 和 Snapshot 规模。
  • 完成 10k 稳态、100k 峰值、CONNECT 活跃连接和建连速率独立测试。
  • 在最大可用区失效时仍满足容量和延迟 SLO。
  • 目标利用率不高于 60%HPA 缩容稳定窗口不低于 10 分钟。
  • 队列、buffer、日志和结果上报全部有界。
  • p99 Dispatch 预算、端到端延迟、错误率、CPU、RSS、FD 和网络有原始证据。

观测与值班

  • 仪表盘覆盖 Gateway、Routing、Upstream、Provider、Extract、Snapshot、Checker。
  • 告警有负责人、严重级别、Runbook 链接和演练记录。
  • 指标无 Proxy IP、Client ID、Session、完整 URL 或 request ID 高基数标签。
  • 日志脱敏已用真实 Secret fixture 验证。
  • 值班人员完成 PostgreSQL、Redis、Snapshot、容量与 Extract 故障演练。

发布门禁

  • go test ./...、race、vet、build 全部通过。
  • OpenAPI/Proto 兼容检查通过。
  • Compose、Kustomize、Prometheus、HAProxy 配置静态校验通过。
  • 数据库迁移已在生产数据量副本上演练,并有回退或前向修复方案。
  • 100k QPS 验证报告包含环境、命令、版本、场景、原始指标和结论。

任一关键一致性、安全或恢复项未完成时,不标记生产就绪。