RuoYi-Vue高可用部署:集群与负载均衡配置
你是否还在为单节点部署的RuoYi-Vue系统面临宕机风险而担忧?是否想过如何让系统在高并发场景下依然保持稳定运行?本文将通过实战案例,带你一步步实现RuoYi-Vue的集群部署与负载均衡配置,解决服务可用性问题。读完本文,你将掌握环境准备、集群搭建、负载均衡配置、会话共享以及监控告警的完整方案。
一、高可用架构设计
RuoYi-Vue作为基于SpringBoot和Vue的前后端分离权限管理系统,其高可用架构需要考虑多个层面的冗余设计。典型的集群架构包括:多应用节点、负载均衡层、共享数据库和缓存服务。
1.1 架构拓扑图
1.2 核心组件说明
- 负载均衡层:使用Nginx作为反向代理,分发请求到多个应用节点
- 应用集群:部署多个RuoYi-Vue应用实例,避免单点故障
- 会话共享:通过Redis实现分布式会话管理
- 数据库:采用MySQL主从复制,确保数据高可用
二、环境准备
2.1 服务器规划
| 服务器角色 | 数量 | 推荐配置 | 用途 |
|---|---|---|---|
| 负载均衡 | 1 | 2核4G | 部署Nginx |
| 应用服务器 | 2+ | 4核8G | 部署RuoYi-Vue应用 |
| Redis服务器 | 1+ | 2核4G | 会话存储、缓存 |
| 数据库服务器 | 2 | 4核16G | MySQL主从复制 |
2.2 基础软件安装
- JDK安装(所有应用服务器)
# 以CentOS为例
yum install -y java-1.8.0-openjdk-devel
- Redis安装
yum install -y redis
systemctl enable redis
systemctl start redis
- MySQL安装
参考官方文档进行主从复制配置,确保数据同步正常。
三、应用集群部署
3.1 项目打包
从Git仓库克隆代码并打包:
git clone https://gitcode.com/GitHub_Trending/ru/RuoYi-Vue
cd RuoYi-Vue
mvn clean package -Dmaven.test.skip=true
打包完成后,在ruoyi-admin/target/目录下会生成ruoyi-admin.jar文件。
3.2 修改配置文件
修改application.yml配置文件,主要配置Redis和数据库连接:
# 数据源配置
spring:
datasource:
url: jdbc:mysql://主库IP:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: password
# Redis配置
redis:
host: Redis服务器IP
port: 6379
password:
database: 0
3.3 部署应用实例
将打包好的jar文件复制到各个应用服务器,并创建启动脚本:
# 在应用服务器1上执行
mkdir -p /opt/ruoyi
cp ruoyi-admin.jar /opt/ruoyi/
cd /opt/ruoyi
nohup java -jar ruoyi-admin.jar --server.port=8080 &
# 在应用服务器2上执行
nohup java -jar ruoyi-admin.jar --server.port=8080 &
四、负载均衡配置
4.1 Nginx安装
yum install -y nginx
systemctl enable nginx
4.2 配置负载均衡
编辑Nginx配置文件/etc/nginx/nginx.conf:
http {
upstream ruoyi {
server 应用服务器1IP:8080 weight=1;
server 应用服务器2IP:8080 weight=1;
}
server {
listen 80;
server_name your.domain.com;
location / {
proxy_pass http://ruoyi;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
重启Nginx使配置生效:
systemctl restart nginx
五、会话共享配置
5.1 修改Redis配置
确保Redis配置文件redis.conf中以下参数正确:
# 开启AOF持久化
appendonly yes
# 绑定所有网络接口(生产环境建议指定IP)
bind 0.0.0.0
5.2 配置Spring Session
在pom.xml中添加Spring Session依赖:
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
创建Session配置类:
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 86400)
public class RedisSessionConfig {
}
六、监控与维护
6.1 应用健康检查
RuoYi-Vue自带健康检查端点,可通过以下地址访问:
http://应用服务器IP:8080/actuator/health
6.2 Nginx状态监控
配置Nginx状态页面,监控连接状态:
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
6.3 日志收集
建议使用ELK栈收集和分析应用日志,配置logback.xml将日志输出到文件:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/ruoyi/ruoyi.log</file>
<!-- 滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/ruoyi/ruoyi-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
七、部署验证
7.1 访问系统
通过Nginx地址访问RuoYi-Vue系统:
http://your.domain.com
7.2 验证负载均衡
查看Nginx访问日志,确认请求被分发到不同的应用节点:
tail -f /var/log/nginx/access.log
7.3 故障转移测试
手动停止一个应用节点,检查系统是否仍能正常访问:
# 在其中一个应用节点执行
ps -ef | grep ruoyi-admin
kill -9 <进程ID>
八、总结与展望
通过本文的配置,我们实现了RuoYi-Vue系统的高可用部署,主要包括:
- 构建应用集群,避免单点故障
- 配置Nginx负载均衡,分发用户请求
- 使用Redis实现会话共享,确保集群一致性
- 部署监控和日志收集,便于系统维护
未来可以进一步优化:
- 引入Keepalived实现Nginx高可用
- 使用Redis集群替代单点Redis
- 部署CI/CD流水线,实现自动化部署
- 增加监控告警,及时发现和处理问题
希望本文能帮助你构建稳定可靠的RuoYi-Vue系统,如有任何问题,欢迎在项目README.md中查看更多详情或提交issue。
如果觉得本文对你有帮助,别忘了点赞、收藏、关注三连哦!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



