6.4 KiB
6.4 KiB
🚀 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. 编译项目
# 进入backend目录
cd backend
# 编译生产环境JAR包
mvn clean package -Pprod
# 检查生成的JAR文件
ls -la ruoyi-admin/target/ruoyi-admin.jar
2. 准备部署文件
# 复制JAR文件到部署目录
cp ruoyi-admin/target/ruoyi-admin.jar ./
# 创建日志目录
mkdir -p logs
# 设置脚本执行权限 (Linux)
chmod +x start-multi-instance.sh
3. 启动多实例
Linux环境
# 启动所有实例
./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环境
# 启动所有实例
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部署 (可选)
# 启动所有服务
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. 实例状态监控
# 查看所有实例状态
./start-multi-instance.sh status all
# 查看单个实例状态
./start-multi-instance.sh status 9900
2. 日志监控
# 查看实时日志
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. 进程监控
# 查看Java进程
ps aux | grep java
# 查看端口占用
netstat -tlnp | grep :99
⚠️ 注意事项
1. 端口冲突
- 确保9900-9903端口未被其他服务占用
- 检查防火墙设置,确保端口可访问
2. 内存配置
- 每个实例默认配置:最小512MB,最大1024MB
- 根据服务器配置调整
JAVA_OPTS参数
3. 数据库连接
- 所有实例共享同一个数据库
- 确保数据库连接池配置合理,避免连接数过多
4. 文件上传
- 临时文件目录:
/ruoyi/server/temp - 确保目录存在且有写权限
🔄 故障排查
1. 实例启动失败
# 检查JAR文件是否存在
ls -la ruoyi-admin.jar
# 检查端口是否被占用
netstat -tlnp | grep :99
# 查看启动日志
tail -f logs/ruoyi-admin-9900.log
2. 实例无法访问
# 检查防火墙设置
firewall-cmd --list-ports
# 检查SELinux状态 (CentOS/RHEL)
getenforce
# 测试端口连通性
telnet localhost 9900
3. 负载均衡不工作
# 检查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调优
# 根据服务器内存调整JVM参数
JAVA_OPTS="-Xms2g -Xmx4g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
2. 数据库连接池优化
# 在application-prod-*.yml中调整
spring:
datasource:
hikari:
maxPoolSize: 100 # 根据实例数调整
minIdle: 20
connectionTimeout: 30000
3. 缓存配置
# Redis连接池优化
redisson:
threads: 32
nettyThreads: 64
singleServerConfig:
connectionPoolSize: 128
🚀 扩展部署
1. 添加更多实例
- 复制配置文件模板
- 修改端口号和应用名称
- 更新启动脚本和Docker配置
2. 集群部署
- 使用Redis集群
- 配置数据库主从复制
- 实现会话共享
3. 容器化部署
- 使用Kubernetes管理
- 配置自动扩缩容
- 实现滚动更新
📞 技术支持
如遇到部署问题,请检查:
- 系统日志和应用日志
- 端口占用情况
- 防火墙和网络配置
- 数据库连接状态
- 内存和磁盘空间
📝 文档版本: v1.0
🔄 最后更新: 2025-01-03
👨💻 维护人员: 开发团队