feat: add channel report batch briefs
This commit is contained in:
@@ -11,6 +11,67 @@
|
||||
- Gateway 控制服务:仅本机 `127.0.0.1:8090`。
|
||||
- CMPP 入站端口:`17890`,由 Go Gateway 启动真实 CMPP 3.0 Server,接收企业应用下游 connect/login 和 submit。
|
||||
|
||||
## 预生产磁盘与目录规划
|
||||
|
||||
本节是预生产 `8.160.169.106` 的存储规范入口;实施证据见 [第一阶段记录](preprod-data-disk-stage1-20260831.md)和[第二阶段记录](preprod-data-disk-stage2-20260831.md),阶段完成状态见 [测试与运维进度](testing-progress.md)。旧版部署示例与本节冲突时,以本节为准。
|
||||
|
||||
### 当前状态与实施边界
|
||||
|
||||
- 以下已实施状态来自2026-08-31晚间第二阶段验证,不代表每次阅读时已重新核验服务器。
|
||||
- 60GiB系统盘承载操作系统、运行程序、应用日志和监控历史数据;100GiB数据盘挂载 `/data`,已承接PostgreSQL、Redis、MinIO、版本恢复备份及原备份目录内的操作记录。
|
||||
- 用户明确授权后已完成第二阶段三项存储迁移;应用日志、监控历史数据及其他表内待实施项不包含在本次迁移中,不得把规划当成实施事实。
|
||||
- 本次迁移的系统盘原数据副本及一致性冷备暂作恢复资产保留,不属于新增旧代码版本。后续清理或进一步迁移需按明确指令执行,不能直接切回已落后于新写入的旧数据。
|
||||
|
||||
### 目录分工
|
||||
|
||||
| 内容 | 当前路径或位置 | 规划位置 | 实施状态与要求 |
|
||||
|---|---|---|---|
|
||||
| 操作系统、软件包、服务配置及密钥 | 系统盘;配置主要在 `/etc` | 继续留在系统盘 | 配置按最小权限保存,不因数据迁移改为公开可读 |
|
||||
| 当前运行程序与依赖 | `/opt/cmpp-platform` | 继续留在系统盘 | 发布切换只处理程序,不携带持久化数据 |
|
||||
| 上一个版本运行目录 | `/opt/cmpp-platform.previous-*` | 继续留在系统盘 | 稳态仅保留上一个有效版本;不得积累失败、incoming及更早版本目录 |
|
||||
| 数据库、Redis、源码与配置的成套恢复备份 | `/opt/cmpp-platform-backups` | `/data/cmpp-platform-backups` | **已实施**;原入口是指向数据盘的符号链接,发布脚本不得替换成普通目录 |
|
||||
| 备份目录内业务操作留痕 | `/opt/cmpp-platform-backups/operations` | `/data/cmpp-platform-backups/operations` | **已实施**;不纳入旧版本自动清理范围 |
|
||||
| PostgreSQL业务数据及WAL | `/var/lib/pgsql/data` | `/data/postgresql/data` | **第二阶段已实施**;`/data/postgresql`绑定挂载到`/var/lib/pgsql`,无外置表空间或WAL链接,完整冷复制及110张表行数核对通过 |
|
||||
| Redis持久化文件 | `/var/lib/redis` | `/data/redis` | **第二阶段已实施**;绑定挂载保留旧路径,保持RDB开启、AOF关闭,停写SAVE后冷复制,三条Stream状态一致 |
|
||||
| MinIO对象及存储元数据 | `/var/lib/minio` | `/data/minio` | **第二阶段已实施**;绑定挂载保留旧路径,完整目录及62个业务对象清单核对通过,独立探针读写删除通过 |
|
||||
| 本地对象存储备用驱动的上传文件 | 配置项 `OBJECT_STORAGE_LOCAL_ROOT` | 如启用则规划为 `/data/cmpp-platform/object-storage` | 条件规划;第一阶段未启用或切换存储驱动,禁止擅自改用local替代MinIO |
|
||||
| API、各Worker、Gateway应用日志 | `/opt/cmpp-platform/logs/<service>` | `/data/log/cmpp-platform/<service>` | **待单独实施**;需同步日志输出路径、权限和轮转,不能因迁盘取消保留上限 |
|
||||
| Prometheus历史指标 | 仓库安装脚本使用 `/var/lib/prometheus/metrics2` | `/data/prometheus/metrics2` | **待核验并单独实施**;当前值以实际服务参数为准,保留时间及容量双重限制 |
|
||||
| 系统journal、系统及安全日志 | `/var/log` 等系统路径 | 继续留在系统盘 | 设置轮转及容量上限;不能将安全审计日志当旧发布文件删除 |
|
||||
|
||||
待实施目标子目录应在相应迁移时创建,不提前启动服务写入。目前备份入口使用符号链接,三项存储使用绑定挂载;其他规划路径不假设已有链接、挂载或服务配置支持。
|
||||
|
||||
### 挂载、权限与缺盘保护
|
||||
|
||||
- 使用磁盘UUID持久化挂载,不把 `/dev/nvme1n1` 的枚举顺序作为永久身份。当前预生产UUID与fstab记录见第一阶段文档;其他主机不得照抄该UUID或格式化命令。
|
||||
- 第一阶段 `/data` 采用 `nofail`,仅保证缺盘时系统仍可启动;这不意味着未来依赖数据盘的数据库可以在缺盘时启动。
|
||||
- 现有备份保护由 `/usr/local/sbin/cmpp-backup-storage-check` 和未挂载时底层空 `/data` 的immutable属性共同提供。不得移除保护、重建系统盘备份目录或在检查失败后改用其他路径继续备份。
|
||||
- 第二阶段已为`postgresql`、`redis`、`cmpp-minio`配置`50-cmpp-data-disk.conf`,通过`RequiresMountsFor`、`After`和`BindsTo`关联`data.mount`及各自绑定挂载;`ExecStartPre`调用`/usr/local/sbin/cmpp-data-storage-check`核验UUID、挂载源目录、读写属性和原有存储标记。后续服务迁入也必须在启动前建立同等保护。
|
||||
- 挂载失败、UUID不匹配或数据盘只读时,备份及相应迁入服务应明确失败并告警,禁止初始化新数据库、空Redis或空MinIO来掩盖故障。
|
||||
- 各数据目录归对应服务的实际运行用户,保留原权限、ACL、扩展属性与适用的SELinux上下文;核验systemd沙箱的 `ReadWritePaths` 等限制。禁止对整个 `/data` 执行统一业务用户授权或 `chmod 777`。
|
||||
- 三项原路径通过fstab中的绑定挂载兼容,底层空挂载目录保持immutable,缺盘时不能写回系统盘。部署与安装脚本检测`/etc/cmpp-platform/data-disk.uuid`或PostgreSQL存储drop-in后,先执行存储检查;不得删除标记或drop-in绕过检查。尚未以整机重启验证开机过程。
|
||||
|
||||
### 备份、保留与容量规则
|
||||
|
||||
- 所有后续发布备份统一使用固定入口 `/opt/cmpp-platform-backups`,先执行存储检查,失败即中止;禁止使用随发布切换的 `/opt/cmpp-platform/backups`。
|
||||
- 发布前生成数据库、运行代码和配置的成套恢复点;涉及Redis队列或对象存储的变更,还须包含相应一致性恢复资产。SHA-256、数据库备份目录和压缩包可读性检查通过不等于已完成实际恢复演练。
|
||||
- 版本保留目标是“当前运行版本 + 上一个有效运行版本 + 上一个版本的完整恢复备份”。发布期间允许暂时保留原有效恢复点与新候选恢复点;新恢复点校验、发布验收和版本对应关系确认前,不能先删唯一有效备份。
|
||||
- 失败发布、临时传输包、incoming及更早恢复点不长期保留;先确认不被进程引用、无待诊断事故或未完成回退,并按当次明确授权清理。文档中的保留目标不等于已安装自动清理任务,也不授权定时删除业务操作记录。
|
||||
- 日志和监控数据需要轮转、压缩及容量上限。应用日志保留期不得替代数据库中操作日志的业务保留规则,短信、账务和审计数据不得因磁盘告警直接删除。
|
||||
- 系统盘与数据盘分别监控使用率、可用字节、inode、读写异常和增长速度。规划告警分级为70%预警、80%严重、90%紧急;属于**待配置并验证的运维目标**,本次文档更新不表示告警已上线。
|
||||
- 发布或迁移前按实际数据量核算源/目标临时副本、恢复备份、数据库WAL与Redis持久化重写所需空间;余量不足则停止该次操作,不以删除唯一恢复点腾空间。
|
||||
- 数据和备份同在这块100GiB盘后会共用容量及故障风险。同机备份不等于异机灾备,异机或对象存储副本须另行实施并验证恢复能力;当前不声称已经配置。
|
||||
|
||||
### 第二阶段与后续发布验收
|
||||
|
||||
1. 收到明确指令后,重新核对实际磁盘、服务配置、运行用户、数据量及业务流量;为每个服务记录源路径、目标路径、复制方式、切换条件和回退点。
|
||||
2. 先建立可验证的一致性恢复资产。不得把普通在线目录复制视为PostgreSQL或Redis的一致备份;停写窗口或复制同步方式另定。
|
||||
3. 短信切换前确认入口接收策略、在途提交、供应商回执、持久化Inbox/Outbox和Redis Streams;不得清队列、手工ACK/XDEL或重投真实短信来缩短迁移窗口。
|
||||
4. 切换后验证实际文件落盘位置、挂载依赖、用户权限、数据库和对象读写、队列积压、供应商连接及API健康;真实短信测试需单独授权。所有检查通过前保留源数据副本,不能只凭HTTP 200删除它。
|
||||
5. 若新位置已接受业务写入,回退必须包含新增数据的一致性处理,不能直接切回已经落后的旧目录。
|
||||
6. 同步部署脚本、systemd配置及安装器,防止下次发布把数据目录、日志路径或挂载依赖恢复成旧默认值。当前仓库部署脚本仍向 `$APP_DIR/logs` 输出日志,不能把本文目标路径当作已经实现的脚本行为。
|
||||
7. 完成状态、配置证据和未验证项写入阶段记录及 `testing-progress.md`;本节维护长期规范,不将一次实施记录当成永久实时状态。
|
||||
|
||||
## 首次部署
|
||||
|
||||
1. 本机提交并推送 `main`。
|
||||
@@ -166,8 +227,15 @@ redis-cli XINFO GROUPS gateway.submit.results
|
||||
|
||||
1. 数据库备份:
|
||||
|
||||
预生产 `8.160.169.106` 已于 2026-08-31 完成数据盘第一阶段:`/opt/cmpp-platform-backups` 指向 `/data/cmpp-platform-backups`。后续备份先执行存储检查,再写入该固定入口;不得重新写入随运行目录切换的 `/opt/cmpp-platform/backups`。其他环境需先完成相应存储配置,不可直接套用预生产的磁盘 UUID。配置、验证及第二阶段边界见 [数据盘第一阶段记录](preprod-data-disk-stage1-20260831.md)。
|
||||
|
||||
```bash
|
||||
pg_dump "$(grep '^DATABASE_URL=' /etc/cmpp-platform/cmpp-platform.env | cut -d= -f2-)" > /opt/cmpp-platform/backups/cmpp-$(date +%F-%H%M%S).sql
|
||||
set -e
|
||||
/usr/local/sbin/cmpp-backup-storage-check
|
||||
set -a
|
||||
. /etc/cmpp-platform/cmpp-platform.env
|
||||
set +a
|
||||
pg_dump "${DATABASE_URL%%\?*}" > /opt/cmpp-platform-backups/cmpp-$(date +%F-%H%M%S).sql
|
||||
```
|
||||
|
||||
2. 回滚代码:
|
||||
|
||||
Reference in New Issue
Block a user