Files
hi-server/ops/hifast-upload-chain-runbook-zh.md
T
2026-05-27 20:04:14 -07:00

127 lines
3.3 KiB
Markdown
Raw 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.
# HiFast 上传链路运维 Runbook
## 适用范围
本文档用于测试环境 `https://tapi.hifast.biz/v1/public/file/upload` 上传链路自检和 MinIO sidecar 运维。测试环境的对象存储应自包含在 compose 栈内,不依赖外部 `107.173.50.22:5017`
## 当前测试环境配置
- Compose 文件:`/root/bindbox/docker-compose.cloud.yml`
- 应用配置:`/root/bindbox/configs/ppanel.yaml`
- MinIO 数据目录:`/root/bindbox/data/minio`
- MinIO API`http://127.0.0.1:9000`
- MinIO Console`http://127.0.0.1:9001`,仅绑定本机,需 SSH 隧道访问
- Bucket:与 `ppanel.yaml``S3.Bucket` 保持一致,当前为 `hifastvpn`
`ppanel-server` 使用 host 网络,所以 `S3.Endpoint` 必须写宿主机 loopback
```yaml
S3:
Enable: true
Endpoint: "http://127.0.0.1:9000"
Bucket: "hifastvpn"
UsePathStyle: true
```
## 启停与状态检查
```bash
cd /root/bindbox
docker compose -f docker-compose.cloud.yml up -d minio minio-init
docker restart ppanel-server
docker compose -f docker-compose.cloud.yml ps minio minio-init ppanel-server
curl -fsS http://127.0.0.1:9000/minio/health/live
curl -fsS https://tapi.hifast.biz/v1/common/heartbeat
```
`minio-init` 是一次性 bucket 初始化容器,正常状态是 `exited` 且退出码为 `0`
```bash
docker inspect ppanel-minio-init --format 'status={{.State.Status}} exit={{.State.ExitCode}}'
docker logs --tail 50 ppanel-minio-init
```
## Bucket 重建
如 bucket 被误删或新环境首次初始化失败:
```bash
cd /root/bindbox
docker compose -f docker-compose.cloud.yml up -d minio
docker compose -f docker-compose.cloud.yml run --rm minio-init
```
确认 bucket
```bash
docker logs --tail 50 ppanel-minio-init
find /root/bindbox/data/minio -maxdepth 3 -type d | sort | head
```
## 上传链路自检
基础健康检查:
```bash
curl -i https://tapi.hifast.biz/v1/common/heartbeat
```
完整上传需要有效用户 JWT。复测标准:
- `POST /v1/public/file/upload` 返回 HTTP 200
- 响应业务 `code=200`
- `data.url` 指向 `S3.PublicBaseURL + object_key`
- MinIO 数据目录可看到对应对象
- `ppanel-server` 日志没有 `put object failed``context canceled`
排查命令:
```bash
docker logs --since 10m ppanel-server | grep -Ei 'file/upload|put object|context canceled|s3'
find /root/bindbox/data/minio/hifastvpn -type f | sort | tail
```
## 备份
变更前必须备份:
```bash
cd /root/bindbox
ts=$(date +%Y%m%d%H%M%S)
cp docker-compose.cloud.yml docker-compose.cloud.yml.bak.hif-101.$ts
cp .env .env.bak.hif-101.$ts
cp configs/ppanel.yaml configs/ppanel.yaml.bak.$ts
```
MinIO 数据备份:
```bash
cd /root/bindbox
tar -czf minio-data.$(date +%Y%m%d%H%M%S).tar.gz data/minio
```
## 回滚
恢复外部 S3 配置或回到变更前状态:
```bash
cd /root/bindbox
cp configs/ppanel.yaml.bak.YYYYMMDDHHMMSS configs/ppanel.yaml
cp docker-compose.cloud.yml.bak.hif-101.YYYYMMDDHHMMSS docker-compose.cloud.yml
cp .env.bak.hif-101.YYYYMMDDHHMMSS .env
docker compose -f docker-compose.cloud.yml stop minio
docker restart ppanel-server
```
保留 `/root/bindbox/data/minio` 便于复盘,不要在回滚时删除数据目录。
## 旧 Endpoint 清理
测试栈活动配置不得继续引用旧外部 endpoint:
```bash
cd /root/bindbox
grep -R '107\.173\.50\.22:5017' -n docker-compose.cloud.yml configs/ppanel.yaml .env || true
```