Initial LisgloSIPS V2 implementation

This commit is contained in:
hectorzhao
2026-06-22 10:56:38 +08:00
commit 5fa1bd35e9
303 changed files with 35644 additions and 0 deletions
+86
View File
@@ -0,0 +1,86 @@
# 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 验收和灰度观察。