diff --git a/doc/部署运维文档.md b/doc/部署运维文档.md index 05a888a..629ed93 100644 --- a/doc/部署运维文档.md +++ b/doc/部署运维文档.md @@ -1,7 +1,7 @@ # 资金服务平台部署运维文档 -> 版本: v1.0 -> 更新日期: 2026-02-13 +> 版本: v2.0 +> 更新日期: 2026-02-20 > 作者: zhangjf --- @@ -24,12 +24,12 @@ #### 1.2.1 安装 JDK 21 ```bash -# 下载并解压 JDK 21 -wget https://download.java.net/openjdk/jdk21/ri/openjdk-21+35_linux-x64_bin.tar.gz -tar -xzf openjdk-21+35_linux-x64_bin.tar.gz -C /opt/ +# Ubuntu/Debian +sudo apt update +sudo apt install openjdk-21-jdk # 配置环境变量 -echo 'export JAVA_HOME=/opt/jdk-21' >> ~/.bashrc +echo 'export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64' >> ~/.bashrc echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc source ~/.bashrc @@ -157,16 +157,177 @@ npm install npm run dev # 4. 访问系统 -# 管理后台:http://localhost:5173 -# 网关地址:http://localhost:8080 +# 管理后台:http://localhost:3000 +# 网关地址:http://localhost:8000 # Nacos 控制台:http://localhost:8048/nacos +# Grafana 监控:http://localhost:3000 (Docker环境) 或 http://localhost:3001 (本地开发) +# Prometheus:http://localhost:9090 ``` --- -## 二、测试环境部署 +## 二、Docker Compose 部署 -### 2.1 服务器配置 +### 2.1 部署架构 + +项目支持 **Docker Compose 一键部署**,包含以下服务组件: + +``` +┌─────────────────────────────────────────────────────────────────────────────┐ +│ Docker Compose 部署架构 │ +├─────────────────────────────────────────────────────────────────────────────┤ +│ │ +│ ┌──────────────┐ │ +│ │ 前端服务 │ │ +│ │ fund-admin │ ← 管理后台 (http://localhost:80) │ +│ │ fund-mobile │ ← 移动端H5 (http://localhost:81) │ +│ └──────┬───────┘ │ +│ │ │ +│ ┌──────┴───────┐ │ +│ │ Gateway │ ← API网关 (http://localhost:8000) │ +│ │ :8000 │ │ +│ └──────┬───────┘ │ +│ │ │ +│ ┌──────┴──────────────────────────────────────────┐ │ +│ │ │ │ +│ ▼ ▼ ▼ ▼ │ │ +│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ +│ │fund-sys │ │fund-cust│ │fund-proj│ │fund-req │ │ ← 业务微服务集群 │ +│ │ :8100 │ │ :8200 │ │ :8300 │ │ :8400 │ │ │ +│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │ +│ │ │ +│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ +│ │fund-exp │ │fund-rcpt│ │fund-rpt │ │ │ +│ │ :8500 │ │ :8600 │ │ :8700 │ │ │ +│ └─────────┘ └─────────┘ └─────────┘ │ │ +│ │ │ +│ ┌──────────────────────┬─────────────────────┐ │ │ +│ │ │ │ │ │ +│ ▼ ▼ ▼ │ │ +│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ +│ │ MySQL │ │ Redis │ │ Nacos │ ← 基础设施 │ +│ │ :3306 │ │ :6379 │ │ :8848 │ │ +│ └─────────┘ └─────────┘ └─────────┘ │ +│ │ +│ ┌─────────────────────────────────────────────────────────────────────┐ │ +│ │ 监控体系 │ │ +│ │ ┌─────────────┐ ┌─────────────┐ │ │ +│ │ │ Prometheus │ │ Grafana │ │ │ +│ │ │ :9090 │──────────────│ :3000 │ │ │ +│ │ └─────────────┘ └─────────────┘ │ │ +│ └─────────────────────────────────────────────────────────────────────┘ │ +│ │ +└─────────────────────────────────────────────────────────────────────────────┘ +``` + +### 2.2 服务清单 + +| 服务 | 端口 | 说明 | +|------|------|------| +| fund-admin | 80 | 管理后台前端 | +| fund-mobile | 81 | 移动端H5 | +| gateway | 8000 | API网关 | +| fund-sys | 8100 | 系统管理服务 | +| fund-sys-vip001 | 8101 | 系统服务VIP专属实例 | +| fund-cust | 8200 | 客户管理服务 | +| fund-proj | 8300 | 项目管理服务 | +| fund-req | 8400 | 需求工单服务 | +| fund-exp | 8500 | 支出管理服务 | +| fund-receipt | 8600 | 收款管理服务 | +| fund-report | 8700 | 报表服务 | +| fund-file | 8800 | 文件服务 | +| mysql | 3306 | MySQL数据库 | +| redis | 6379 | Redis缓存 | +| nacos | 8848 | Nacos服务注册中心 | +| prometheus | 9090 | Prometheus监控 | +| grafana | 3000 | Grafana可视化 | + +### 2.3 快速部署 + +```bash +# 1. 克隆项目 +git clone +cd fundplatform + +# 2. 初始化环境 +./deploy.sh init + +# 3. 构建镜像 +./deploy.sh build + +# 4. 启动所有服务 +./deploy.sh start + +# 5. 查看服务状态 +./deploy.sh status + +# 6. 查看日志 +./deploy.sh logs --service fund-sys +``` + +### 2.4 部署脚本命令 + +| 命令 | 说明 | +|------|------| +| `./deploy.sh start` | 启动所有服务 | +| `./deploy.sh stop` | 停止所有服务 | +| `./deploy.sh restart` | 重启所有服务 | +| `./deploy.sh build` | 构建所有镜像 | +| `./deploy.sh rebuild` | 重新构建(不使用缓存) | +| `./deploy.sh logs` | 查看服务日志 | +| `./deploy.sh status` | 查看服务状态 | +| `./deploy.sh clean` | 清理未使用的镜像和容器 | +| `./deploy.sh init` | 初始化环境(首次部署) | + +### 2.5 多租户混合负载模式 + +项目支持 **多租户混合负载模式**,可实现VIP专属实例与普通租户共享实例并存: + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ 多租户混合负载模式 │ +├─────────────────────────────────────────────────────────────────┤ +│ │ +│ 请求 ──► Gateway ──► TenantGatewayFilter (提取租户ID) │ +│ │ │ +│ ┌───────────────┼───────────────┐ │ +│ ▼ ▼ ▼ │ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ +│ │ 共享实例 │ │ VIP_004专属 │ │ VIP_005专属 │ │ +│ │ (多租户共享) │ │ (单租户独占) │ │ (单租户独占) │ │ +│ │ fund-sys │ │ fund-sys- │ │ fund-sys- │ │ +│ │ :8100 │ │ vip001:8101 │ │ vip002:8102 │ │ +│ │ │ │ │ │ │ │ +│ │ TENANT_ID: │ │ TENANT_ID: │ │ TENANT_ID: │ │ +│ │ VIP_001, │ │ VIP_004 │ │ VIP_005 │ │ +│ │ VIP_002, │ │ │ │ │ │ +│ │ VIP_003 │ │ │ │ │ │ +│ └──────────────┘ └──────────────┘ └──────────────┘ │ +│ │ +└─────────────────────────────────────────────────────────────────┘ +``` + +**配置方式**: + +在 `docker-compose.yml` 中通过环境变量 `TENANT_ID` 指定实例服务的租户: + +```yaml +# 共享实例 - 服务多个租户 +fund-sys: + environment: + TENANT_ID: "VIP_001,VIP_002,VIP_003" # 逗号分隔,服务多个租户 + +# VIP专属实例 - 单租户独占 +fund-sys-vip001: + environment: + TENANT_ID: "VIP_004" # 单租户专属实例 +``` + +--- + +## 三、测试环境部署 + +### 3.1 服务器配置 | 组件 | 配置 | 数量 | |------|------|------| @@ -174,7 +335,7 @@ npm run dev | 数据库服务器 | 4核8G | 1台 | | 缓存服务器 | 2核4G | 1台 | -### 2.2 部署架构 +### 3.2 部署架构 ``` ┌─────────────────────────────────────────────────────────────┐ @@ -212,9 +373,9 @@ npm run dev └─────────────────────────────────────────────────────────────┘ ``` -### 2.3 部署步骤 +### 3.3 部署步骤 -#### 2.3.1 部署 Nacos +#### 3.3.1 部署 Nacos ```bash # 在服务器上安装 Nacos @@ -237,7 +398,7 @@ cd /opt/nacos/bin sh startup.sh ``` -#### 2.3.2 部署 MySQL +#### 3.3.2 部署 MySQL ```bash # 创建数据库和用户 @@ -253,7 +414,7 @@ mysql -u fund_user -p'Fund@123456' fund_platform < fund_platform_schema.sql mysql -u fund_user -p'Fund@123456' fund_platform < fund_platform_init.sql ``` -#### 2.3.3 部署 Redis +#### 3.3.3 部署 Redis ```bash # 配置 Redis @@ -270,7 +431,7 @@ EOF sudo systemctl restart redis ``` -#### 2.3.4 部署应用服务 +#### 3.3.4 部署应用服务 ```bash # 1. 打包应用 @@ -302,7 +463,7 @@ chmod +x /opt/fundplatform/start.sh ./start.sh sys fund-sys-1.0.0.jar ``` -#### 2.3.5 部署 Nginx +#### 3.3.5 部署 Nginx ```bash # 安装 Nginx @@ -342,9 +503,9 @@ sudo systemctl restart nginx --- -## 三、生产环境部署 +## 四、生产环境部署 -### 3.1 服务器配置 +### 4.1 服务器配置 | 组件 | 配置 | 数量 | 说明 | |------|------|------|------| @@ -354,7 +515,7 @@ sudo systemctl restart nginx | Nacos 服务器 | 4核8G | 3台 | Nacos 集群 | | Nginx 服务器 | 4核8G | 2台 | 负载均衡 | -### 3.2 部署架构 +### 4.2 部署架构 ``` ┌─────────────────────────────────────────────────────────────────────────────┐ @@ -398,9 +559,9 @@ sudo systemctl restart nginx └─────────────────────────────────────────────────────────────────────────────┘ ``` -### 3.3 高可用配置 +### 4.3 高可用配置 -#### 3.3.1 MySQL 主从配置 +#### 4.3.1 MySQL 主从配置 ```bash # 主库配置 @@ -429,7 +590,7 @@ CHANGE MASTER TO START SLAVE; ``` -#### 3.3.2 Redis 集群配置 +#### 4.3.2 Redis 集群配置 ```bash # 创建 6 个节点(3主3从) @@ -446,7 +607,7 @@ redis-cli --cluster create \ --cluster-replicas 1 ``` -#### 3.3.3 Nacos 集群配置 +#### 4.3.3 Nacos 集群配置 ```bash # 配置 cluster.conf @@ -467,7 +628,7 @@ db.password.0=nacos_password sh startup.sh ``` -#### 3.3.4 Nginx + Keepalived +#### 4.3.4 Nginx + Keepalived ```bash # 安装 Keepalived @@ -524,14 +685,17 @@ chmod +x /etc/keepalived/check_nginx.sh --- -## 四、运维手册 +## 五、运维手册 -### 4.1 监控体系 +### 5.1 监控体系 -#### 4.1.1 应用监控(Prometheus + Grafana) +#### 5.1.1 应用监控(Prometheus + Grafana) + +项目已集成 Prometheus + Grafana 监控体系,通过 Docker Compose 自动部署。 + +**Prometheus 配置** (`docker/prometheus/prometheus.yml`): ```yaml -# prometheus.yml global: scrape_interval: 15s @@ -539,15 +703,24 @@ scrape_configs: - job_name: 'fund-gateway' metrics_path: '/actuator/prometheus' static_configs: - - targets: ['app-server-1:8080', 'app-server-2:8080', 'app-server-3:8080'] + - targets: ['gateway:8000'] - job_name: 'fund-sys' metrics_path: '/actuator/prometheus' static_configs: - - targets: ['app-server-1:8081', 'app-server-2:8081', 'app-server-3:8081'] + - targets: ['fund-sys:8100', 'fund-sys-vip001:8101'] + + - job_name: 'fund-cust' + metrics_path: '/actuator/prometheus' + static_configs: + - targets: ['fund-cust:8200'] ``` -#### 4.1.2 关键监控指标 +**访问地址**: +- Prometheus: http://localhost:9090 +- Grafana: http://localhost:3000 (默认账号: admin / admin123) + +#### 5.1.2 关键监控指标 | 指标 | 告警阈值 | 说明 | |------|----------|------| @@ -559,9 +732,11 @@ scrape_configs: | MySQL 连接数 | > 80% | 数据库连接数使用率 | | Redis 内存使用率 | > 80% | Redis 内存使用百分比 | -### 4.2 日志管理 +### 5.2 日志管理 -#### 4.2.1 日志配置 +#### 5.2.1 日志配置 + +项目采用 Logback 作为日志框架,支持 **TraceId + SpanId 链路追踪**: ```xml @@ -569,20 +744,32 @@ scrape_configs: - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%X{tid}] [%X{uid}] [%X{uname}] %-5level %logger{36} - %msg%n + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId:-}][%X{spanId:-}] %-5level %logger{50} - %msg%n - /var/log/fundplatform/app.log + ./logs/${APP_NAME}/info.log - /var/log/fundplatform/app.%d{yyyy-MM-dd}.%i.log + ./logs/${APP_NAME}/info-%d{yyyy-MM-dd}.%i.log 30 100MB - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] %-5level %logger{36} - %msg%n + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId:-}][%X{spanId:-}] %-5level %logger{50} - %msg%n + + + + + + ./logs/${APP_NAME}/aop.log + + ./logs/${APP_NAME}/aop-%d{yyyy-MM-dd}.%i.log + 30 + + + %msg%n @@ -593,7 +780,21 @@ scrape_configs: ``` -#### 4.2.2 ELK 日志收集 +**日志文件结构**: +``` +logs/ +├── fund-gateway/ +│ ├── info.log # 主日志 +│ ├── error.log # 错误日志 +│ └── aop.log # API请求日志 +├── fund-sys/ +│ ├── info.log +│ ├── error.log +│ └── aop.log +└── ... +``` + +#### 5.2.2 ELK 日志收集 ```yaml # filebeat.yml @@ -613,9 +814,9 @@ output.elasticsearch: index: "fundplatform-%{+yyyy.MM.dd}" ``` -### 4.3 备份策略 +### 5.3 备份策略 -#### 4.3.1 数据库备份 +#### 5.3.1 数据库备份 ```bash #!/bin/bash @@ -640,7 +841,7 @@ find $BACKUP_DIR -name "${DB_NAME}_*.sql.gz" -mtime +7 -delete aws s3 cp $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz s3://fundplatform-backup/mysql/ ``` -#### 4.3.2 备份计划 +#### 5.3.2 备份计划 | 备份类型 | 频率 | 保留时间 | |----------|------|----------| @@ -648,9 +849,9 @@ aws s3 cp $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz s3://fundplatform-backup/mysql/ | 增量备份 | 每小时 | 7 天 | | 二进制日志 | 实时 | 7 天 | -### 4.4 故障处理 +### 5.4 故障处理 -#### 4.4.1 常见故障及处理 +#### 5.4.1 常见故障及处理 | 故障现象 | 可能原因 | 处理方案 | |----------|----------|----------| @@ -660,7 +861,7 @@ aws s3 cp $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz s3://fundplatform-backup/mysql/ | 接口超时 | 下游服务慢 | 检查依赖服务,增加熔断 | | Redis 连接失败 | 连接数超限 | 增加连接池,检查连接泄露 | -#### 4.4.2 应急处理流程 +#### 5.4.2 应急处理流程 ``` 1. 故障发现 @@ -679,9 +880,9 @@ aws s3 cp $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz s3://fundplatform-backup/mysql/ 6. 故障复盘 ``` -### 4.5 性能优化 +### 5.5 性能优化 -#### 4.5.1 JVM 调优 +#### 5.5.1 JVM 调优 ```bash # 生产环境 JVM 参数 @@ -696,7 +897,7 @@ java -server \ -jar app.jar ``` -#### 4.5.2 MySQL 调优 +#### 5.5.2 MySQL 调优 ```ini # my.cnf @@ -723,7 +924,7 @@ slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2 ``` -#### 4.5.3 Redis 调优 +#### 5.5.3 Redis 调优 ```bash # redis.conf @@ -735,9 +936,9 @@ timeout 0 --- -## 五、附录 +## 六、附录 -### 5.1 常用命令 +### 6.1 常用命令 ```bash # 查看服务状态 @@ -746,37 +947,99 @@ systemctl status redis systemctl status nginx # 查看日志 -tail -f /var/log/fundplatform/app.log -tail -f /var/log/nginx/access.log +tail -f logs/fund-gateway/info.log +tail -f logs/fund-sys/aop.log # 查看进程 ps -ef | grep java -netstat -tlnp | grep 8080 +netstat -tlnp | grep 8000 # 数据库操作 -mysql -u root -p -redis-cli -a password +mysql -u root -p'zjf@123456' +redis-cli -a 'zjf@123456' # Nacos 管理 curl http://localhost:8848/nacos/v1/ns/instance/list?serviceName=fund-sys + +# Docker 操作 +docker ps +docker logs fund-gateway +docker-compose restart fund-sys ``` -### 5.2 端口清单 +### 6.2 端口清单 -| 服务 | 端口 | 说明 | -|------|------|------| -| Nginx | 80/443 | Web 服务 | -| Gateway | 8080 | API 网关 | -| fund-sys | 8081 | 系统服务 | -| fund-cust | 8082 | 客户中心 | -| fund-proj | 8083 | 项目中心 | -| fund-req | 8084 | 需求中心 | -| fund-exp | 8085 | 支出中心 | -| fund-receipt | 8086 | 收款中心 | -| MySQL | 3306 | 数据库 | -| Redis | 6379 | 缓存 | -| Nacos | 8848 | 服务注册 | -| Nacos 控制台 | 8048 | 配置中心 | +| 服务 | 本地开发端口 | Docker端口 | 说明 | +|------|-------------|------------|------| +| fund-admin | 3000 | 80 | 管理后台前端 | +| fund-mobile | 5174 | 81 | 移动端H5 | +| Gateway | 8000 | 8000 | API网关 | +| fund-sys | 8100 | 8100 | 系统管理服务 | +| fund-sys-vip001 | - | 8101 | 系统服务VIP实例 | +| fund-cust | 8200 | 8200 | 客户管理服务 | +| fund-proj | 8300 | 8300 | 项目管理服务 | +| fund-req | 8400 | 8400 | 需求工单服务 | +| fund-exp | 8500 | 8500 | 支出管理服务 | +| fund-receipt | 8600 | 8600 | 收款管理服务 | +| fund-report | 8700 | 8700 | 报表服务 | +| fund-file | 8800 | 8800 | 文件服务 | +| MySQL | 3306 | 3306 | 数据库 | +| Redis | 6379 | 6379 | 缓存 | +| Nacos API | 8848 | 8848 | 服务注册 | +| Nacos 控制台 | 8048 | - | 配置中心 | +| Prometheus | 9090 | 9090 | 监控 | +| Grafana | 3001 | 3000 | 可视化 | + +### 6.3 环境变量配置 + +项目使用 `.env` 文件管理环境变量: + +```bash +# ============================================ +# 资金服务平台环境配置 +# ============================================ + +# MySQL 配置 +MYSQL_HOST=localhost +MYSQL_PORT=3306 +MYSQL_USERNAME=root +MYSQL_PASSWORD=zjf@123456 +MYSQL_AUTH_PLUGIN=caching_sha2_password + +# Redis 配置 +REDIS_HOST=localhost +REDIS_PORT=6379 +REDIS_PASSWORD=zjf@123456 + +# Nacos 配置 +NACOS_HOST=localhost +NACOS_PORT=8848 +NACOS_USERNAME=nacos +NACOS_PASSWORD=nacos +NACOS_CONSOLE_PORT=8048 + +# Grafana 配置 +GRAFANA_PASSWORD=admin123 +``` + +### 6.4 访问地址汇总 + +| 服务 | 本地开发 | Docker部署 | +|------|----------|------------| +| 管理后台 | http://localhost:3000 | http://localhost:80 | +| 移动端H5 | http://localhost:5174 | http://localhost:81 | +| API网关 | http://localhost:8000 | http://localhost:8000 | +| Nacos控制台 | http://localhost:8048/nacos | http://localhost:8848/nacos | +| Prometheus | http://localhost:9090 | http://localhost:9090 | +| Grafana | http://localhost:3001 | http://localhost:3000 | + +### 6.5 默认账号 + +| 系统 | 用户名 | 密码 | +|------|--------|------| +| Nacos | nacos | nacos | +| Grafana | admin | admin123 | +| 管理后台 | admin | 123456 | ---