75 行
3.7 KiB
Markdown
75 行
3.7 KiB
Markdown
# 私有化升级生产验收记录(2026-07-29)
|
||
|
||
## 结论
|
||
|
||
`2026.07.28-private.1` 已在真实私有化环境完成保留数据的升级演练和升级后全量验收。
|
||
最终结果为 **26 项通过、3 项预期警告、0 项失败**。预期警告均为验收探针使用未登记
|
||
包名请求 SDK 配置时返回 HTTP 403,不表示服务不可用。
|
||
|
||
本记录只陈述实际执行结果。未执行的新装流程、租户迁移流程和移动端人工点击验证仍需
|
||
在对应发布验收中单独执行,不能由本次升级演练替代。
|
||
|
||
## 验收范围
|
||
|
||
- 部署模式:单租户私有化,公有化与私有化配置完全隔离。
|
||
- 部署入口:`https://console.51szyx.com`。
|
||
- 升级类型:保留现有数据库、上传文件、服务配置和签名信任根的原地升级。
|
||
- 激活 profiles:`base`、`infra-mysql`、`infra-redis`、`im`、`push`、`update`、
|
||
`bugcollect`。
|
||
- 目标版本:`2026.07.28-private.1`。
|
||
- 数据保护:升级前已生成带校验文件的完整备份。
|
||
|
||
## 实际执行证据
|
||
|
||
| 项目 | 实际结果 |
|
||
| --- | --- |
|
||
| update-service Jenkins 发布 | 构建 #75 成功,生产镜像已发布 |
|
||
| im-service Jenkins 发布 | 构建 #22 成功,生产镜像已发布 |
|
||
| update 数据库迁移 | Flyway V7 成功执行,修复历史 baseline 跳过的 RN 插件契约 |
|
||
| 容器状态 | 11 个启用容器全部处于运行状态 |
|
||
| tenant-service | actuator health 为 `UP` |
|
||
| 私有化模式 | `/api/private/deployment/status` 返回 PRIVATE |
|
||
| 用户注册 | 已禁用,注册接口返回 HTTP 403 |
|
||
| 租户登录 | 成功 |
|
||
| 控制台与文档站 | HTTP 200 |
|
||
| IM 应用级接口 | HTTP 200 |
|
||
| update 应用版本接口 | HTTP 200 |
|
||
| RN 插件更新接口 | HTTP 200 |
|
||
| 文件服务 | HTTP 200 |
|
||
| MySQL | 查询成功 |
|
||
| Redis | `PONG` |
|
||
| 最终 `scripts/verify.sh` | PASS 26 / WARN 3 / FAIL 0 |
|
||
|
||
## 演练中发现并修复的问题
|
||
|
||
1. 升级脚本按“正在运行的容器”推导 profiles,停止状态服务会被永久跳过。现改为从部署
|
||
配置读取激活 profiles。
|
||
2. 验收脚本使用模糊容器名,可能误匹配宿主机无关容器。现只读取当前 Compose 项目的
|
||
精确服务 ID。
|
||
3. 历史部署缺少 `SDK_INTERNAL_TOKEN`,tenant 与 IM 服务间内部请求返回 403。现由
|
||
`scripts/lib.sh` 唯一负责生成和持久化部署独享令牌,deploy、update、reset 三个入口
|
||
统一调用;已有有效令牌不会被轮换。
|
||
4. 历史 update 数据库被错误 baseline 到 V3,表结构并未实际创建。服务端 V7 使用幂等
|
||
迁移修复缺失契约。
|
||
5. IM 平台事件接口局部捕获所有异常并改写成 500,绕过统一错误模型。现交由全局处理器
|
||
保留真实业务状态。
|
||
6. Spring 服务容器创建后尚未完成启动时,WebSocket/业务检查会误报 502。升级脚本现先
|
||
等待 IM HTTP 路由就绪,再运行 WebSocket 与全量验收。
|
||
|
||
## 未覆盖项
|
||
|
||
- 全新服务器执行 `install.sh`:未执行;本次目标为真实存量部署升级。
|
||
- 使用 `pmk_` 迁移密钥迁入租户:未执行;本环境已有有效租户数据。
|
||
- 灾难恢复回灌:未执行;已验证升级前备份文件和校验文件存在。
|
||
- 移动 App 真机/模拟器点击验收:不属于私有化服务端升级验收范围。
|
||
|
||
## 后续发布要求
|
||
|
||
每次私有化版本更新仍必须执行:
|
||
|
||
1. 发布前备份并生成校验文件。
|
||
2. 使用目标版本仓库中的 `upgrade.sh` / `scripts/update.sh`,不得只手动替换镜像。
|
||
3. 等待 `scripts/verify.sh` 返回 `FAIL: 0`。
|
||
4. 对新增服务补充精确容器检查、健康检查和私有化地址隔离检查。
|
||
5. 任何失败不得自动回退到公有化服务。
|