Files
hzdyjs/docs/部署文档/杭州第一技师部署文档/多实例部署说明.md
T
2026-09-02 13:23:38 +08:00

318 lines
7.2 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.
# 🚀 RuoYi-Admin 多实例部署说明
## 📋 概述
本文档说明如何在生产环境中部署多个 `ruoyi-admin.jar` 实例到不同端口,实现负载均衡和高可用。
## 🏗️ 部署架构
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 前端应用 │ │ Nginx │ │ 后端实例 │
│ │ │ 负载均衡器 │ │ │
│ http://80 │───▶│ http://80 │───▶│ 9900, 9901 │
│ │ │ │ │ 9902, 9903 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
## 📁 文件结构
```
backend/
├── ruoyi-admin.jar # 编译后的JAR包
├── application-prod-9900.yml # 9900端口配置文件
├── application-prod-9901.yml # 9901端口配置文件
├── application-prod-9902.yml # 9902端口配置文件
├── application-prod-9903.yml # 9903端口配置文件
├── start-multi-instance.sh # Linux启动脚本
├── start-multi-instance.bat # Windows启动脚本
├── docker-compose-multi.yml # Docker部署配置
├── nginx.conf # Nginx负载均衡配置
└── logs/ # 日志目录
├── ruoyi-admin-9900.log
├── ruoyi-admin-9901.log
├── ruoyi-admin-9902.log
└── ruoyi-admin-9903.log
```
## 🔧 部署步骤
### 1. 编译项目
```bash
# 进入backend目录
cd backend
# 编译生产环境JAR包(推荐命令)
# -Pprod:启用生产配置
# -Dmaven.compiler.parameters=true:强制保留方法参数名(与父 POM 双保险)
mvn clean package -Pprod -Dmaven.compiler.parameters=true
# 等价简写(父 POM 已默认开启 maven.compiler.parameters=true,也可直接用):
# mvn clean package -Pprod
mvn clean package -Pprod -Dmaven.test.skip=true
# 检查生成的JAR文件
ls -la ruoyi-admin/target/ruoyi-admin.jar
```
> **说明**:若编译未保留参数名,生产环境可能出现
> `Name for argument of type [java.lang.Long] not specified...`。
> 父 POM 已配置 `<maven.compiler.parameters>true</maven.compiler.parameters>` 与 `-parameters`,
> 推荐命令再显式传一次 `-Dmaven.compiler.parameters=true`,避免被外部环境覆盖。
### 2. 准备部署文件
```bash
# 复制JAR文件到部署目录
cp ruoyi-admin/target/ruoyi-admin.jar ./
# 创建日志目录
mkdir -p logs
# 设置脚本执行权限 (Linux)
chmod +x start-multi-instance.sh
```
### 3. 启动多实例
#### Linux环境
```bash
# 启动所有实例
./start-multi-instance.sh start all
# 启动单个实例
./start-multi-instance.sh start 9900
./start-multi-instance.sh start 9901
./start-multi-instance.sh start 9902
./start-multi-instance.sh start 9903
# 查看实例状态
./start-multi-instance.sh status all
# 停止实例
./start-multi-instance.sh stop all
# 重启实例
./start-multi-instance.sh restart all
```
#### Windows环境
```cmd
# 启动所有实例
start-multi-instance.bat start all
# 启动单个实例
start-multi-instance.bat start 9900
start-multi-instance.bat start 9901
start-multi-instance.bat start 9902
start-multi-instance.bat start 9903
# 查看实例状态
start-multi-instance.bat status all
# 停止实例
start-multi-instance.bat stop all
# 重启实例
start-multi-instance.bat restart all
```
### 4. Docker部署 (可选)
```bash
# 启动所有服务
docker-compose -f docker-compose-multi.yml up -d
# 查看服务状态
docker-compose -f docker-compose-multi.yml ps
# 查看日志
docker-compose -f docker-compose-multi.yml logs -f
# 停止服务
docker-compose -f docker-compose-multi.yml down
```
## 🌐 访问地址
### 直接访问各实例
- **实例1**: http://localhost:9900
- **实例2**: http://localhost:9901
- **实例3**: http://localhost:9902
- **实例4**: http://localhost:9903
### 通过负载均衡器访问
- **主入口**: http://localhost (Nginx负载均衡)
- **监控页面**: http://localhost:8080/status
## 📊 监控和管理
### 1. 实例状态监控
```bash
# 查看所有实例状态
./start-multi-instance.sh status all
# 查看单个实例状态
./start-multi-instance.sh status 9900
```
### 2. 日志监控
```bash
# 查看实时日志
tail -f logs/ruoyi-admin-9900.log
tail -f logs/ruoyi-admin-9901.log
tail -f logs/ruoyi-admin-9902.log
tail -f logs/ruoyi-admin-9903.log
# 查看错误日志
grep "ERROR" logs/ruoyi-admin-*.log
```
### 3. 进程监控
```bash
# 查看Java进程
ps aux | grep java
# 查看端口占用
netstat -tlnp | grep :99
```
## ⚠️ 注意事项
### 1. 端口冲突
- 确保9900-9903端口未被其他服务占用
- 检查防火墙设置,确保端口可访问
### 2. 内存配置
- 每个实例默认配置:最小512MB,最大1024MB
- 根据服务器配置调整 `JAVA_OPTS` 参数
### 3. 数据库连接
- 所有实例共享同一个数据库
- 确保数据库连接池配置合理,避免连接数过多
### 4. 文件上传
- 临时文件目录:`/ruoyi/server/temp`
- 确保目录存在且有写权限
## 🔄 故障排查
### 1. 实例启动失败
```bash
# 检查JAR文件是否存在
ls -la ruoyi-admin.jar
# 检查端口是否被占用
netstat -tlnp | grep :99
# 查看启动日志
tail -f logs/ruoyi-admin-9900.log
```
### 2. 实例无法访问
```bash
# 检查防火墙设置
firewall-cmd --list-ports
# 检查SELinux状态 (CentOS/RHEL)
getenforce
# 测试端口连通性
telnet localhost 9900
```
### 3. 负载均衡不工作
```bash
# 检查Nginx状态
docker-compose -f docker-compose-multi.yml ps nginx
# 查看Nginx日志
docker-compose -f docker-compose-multi.yml logs nginx
# 测试后端服务
curl http://localhost:9900/health
```
## 📈 性能优化建议
### 1. JVM调优
```bash
# 根据服务器内存调整JVM参数
JAVA_OPTS="-Xms2g -Xmx4g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
```
### 2. 数据库连接池优化
```yaml
# 在application-prod-*.yml中调整
spring:
datasource:
hikari:
maxPoolSize: 100 # 根据实例数调整
minIdle: 20
connectionTimeout: 30000
```
### 3. 缓存配置
```yaml
# Redis连接池优化
redisson:
threads: 32
nettyThreads: 64
singleServerConfig:
connectionPoolSize: 128
```
## 🚀 扩展部署
### 1. 添加更多实例
- 复制配置文件模板
- 修改端口号和应用名称
- 更新启动脚本和Docker配置
### 2. 集群部署
- 使用Redis集群
- 配置数据库主从复制
- 实现会话共享
### 3. 容器化部署
- 使用Kubernetes管理
- 配置自动扩缩容
- 实现滚动更新
## 📞 技术支持
如遇到部署问题,请检查:
1. 系统日志和应用日志
2. 端口占用情况
3. 防火墙和网络配置
4. 数据库连接状态
5. 内存和磁盘空间
---
**📝 文档版本**: v1.0
**🔄 最后更新**: 2025-01-03
**👨‍💻 维护人员**: 开发团队