leiyun 1 неделю назад
Родитель
Сommit
ec0fa15179
1 измененных файлов: 102 добавлений и 0 удалений
  1. +102
    -0
      isolated/UAT-RUNBOOK.md

+ 102
- 0
isolated/UAT-RUNBOOK.md Просмотреть файл

@@ -0,0 +1,102 @@
# UAT 环境运维速查

> 部署目录:`/home/admin-x99/emp/emp-uat/runtime`
> Compose 项目名:`emp-uat`,网络 `emp-uat_emp-net`,数据卷前缀 `emp-uat_`,与 test 完全隔离。

## 1. 服务端口

### 对外暴露(开放外网)

| 服务 | 容器服务名 | 宿主机端口 | 容器内端口 | 说明 |
|------|-----------|-----------|-----------|------|
| 前端(Nginx) | emp-admin | 4755 | 80 | 管理后台入口,代理 `/api/`、`/socket.io/`,并转发模拟器 |
| MySQL | mysql | 4757 | 3306 | 业务库 emp |
| TDengine UI | tdengine | 4759 | 6060 | 时序库管理界面 |

- 管理后台:`http://ip-cld.cn:4755/`
- 模拟器:`http://ip-cld.cn:4755/simulator/`(经 admin 内部 Nginx 转发)

### 仅 Docker 内网访问(不开放外网)

| 服务 | 内网地址 | 说明 |
|------|---------|------|
| emp-ws | emp-ws:3000 | Socket.IO 推送 + 模拟器,经 admin Nginx 转发,4756 不对外 |
| emp-gateway | emp-gateway:9000 | API 网关(JWT 鉴权入口) |
| emp-auth | emp-auth:9001 | 认证授权 |
| emp-monitor | emp-monitor:9002 | 业务接口 |
| emp-data | emp-data:9003 | 数据消费/清洗/时序写入 |
| emp-pdf | emp-pdf:3100 | PDF 导出 |
| nacos | nacos:8848 | 注册/配置中心 |
| redis | redis:6379 | 缓存(DB 0) |
| tdengine REST | tdengine:6041 | 时序库 REST |

## 2. 运维速查命令

快捷函数(或使用 `profiles/dc.sh`):

```bash
cd /home/admin-x99/emp/emp-uat/runtime
dc() { docker compose --env-file .env -f docker-compose.yml -p emp-uat "$@"; }
```

| 操作 | 命令 |
|------|------|
| 查看所有容器状态 | `dc ps` |
| 跟踪某服务日志 | `dc logs -f emp-monitor` |
| 查看最近 200 行日志 | `dc logs --tail=200 emp-monitor` |
| 改 .env 后重建某服务 | `dc up -d emp-monitor` |
| 重启某服务(不重读 .env) | `dc restart emp-ws` |
| 启动全部 | `dc up -d` |
| 停止全部(保留数据卷) | `dc down` |
| 进 MySQL | `dc exec mysql sh -c 'mysql -uroot -p"$MYSQL_ROOT_PASSWORD" emp'` |
| 进 Redis | `dc exec redis sh -c 'redis-cli -a "$REDIS_PASSWORD"'` |
| 进 TDengine | `dc exec tdengine taos` |
| 查看资源占用 | `docker stats` |

> 改 `.env` 必须用 `up -d` 重建容器,`restart` 不会重新读取环境变量。

常用排查:

```bash
# 同步相关日志
dc logs -f emp-monitor | grep -E "同步"

# 查看 sync 水位(车辆/设备增量游标)
dc exec redis sh -c 'redis-cli -a "$REDIS_PASSWORD" KEYS "sync:*"'

# 排查单点登录顶号(token 版本号)
dc exec redis sh -c 'redis-cli -a "$REDIS_PASSWORD" GET auth:token-version:<userId>'
```

## 3. 关键信息

### 数据库 / 中间件(compose 内网自建)

- MySQL:库 `emp`,内网 `mysql:3306`,对外 4757
- Redis:`redis:6379`,DB 0
- TDengine:库 `emp`,超级表 `s_vehicle_data`,`tdengine:6041`,UI 对外 4759
- Nacos:`nacos:8848`,开启鉴权(`NACOS_AUTH_ENABLE=true`)

### Kafka(外部,甲方提供)

- Broker:`ip-cld.cn:29362`
- 后端消费 topic:`YuanJing-uat-vehicle-mock-data`(group `emp-uat-data-group`)
- 模拟器推送 topic:`uat-vehicle-real-data`
- 内部 Kafka 镜像默认不启动;本地联调需 `COMPOSE_PROFILES=local-kafka`

### 模拟器登录

- `SIMULATOR_ADMIN_ROLE=ADMIN`:任意含 ADMIN 角色的账号可登录模拟器
- 模拟器与业务后台共用账号体系,**同一账号在两处登录会相互挤下线**;建议模拟器与业务后台使用不同的管理员账号

### 环境隔离

- compose project `emp-uat`,网络 `emp-uat_emp-net`,数据卷前缀 `emp-uat_`,与 test 完全隔离
- 内网服务名(emp-ws / emp-pdf / emp-gateway 等)在各自 project 网络内解析,test / uat 互不串

## 4. 重要提醒

- 现场 `.env` 必须使用真实密码/密钥(MySQL、Redis、JWT、COS、SYNC_TK 等),勿用占位符
- emp-monitor 等配置可能由 Nacos 配置中心下发;改 `.env` 不生效时,需到 Nacos 控制台修改对应 dataId
- 系统重装后 test / uat 均需重新全量部署,并在 TDengine 中重新创建超级表 `s_vehicle_data`
- 清空车辆/设备表重新验证同步时,需同时清 Redis 水位 `sync:vehicle:lastUpdateTime`、`sync:device:lastUpdateTime`,否则从游标处增量拉取不到旧数据

Загрузка…
Отмена
Сохранить