Files
lisglosips/docs/S30_FINAL_ACCEPTANCE_REPORT.md

87 lines
3.8 KiB
Markdown
Raw Permalink 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.
# S30 最终验收报告
## 1. 目标
完成 LisgloSIPS V2 本地 KVM 开发环境的备份恢复演练、上线/回滚脚本、灰度记录和最终验收,不执行真实阿里云生产切流。
## 2. 执行结果
| 项目 | 结果 |
| --- | --- |
| 当前 B release | `/opt/lisglosips/releases/s28-v2-20260621220924` |
| B preflight | 通过 |
| A OpenSIPS 配置语法 | 通过 |
| 备份恢复演练 | 通过 |
| 灰度呼叫 | 通过 |
| 回滚脚本语法检查 | 通过 |
新增产物:
- `docs/S30_RELEASE_BACKUP_RUNBOOK.md`
- `docs/S30_FINAL_ACCEPTANCE_REPORT.md`
- `infra/server-b/s30/lisglosips-release-preflight.sh`
- `infra/server-b/s30/lisglosips-release-rollback.sh`
- `infra/server-a/s30/lisglosips-opensips-config-restore.sh`
## 3. 备份恢复演练
执行时间:2026-06-22 10:28 +08:00。
备份:
- MySQL`/data/backups/mysql/20260622T022811Z`
- Redis`/data/backups/redis/20260622T022812Z`
校验:
- MySQL `all-databases.sql.gz``lisglosips.sql.gz``metadata.tsv``SHA256SUMS` 校验通过。
- Redis `dump.rdb``metadata.txt``SHA256SUMS` 校验通过。
恢复演练:
- MySQL 恢复到隔离临时库 `lisglosips_s30_restore`,核对计数:`raw_cdrs=33``recordings=27``customer_recharges=34``users=2`;演练后已删除临时库。
- Redis 从备份 RDB 启动隔离 Unix socket 临时实例,核对 `DBSIZE=51``stream:cdr_payload=54``cfg:active_version=s28-v1`;演练后已关闭临时实例并删除临时目录。
未覆盖运行中的 MySQL 或 Redis 数据目录。
## 4. 灰度记录
灰度对象:本地开发环境 T 测试端和 S28 专用测试客户/落地模拟链路。
灰度呼叫:
- Call-ID`s28-1782095548702-luppqjd4@lisglosips-t`
- SIPT 收到 `100 Giving it a try``200 OK`、BYE `200 OK`
- B raw CDR`raw_7a6356cc76974652aa30a9d7a350041b`
- 计费:`rated_e0eb8cbe1b90454cb3cf2d9a3bbc9290``billSec=6`,客户费用和供应商成本均为 `0.012000`
- 录音:`rec_5fdf599d679f493a83fc7a2d205a128a``READY`55758 bytes
结论:本地灰度链路在当前冻结 release 下通过。
## 5. 回滚验证
脚本语法检查:
- B`lisglosips-release-preflight.sh``lisglosips-release-rollback.sh` 通过 `bash -n`
- A`lisglosips-opensips-config-restore.sh` 通过 `bash -n`
运行验证:
- B `lisglosips-release-preflight.sh` 实际运行通过:current release、MySQL、Redis、Nginx、API、CDR Worker、Recording Worker、HEP、Prometheus、Grafana 均 activeAPI ready 正常,Nginx 配置测试成功,最近备份目录可见。
- A `/etc/opensips/opensips.cfg` 通过 `opensips -C` 语法检查。
未实际执行 release 回滚或 OpenSIPS 配置恢复,避免对当前已通过的 S28/S29/S30 环境造成不必要中断。
## 6. 遗留风险
- 本地开发环境不是阿里云生产环境。正式迁移前必须重新执行 VPC、安全组、数据盘、正式 DNS/TLS、备份恢复、故障注入和端到端呼叫验收。
- S29 遗留风险仍存在:B Redis 恢复后 A/OpenSIPS 热路径可能需要重启 `opensips` 才从 `Redis Unavailable` 恢复。S30 Runbook 已纳入处置步骤,但根因级修复仍需后续单独处理。
- 当前 A 是单 A/S28 最小真实路由,非完整多落地网关生产路由;真实 3A、多 B、高可用仍不属于本地 V2 闭环上线范围。
- 开发 CA、Tailscale IP、本地 KVM 根盘布局不能原样用于生产。
## 7. 结论
S30 在本地 KVM 开发环境完成。当前 V2 闭环具备可恢复备份、可执行上线/回滚 Runbook、回滚脚本产物、灰度呼叫记录和最终验收记录。
本地开发阶段可冻结在 `s28-v2-20260621220924` 作为迁移前基线。阿里云生产上线前不得跳过 S30 Runbook 中的重新备份恢复演练、正式网络/TLS 验收和灰度观察。